1 /* packet-zbee-zcl-se.c
2 * Dissector routines for the ZigBee ZCL SE clusters like
4 * By Fabio Tarabelloni <fabio.tarabelloni@reloc.it>
5 * Copyright 2013 RELOC s.r.l.
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
18 #include <epan/packet.h>
19 #include <epan/expert.h>
20 #include <epan/to_str.h>
22 #include <epan/unit_strings.h>
24 #include <wsutil/array.h>
25 #include <wsutil/epochs.h>
27 #include "packet-zbee.h"
28 #include "packet-zbee-aps.h"
29 #include "packet-zbee-zcl.h"
30 #include "packet-zbee-security.h"
32 /* ########################################################################## */
33 /* #### common to all SE clusters ########################################### */
34 /* ########################################################################## */
36 #define ZBEE_ZCL_SE_ATTR_REPORT_PENDING 0x00
37 #define ZBEE_ZCL_SE_ATTR_REPORT_COMPLETE 0x01
39 static const value_string zbee_zcl_se_reporting_status_names
[] = {
40 { ZBEE_ZCL_SE_ATTR_REPORT_PENDING
, "Pending" },
41 { ZBEE_ZCL_SE_ATTR_REPORT_COMPLETE
, "Complete" },
45 static void decode_zcl_se_utc_time(char *s
, uint32_t value
);
48 *Dissect a ZigBee Date
50 *@param tvb pointer to buffer containing raw packet.
51 *@param tree pointer to data tree Wireshark uses to display packet.
52 *@param offset pointer to buffer offset
53 *@param subtree_name name for the subtree
54 *@param idx one of the ett_ array elements registered with proto_register_subtree_array()
55 *@param hfindex_yy year field
56 *@param hfindex_mm month field
57 *@param hfindex_md month day field
58 *@param hfindex_wd week day field
60 static void dissect_zcl_date(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
,
61 int idx
, const char* subtree_name
, int hfindex_yy
, int hfindex_mm
, int hfindex_md
,
68 subtree
= proto_tree_add_subtree(tree
, tvb
, *offset
, 4, idx
, NULL
, subtree_name
);
71 yy
= tvb_get_uint8(tvb
, *offset
);
72 proto_tree_add_uint(subtree
, hfindex_yy
, tvb
, *offset
, 1, yy
+ 1900);
76 proto_tree_add_item(subtree
, hfindex_mm
, tvb
, *offset
, 1, ENC_NA
);
80 proto_tree_add_item(subtree
, hfindex_md
, tvb
, *offset
, 1, ENC_NA
);
84 proto_tree_add_item(subtree
, hfindex_wd
, tvb
, *offset
, 1, ENC_NA
);
86 } /*dissect_zcl_date*/
88 /*************************/
89 /* Global Variables */
90 /*************************/
92 /* ########################################################################## */
93 /* #### (0x0025) KEEP-ALIVE CLUSTER ######################################### */
94 /* ########################################################################## */
97 #define zbee_zcl_keep_alive_attr_names_VALUE_STRING_LIST(XXX) \
98 XXX(ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_BASE, 0x0000, "Keep-Alive Base" ) \
99 XXX(ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_JITTER, 0x0001, "Keep-Alive Jitter" ) \
100 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_KEEP_ALIVE, 0xFFFE, "Attribute Reporting Status" )
102 VALUE_STRING_ENUM(zbee_zcl_keep_alive_attr_names
);
103 VALUE_STRING_ARRAY(zbee_zcl_keep_alive_attr_names
);
105 /*************************/
106 /* Function Declarations */
107 /*************************/
108 void proto_register_zbee_zcl_keep_alive(void);
109 void proto_reg_handoff_zbee_zcl_keep_alive(void);
111 /* Attribute Dissector Helpers */
112 static void dissect_zcl_keep_alive_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
114 /*************************/
115 /* Global Variables */
116 /*************************/
118 /* Initialize the protocol and registered fields */
119 static int proto_zbee_zcl_keep_alive
;
121 static int hf_zbee_zcl_keep_alive_attr_id
;
122 static int hf_zbee_zcl_keep_alive_attr_reporting_status
;
123 static int hf_zbee_zcl_keep_alive_base
;
124 static int hf_zbee_zcl_keep_alive_jitter
;
126 /* Initialize the subtree pointers */
127 static int ett_zbee_zcl_keep_alive
;
129 /*************************/
130 /* Function Bodies */
131 /*************************/
134 *This function is called by ZCL foundation dissector in order to decode
136 *@param tree pointer to data tree Wireshark uses to display packet.
137 *@param tvb pointer to buffer containing raw packet.
138 *@param offset pointer to buffer offset
139 *@param attr_id attribute identifier
140 *@param data_type attribute data type
141 *@param client_attr ZCL client
144 dissect_zcl_keep_alive_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
146 /* Dissect attribute data type and data */
148 /* applies to all SE clusters */
149 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_KEEP_ALIVE
:
150 proto_tree_add_item(tree
, hf_zbee_zcl_keep_alive_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
154 case ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_BASE
:
155 proto_tree_add_item(tree
, hf_zbee_zcl_keep_alive_base
, tvb
, *offset
, 1, ENC_NA
);
159 case ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_JITTER
:
160 proto_tree_add_item(tree
, hf_zbee_zcl_keep_alive_jitter
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
164 default: /* Catch all */
165 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
168 } /*dissect_zcl_keep_alive_attr_data*/
172 *ZigBee ZCL Keep-Alive cluster dissector for wireshark.
174 *@param tvb pointer to buffer containing raw packet.
175 *@param pinfo pointer to packet information fields
176 *@param tree pointer to data tree Wireshark uses to display packet.
179 dissect_zbee_zcl_keep_alive(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void* data _U_
)
181 return tvb_captured_length(tvb
);
182 } /*dissect_zbee_zcl_keep_alive*/
185 *This function registers the ZCL Keep-Alive dissector
189 proto_register_zbee_zcl_keep_alive(void)
191 static hf_register_info hf
[] = {
193 { &hf_zbee_zcl_keep_alive_attr_id
,
194 { "Attribute", "zbee_zcl_se.keep_alive.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_keep_alive_attr_names
),
195 0x0, NULL
, HFILL
} },
197 { &hf_zbee_zcl_keep_alive_attr_reporting_status
, /* common to all SE clusters */
198 { "Attribute Reporting Status", "zbee_zcl_se.keep_alive.attr.attr_reporting_status",
199 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
201 { &hf_zbee_zcl_keep_alive_base
,
202 { "Keep-Alive Base", "zbee_zcl_se.keep_alive.attr.base", FT_UINT8
, BASE_DEC
, NULL
,
203 0x00, NULL
, HFILL
} },
205 { &hf_zbee_zcl_keep_alive_jitter
,
206 { "Keep-Alive Jitter", "zbee_zcl_se.keep_alive.attr.jitter", FT_UINT16
, BASE_DEC
, NULL
,
207 0x00, NULL
, HFILL
} },
210 /* ZCL Keep-Alive subtrees */
212 &ett_zbee_zcl_keep_alive
215 /* Register the ZigBee ZCL Keep-Alive cluster protocol name and description */
216 proto_zbee_zcl_keep_alive
= proto_register_protocol("ZigBee ZCL Keep-Alive", "ZCL Keep-Alive", ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE
);
217 proto_register_field_array(proto_zbee_zcl_keep_alive
, hf
, array_length(hf
));
218 proto_register_subtree_array(ett
, array_length(ett
));
220 /* Register the ZigBee ZCL Keep-Alive dissector. */
221 register_dissector(ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE
, dissect_zbee_zcl_keep_alive
, proto_zbee_zcl_keep_alive
);
222 } /*proto_register_zbee_zcl_keep_alive*/
225 *Hands off the ZCL Keep-Alive dissector.
229 proto_reg_handoff_zbee_zcl_keep_alive(void)
231 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE
,
232 proto_zbee_zcl_keep_alive
,
233 ett_zbee_zcl_keep_alive
,
234 ZBEE_ZCL_CID_KEEP_ALIVE
,
236 hf_zbee_zcl_keep_alive_attr_id
,
239 (zbee_zcl_fn_attr_data
)dissect_zcl_keep_alive_attr_data
241 } /*proto_reg_handoff_zbee_zcl_keep_alive*/
243 /* ########################################################################## */
244 /* #### (0x0700) PRICE CLUSTER ############################################## */
245 /* ########################################################################## */
248 #define zbee_zcl_price_attr_server_names_VALUE_STRING_LIST(XXX) \
249 /* Tier Label (Delivered) Set */ \
250 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_PRICE_LABEL, 0x0000, "Tier 1 Price Label" ) \
251 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_PRICE_LABEL, 0x0001, "Tier 2 Price Label" ) \
252 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_PRICE_LABEL, 0x0002, "Tier 3 Price Label" ) \
253 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_PRICE_LABEL, 0x0003, "Tier 4 Price Label" ) \
254 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_PRICE_LABEL, 0x0004, "Tier 5 Price Label" ) \
255 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_PRICE_LABEL, 0x0005, "Tier 6 Price Label" ) \
256 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_PRICE_LABEL, 0x0006, "Tier 7 Price Label" ) \
257 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_PRICE_LABEL, 0x0007, "Tier 8 Price Label" ) \
258 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_PRICE_LABEL, 0x0008, "Tier 9 Price Label" ) \
259 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_PRICE_LABEL, 0x0009, "Tier 10 Price Label" ) \
260 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_PRICE_LABEL, 0x000A, "Tier 11 Price Label" ) \
261 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_PRICE_LABEL, 0x000B, "Tier 12 Price Label" ) \
262 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_PRICE_LABEL, 0x000C, "Tier 13 Price Label" ) \
263 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_PRICE_LABEL, 0x000D, "Tier 14 Price Label" ) \
264 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_PRICE_LABEL, 0x000E, "Tier 15 Price Label" ) \
265 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_16_PRICE_LABEL, 0x000F, "Tier 16 Price Label" ) \
266 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_17_PRICE_LABEL, 0x0010, "Tier 17 Price Label" ) \
267 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_18_PRICE_LABEL, 0x0011, "Tier 18 Price Label" ) \
268 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_19_PRICE_LABEL, 0x0012, "Tier 19 Price Label" ) \
269 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_20_PRICE_LABEL, 0x0013, "Tier 20 Price Label" ) \
270 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_21_PRICE_LABEL, 0x0014, "Tier 21 Price Label" ) \
271 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_22_PRICE_LABEL, 0x0015, "Tier 22 Price Label" ) \
272 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_23_PRICE_LABEL, 0x0016, "Tier 23 Price Label" ) \
273 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_24_PRICE_LABEL, 0x0017, "Tier 24 Price Label" ) \
274 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_25_PRICE_LABEL, 0x0018, "Tier 25 Price Label" ) \
275 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_26_PRICE_LABEL, 0x0019, "Tier 26 Price Label" ) \
276 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_27_PRICE_LABEL, 0x001A, "Tier 27 Price Label" ) \
277 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_28_PRICE_LABEL, 0x001B, "Tier 28 Price Label" ) \
278 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_29_PRICE_LABEL, 0x001C, "Tier 29 Price Label" ) \
279 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_30_PRICE_LABEL, 0x001D, "Tier 30 Price Label" ) \
280 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_31_PRICE_LABEL, 0x001E, "Tier 31 Price Label" ) \
281 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_32_PRICE_LABEL, 0x001F, "Tier 32 Price Label" ) \
282 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_33_PRICE_LABEL, 0x0020, "Tier 33 Price Label" ) \
283 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_34_PRICE_LABEL, 0x0021, "Tier 34 Price Label" ) \
284 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_35_PRICE_LABEL, 0x0022, "Tier 35 Price Label" ) \
285 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_36_PRICE_LABEL, 0x0023, "Tier 36 Price Label" ) \
286 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_37_PRICE_LABEL, 0x0024, "Tier 37 Price Label" ) \
287 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_38_PRICE_LABEL, 0x0025, "Tier 38 Price Label" ) \
288 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_39_PRICE_LABEL, 0x0026, "Tier 39 Price Label" ) \
289 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_40_PRICE_LABEL, 0x0027, "Tier 40 Price Label" ) \
290 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_41_PRICE_LABEL, 0x0028, "Tier 41 Price Label" ) \
291 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_42_PRICE_LABEL, 0x0029, "Tier 42 Price Label" ) \
292 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_43_PRICE_LABEL, 0x002A, "Tier 43 Price Label" ) \
293 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_44_PRICE_LABEL, 0x002B, "Tier 44 Price Label" ) \
294 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_45_PRICE_LABEL, 0x002C, "Tier 45 Price Label" ) \
295 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_46_PRICE_LABEL, 0x002D, "Tier 46 Price Label" ) \
296 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_47_PRICE_LABEL, 0x002E, "Tier 47 Price Label" ) \
297 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_48_PRICE_LABEL, 0x002F, "Tier 48 Price Label" ) \
298 /* Block Threshold (Delivered) Set */ \
299 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_1_THRESHOLD, 0x0100, "Block 1 Threshold" ) \
300 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_2_THRESHOLD, 0x0101, "Block 2 Threshold" ) \
301 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_3_THRESHOLD, 0x0102, "Block 3 Threshold" ) \
302 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_4_THRESHOLD, 0x0103, "Block 4 Threshold" ) \
303 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_5_THRESHOLD, 0x0104, "Block 5 Threshold" ) \
304 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_6_THRESHOLD, 0x0105, "Block 6 Threshold" ) \
305 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_7_THRESHOLD, 0x0106, "Block 7 Threshold" ) \
306 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_8_THRESHOLD, 0x0107, "Block 8 Threshold" ) \
307 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_9_THRESHOLD, 0x0108, "Block 9 Threshold" ) \
308 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_10_THRESHOLD, 0x0109, "Block 10 Threshold" ) \
309 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_11_THRESHOLD, 0x010A, "Block 11 Threshold" ) \
310 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_12_THRESHOLD, 0x010B, "Block 12 Threshold" ) \
311 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_13_THRESHOLD, 0x010C, "Block 13 Threshold" ) \
312 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_14_THRESHOLD, 0x010D, "Block 14 Threshold" ) \
313 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_15_THRESHOLD, 0x010E, "Block 15 Threshold" ) \
314 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_THRESHOLD_COUNT, 0x010F, "Block Threshold Count" ) \
315 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_1_THRESHOLD, 0x0110, "Tier 1 Block 1 Threshold" ) \
316 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_2_THRESHOLD, 0x0111, "Tier 1 Block 2 Threshold" ) \
317 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_3_THRESHOLD, 0x0112, "Tier 1 Block 3 Threshold" ) \
318 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_4_THRESHOLD, 0x0113, "Tier 1 Block 4 Threshold" ) \
319 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_5_THRESHOLD, 0x0114, "Tier 1 Block 5 Threshold" ) \
320 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_6_THRESHOLD, 0x0115, "Tier 1 Block 6 Threshold" ) \
321 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_7_THRESHOLD, 0x0116, "Tier 1 Block 7 Threshold" ) \
322 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_8_THRESHOLD, 0x0117, "Tier 1 Block 8 Threshold" ) \
323 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_9_THRESHOLD, 0x0118, "Tier 1 Block 9 Threshold" ) \
324 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_10_THRESHOLD, 0x0119, "Tier 1 Block 10 Threshold" ) \
325 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_11_THRESHOLD, 0x011A, "Tier 1 Block 11 Threshold" ) \
326 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_12_THRESHOLD, 0x011B, "Tier 1 Block 12 Threshold" ) \
327 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_13_THRESHOLD, 0x011C, "Tier 1 Block 13 Threshold" ) \
328 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_14_THRESHOLD, 0x011D, "Tier 1 Block 14 Threshold" ) \
329 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_15_THRESHOLD, 0x011E, "Tier 1 Block 15 Threshold" ) \
330 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_THRESHOLD_COUNT, 0x011F, "Tier 1 Block Threshold Count" ) \
331 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_1_THRESHOLD, 0x0120, "Tier 2 Block 1 Threshold" ) \
332 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_2_THRESHOLD, 0x0121, "Tier 2 Block 2 Threshold" ) \
333 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_3_THRESHOLD, 0x0122, "Tier 2 Block 3 Threshold" ) \
334 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_4_THRESHOLD, 0x0123, "Tier 2 Block 4 Threshold" ) \
335 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_5_THRESHOLD, 0x0124, "Tier 2 Block 5 Threshold" ) \
336 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_6_THRESHOLD, 0x0125, "Tier 2 Block 6 Threshold" ) \
337 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_7_THRESHOLD, 0x0126, "Tier 2 Block 7 Threshold" ) \
338 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_8_THRESHOLD, 0x0127, "Tier 2 Block 8 Threshold" ) \
339 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_9_THRESHOLD, 0x0128, "Tier 2 Block 9 Threshold" ) \
340 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_10_THRESHOLD, 0x0129, "Tier 2 Block 10 Threshold" ) \
341 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_11_THRESHOLD, 0x012A, "Tier 2 Block 11 Threshold" ) \
342 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_12_THRESHOLD, 0x012B, "Tier 2 Block 12 Threshold" ) \
343 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_13_THRESHOLD, 0x012C, "Tier 2 Block 13 Threshold" ) \
344 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_14_THRESHOLD, 0x012D, "Tier 2 Block 14 Threshold" ) \
345 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_15_THRESHOLD, 0x012E, "Tier 2 Block 15 Threshold" ) \
346 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_THRESHOLD_COUNT, 0x012F, "Tier 2 Block Threshold Count" ) \
347 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_1_THRESHOLD, 0x0130, "Tier 3 Block 1 Threshold" ) \
348 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_2_THRESHOLD, 0x0131, "Tier 3 Block 2 Threshold" ) \
349 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_3_THRESHOLD, 0x0132, "Tier 3 Block 3 Threshold" ) \
350 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_4_THRESHOLD, 0x0133, "Tier 3 Block 4 Threshold" ) \
351 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_5_THRESHOLD, 0x0134, "Tier 3 Block 5 Threshold" ) \
352 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_6_THRESHOLD, 0x0135, "Tier 3 Block 6 Threshold" ) \
353 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_7_THRESHOLD, 0x0136, "Tier 3 Block 7 Threshold" ) \
354 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_8_THRESHOLD, 0x0137, "Tier 3 Block 8 Threshold" ) \
355 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_9_THRESHOLD, 0x0138, "Tier 3 Block 9 Threshold" ) \
356 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_10_THRESHOLD, 0x0139, "Tier 3 Block 10 Threshold" ) \
357 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_11_THRESHOLD, 0x013A, "Tier 3 Block 11 Threshold" ) \
358 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_12_THRESHOLD, 0x013B, "Tier 3 Block 12 Threshold" ) \
359 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_13_THRESHOLD, 0x013C, "Tier 3 Block 13 Threshold" ) \
360 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_14_THRESHOLD, 0x013D, "Tier 3 Block 14 Threshold" ) \
361 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_15_THRESHOLD, 0x013E, "Tier 3 Block 15 Threshold" ) \
362 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_THRESHOLD_COUNT, 0x013F, "Tier 3 Block Threshold Count" ) \
363 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_1_THRESHOLD, 0x0140, "Tier 4 Block 1 Threshold" ) \
364 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_2_THRESHOLD, 0x0141, "Tier 4 Block 2 Threshold" ) \
365 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_3_THRESHOLD, 0x0142, "Tier 4 Block 3 Threshold" ) \
366 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_4_THRESHOLD, 0x0143, "Tier 4 Block 4 Threshold" ) \
367 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_5_THRESHOLD, 0x0144, "Tier 4 Block 5 Threshold" ) \
368 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_6_THRESHOLD, 0x0145, "Tier 4 Block 6 Threshold" ) \
369 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_7_THRESHOLD, 0x0146, "Tier 4 Block 7 Threshold" ) \
370 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_8_THRESHOLD, 0x0147, "Tier 4 Block 8 Threshold" ) \
371 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_9_THRESHOLD, 0x0148, "Tier 4 Block 9 Threshold" ) \
372 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_10_THRESHOLD, 0x0149, "Tier 4 Block 10 Threshold" ) \
373 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_11_THRESHOLD, 0x014A, "Tier 4 Block 11 Threshold" ) \
374 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_12_THRESHOLD, 0x014B, "Tier 4 Block 12 Threshold" ) \
375 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_13_THRESHOLD, 0x014C, "Tier 4 Block 13 Threshold" ) \
376 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_14_THRESHOLD, 0x014D, "Tier 4 Block 14 Threshold" ) \
377 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_15_THRESHOLD, 0x014E, "Tier 4 Block 15 Threshold" ) \
378 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_THRESHOLD_COUNT, 0x014F, "Tier 4 Block Threshold Count" ) \
379 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_1_THRESHOLD, 0x0150, "Tier 5 Block 1 Threshold" ) \
380 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_2_THRESHOLD, 0x0151, "Tier 5 Block 2 Threshold" ) \
381 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_3_THRESHOLD, 0x0152, "Tier 5 Block 3 Threshold" ) \
382 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_4_THRESHOLD, 0x0153, "Tier 5 Block 4 Threshold" ) \
383 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_5_THRESHOLD, 0x0154, "Tier 5 Block 5 Threshold" ) \
384 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_6_THRESHOLD, 0x0155, "Tier 5 Block 6 Threshold" ) \
385 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_7_THRESHOLD, 0x0156, "Tier 5 Block 7 Threshold" ) \
386 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_8_THRESHOLD, 0x0157, "Tier 5 Block 8 Threshold" ) \
387 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_9_THRESHOLD, 0x0158, "Tier 5 Block 9 Threshold" ) \
388 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_10_THRESHOLD, 0x0159, "Tier 5 Block 10 Threshold" ) \
389 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_11_THRESHOLD, 0x015A, "Tier 5 Block 11 Threshold" ) \
390 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_12_THRESHOLD, 0x015B, "Tier 5 Block 12 Threshold" ) \
391 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_13_THRESHOLD, 0x015C, "Tier 5 Block 13 Threshold" ) \
392 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_14_THRESHOLD, 0x015D, "Tier 5 Block 14 Threshold" ) \
393 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_15_THRESHOLD, 0x015E, "Tier 5 Block 15 Threshold" ) \
394 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_THRESHOLD_COUNT, 0x015F, "Tier 5 Block Threshold Count" ) \
395 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_1_THRESHOLD, 0x0160, "Tier 6 Block 1 Threshold" ) \
396 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_2_THRESHOLD, 0x0161, "Tier 6 Block 2 Threshold" ) \
397 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_3_THRESHOLD, 0x0162, "Tier 6 Block 3 Threshold" ) \
398 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_4_THRESHOLD, 0x0163, "Tier 6 Block 4 Threshold" ) \
399 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_5_THRESHOLD, 0x0164, "Tier 6 Block 5 Threshold" ) \
400 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_6_THRESHOLD, 0x0165, "Tier 6 Block 6 Threshold" ) \
401 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_7_THRESHOLD, 0x0166, "Tier 6 Block 7 Threshold" ) \
402 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_8_THRESHOLD, 0x0167, "Tier 6 Block 8 Threshold" ) \
403 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_9_THRESHOLD, 0x0168, "Tier 6 Block 9 Threshold" ) \
404 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_10_THRESHOLD, 0x0169, "Tier 6 Block 10 Threshold" ) \
405 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_11_THRESHOLD, 0x016A, "Tier 6 Block 11 Threshold" ) \
406 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_12_THRESHOLD, 0x016B, "Tier 6 Block 12 Threshold" ) \
407 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_13_THRESHOLD, 0x016C, "Tier 6 Block 13 Threshold" ) \
408 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_14_THRESHOLD, 0x016D, "Tier 6 Block 14 Threshold" ) \
409 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_15_THRESHOLD, 0x016E, "Tier 6 Block 15 Threshold" ) \
410 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_THRESHOLD_COUNT, 0x016F, "Tier 6 Block Threshold Count" ) \
411 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_1_THRESHOLD, 0x0170, "Tier 7 Block 1 Threshold" ) \
412 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_2_THRESHOLD, 0x0171, "Tier 7 Block 2 Threshold" ) \
413 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_3_THRESHOLD, 0x0172, "Tier 7 Block 3 Threshold" ) \
414 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_4_THRESHOLD, 0x0173, "Tier 7 Block 4 Threshold" ) \
415 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_5_THRESHOLD, 0x0174, "Tier 7 Block 5 Threshold" ) \
416 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_6_THRESHOLD, 0x0175, "Tier 7 Block 6 Threshold" ) \
417 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_7_THRESHOLD, 0x0176, "Tier 7 Block 7 Threshold" ) \
418 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_8_THRESHOLD, 0x0177, "Tier 7 Block 8 Threshold" ) \
419 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_9_THRESHOLD, 0x0178, "Tier 7 Block 9 Threshold" ) \
420 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_10_THRESHOLD, 0x0179, "Tier 7 Block 10 Threshold" ) \
421 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_11_THRESHOLD, 0x017A, "Tier 7 Block 11 Threshold" ) \
422 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_12_THRESHOLD, 0x017B, "Tier 7 Block 12 Threshold" ) \
423 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_13_THRESHOLD, 0x017C, "Tier 7 Block 13 Threshold" ) \
424 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_14_THRESHOLD, 0x017D, "Tier 7 Block 14 Threshold" ) \
425 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_15_THRESHOLD, 0x017E, "Tier 7 Block 15 Threshold" ) \
426 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_THRESHOLD_COUNT, 0x017F, "Tier 7 Block Threshold Count" ) \
427 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_1_THRESHOLD, 0x0180, "Tier 8 Block 1 Threshold" ) \
428 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_2_THRESHOLD, 0x0181, "Tier 8 Block 2 Threshold" ) \
429 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_3_THRESHOLD, 0x0182, "Tier 8 Block 3 Threshold" ) \
430 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_4_THRESHOLD, 0x0183, "Tier 8 Block 4 Threshold" ) \
431 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_5_THRESHOLD, 0x0184, "Tier 8 Block 5 Threshold" ) \
432 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_6_THRESHOLD, 0x0185, "Tier 8 Block 6 Threshold" ) \
433 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_7_THRESHOLD, 0x0186, "Tier 8 Block 7 Threshold" ) \
434 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_8_THRESHOLD, 0x0187, "Tier 8 Block 8 Threshold" ) \
435 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_9_THRESHOLD, 0x0188, "Tier 8 Block 9 Threshold" ) \
436 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_10_THRESHOLD, 0x0189, "Tier 8 Block 10 Threshold" ) \
437 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_11_THRESHOLD, 0x018A, "Tier 8 Block 11 Threshold" ) \
438 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_12_THRESHOLD, 0x018B, "Tier 8 Block 12 Threshold" ) \
439 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_13_THRESHOLD, 0x018C, "Tier 8 Block 13 Threshold" ) \
440 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_14_THRESHOLD, 0x018D, "Tier 8 Block 14 Threshold" ) \
441 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_15_THRESHOLD, 0x018E, "Tier 8 Block 15 Threshold" ) \
442 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_THRESHOLD_COUNT, 0x018F, "Tier 8 Block Threshold Count" ) \
443 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_1_THRESHOLD, 0x0190, "Tier 9 Block 1 Threshold" ) \
444 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_2_THRESHOLD, 0x0191, "Tier 9 Block 2 Threshold" ) \
445 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_3_THRESHOLD, 0x0192, "Tier 9 Block 3 Threshold" ) \
446 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_4_THRESHOLD, 0x0193, "Tier 9 Block 4 Threshold" ) \
447 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_5_THRESHOLD, 0x0194, "Tier 9 Block 5 Threshold" ) \
448 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_6_THRESHOLD, 0x0195, "Tier 9 Block 6 Threshold" ) \
449 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_7_THRESHOLD, 0x0196, "Tier 9 Block 7 Threshold" ) \
450 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_8_THRESHOLD, 0x0197, "Tier 9 Block 8 Threshold" ) \
451 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_9_THRESHOLD, 0x0198, "Tier 9 Block 9 Threshold" ) \
452 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_10_THRESHOLD, 0x0199, "Tier 9 Block 10 Threshold" ) \
453 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_11_THRESHOLD, 0x019A, "Tier 9 Block 11 Threshold" ) \
454 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_12_THRESHOLD, 0x019B, "Tier 9 Block 12 Threshold" ) \
455 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_13_THRESHOLD, 0x019C, "Tier 9 Block 13 Threshold" ) \
456 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_14_THRESHOLD, 0x019D, "Tier 9 Block 14 Threshold" ) \
457 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_15_THRESHOLD, 0x019E, "Tier 9 Block 15 Threshold" ) \
458 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_THRESHOLD_COUNT, 0x019F, "Tier 9 Block Threshold Count" ) \
459 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_1_THRESHOLD, 0x01A0, "Tier 10 Block 1 Threshold" ) \
460 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_2_THRESHOLD, 0x01A1, "Tier 10 Block 2 Threshold" ) \
461 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_3_THRESHOLD, 0x01A2, "Tier 10 Block 3 Threshold" ) \
462 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_4_THRESHOLD, 0x01A3, "Tier 10 Block 4 Threshold" ) \
463 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_5_THRESHOLD, 0x01A4, "Tier 10 Block 5 Threshold" ) \
464 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_6_THRESHOLD, 0x01A5, "Tier 10 Block 6 Threshold" ) \
465 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_7_THRESHOLD, 0x01A6, "Tier 10 Block 7 Threshold" ) \
466 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_8_THRESHOLD, 0x01A7, "Tier 10 Block 8 Threshold" ) \
467 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_9_THRESHOLD, 0x01A8, "Tier 10 Block 9 Threshold" ) \
468 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_10_THRESHOLD, 0x01A9, "Tier 10 Block 10 Threshold" ) \
469 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_11_THRESHOLD, 0x01AA, "Tier 10 Block 11 Threshold" ) \
470 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_12_THRESHOLD, 0x01AB, "Tier 10 Block 12 Threshold" ) \
471 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_13_THRESHOLD, 0x01AC, "Tier 10 Block 13 Threshold" ) \
472 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_14_THRESHOLD, 0x01AD, "Tier 10 Block 14 Threshold" ) \
473 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_15_THRESHOLD, 0x01AE, "Tier 10 Block 15 Threshold" ) \
474 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_THRESHOLD_COUNT, 0x01AF, "Tier 10 Block Threshold Count" ) \
475 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_1_THRESHOLD, 0x01B0, "Tier 11 Block 1 Threshold" ) \
476 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_2_THRESHOLD, 0x01B1, "Tier 11 Block 2 Threshold" ) \
477 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_3_THRESHOLD, 0x01B2, "Tier 11 Block 3 Threshold" ) \
478 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_4_THRESHOLD, 0x01B3, "Tier 11 Block 4 Threshold" ) \
479 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_5_THRESHOLD, 0x01B4, "Tier 11 Block 5 Threshold" ) \
480 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_6_THRESHOLD, 0x01B5, "Tier 11 Block 6 Threshold" ) \
481 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_7_THRESHOLD, 0x01B6, "Tier 11 Block 7 Threshold" ) \
482 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_8_THRESHOLD, 0x01B7, "Tier 11 Block 8 Threshold" ) \
483 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_9_THRESHOLD, 0x01B8, "Tier 11 Block 9 Threshold" ) \
484 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_10_THRESHOLD, 0x01B9, "Tier 11 Block 10 Threshold" ) \
485 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_11_THRESHOLD, 0x01BA, "Tier 11 Block 11 Threshold" ) \
486 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_12_THRESHOLD, 0x01BB, "Tier 11 Block 12 Threshold" ) \
487 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_13_THRESHOLD, 0x01BC, "Tier 11 Block 13 Threshold" ) \
488 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_14_THRESHOLD, 0x01BD, "Tier 11 Block 14 Threshold" ) \
489 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_15_THRESHOLD, 0x01BE, "Tier 11 Block 15 Threshold" ) \
490 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_THRESHOLD_COUNT, 0x01BF, "Tier 11 Block Threshold Count" ) \
491 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_1_THRESHOLD, 0x01C0, "Tier 12 Block 1 Threshold" ) \
492 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_2_THRESHOLD, 0x01C1, "Tier 12 Block 2 Threshold" ) \
493 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_3_THRESHOLD, 0x01C2, "Tier 12 Block 3 Threshold" ) \
494 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_4_THRESHOLD, 0x01C3, "Tier 12 Block 4 Threshold" ) \
495 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_5_THRESHOLD, 0x01C4, "Tier 12 Block 5 Threshold" ) \
496 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_6_THRESHOLD, 0x01C5, "Tier 12 Block 6 Threshold" ) \
497 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_7_THRESHOLD, 0x01C6, "Tier 12 Block 7 Threshold" ) \
498 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_8_THRESHOLD, 0x01C7, "Tier 12 Block 8 Threshold" ) \
499 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_9_THRESHOLD, 0x01C8, "Tier 12 Block 9 Threshold" ) \
500 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_10_THRESHOLD, 0x01C9, "Tier 12 Block 10 Threshold" ) \
501 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_11_THRESHOLD, 0x01CA, "Tier 12 Block 11 Threshold" ) \
502 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_12_THRESHOLD, 0x01CB, "Tier 12 Block 12 Threshold" ) \
503 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_13_THRESHOLD, 0x01CC, "Tier 12 Block 13 Threshold" ) \
504 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_14_THRESHOLD, 0x01CD, "Tier 12 Block 14 Threshold" ) \
505 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_15_THRESHOLD, 0x01CE, "Tier 12 Block 15 Threshold" ) \
506 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_THRESHOLD_COUNT, 0x01CF, "Tier 12 Block Threshold Count" ) \
507 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_1_THRESHOLD, 0x01D0, "Tier 13 Block 1 Threshold" ) \
508 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_2_THRESHOLD, 0x01D1, "Tier 13 Block 2 Threshold" ) \
509 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_3_THRESHOLD, 0x01D2, "Tier 13 Block 3 Threshold" ) \
510 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_4_THRESHOLD, 0x01D3, "Tier 13 Block 4 Threshold" ) \
511 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_5_THRESHOLD, 0x01D4, "Tier 13 Block 5 Threshold" ) \
512 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_6_THRESHOLD, 0x01D5, "Tier 13 Block 6 Threshold" ) \
513 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_7_THRESHOLD, 0x01D6, "Tier 13 Block 7 Threshold" ) \
514 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_8_THRESHOLD, 0x01D7, "Tier 13 Block 8 Threshold" ) \
515 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_9_THRESHOLD, 0x01D8, "Tier 13 Block 9 Threshold" ) \
516 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_10_THRESHOLD, 0x01D9, "Tier 13 Block 10 Threshold" ) \
517 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_11_THRESHOLD, 0x01DA, "Tier 13 Block 11 Threshold" ) \
518 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_12_THRESHOLD, 0x01DB, "Tier 13 Block 12 Threshold" ) \
519 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_13_THRESHOLD, 0x01DC, "Tier 13 Block 13 Threshold" ) \
520 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_14_THRESHOLD, 0x01DD, "Tier 13 Block 14 Threshold" ) \
521 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_15_THRESHOLD, 0x01DE, "Tier 13 Block 15 Threshold" ) \
522 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_THRESHOLD_COUNT, 0x01DF, "Tier 13 Block Threshold Count" ) \
523 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_1_THRESHOLD, 0x01E0, "Tier 14 Block 1 Threshold" ) \
524 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_2_THRESHOLD, 0x01E1, "Tier 14 Block 2 Threshold" ) \
525 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_3_THRESHOLD, 0x01E2, "Tier 14 Block 3 Threshold" ) \
526 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_4_THRESHOLD, 0x01E3, "Tier 14 Block 4 Threshold" ) \
527 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_5_THRESHOLD, 0x01E4, "Tier 14 Block 5 Threshold" ) \
528 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_6_THRESHOLD, 0x01E5, "Tier 14 Block 6 Threshold" ) \
529 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_7_THRESHOLD, 0x01E6, "Tier 14 Block 7 Threshold" ) \
530 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_8_THRESHOLD, 0x01E7, "Tier 14 Block 8 Threshold" ) \
531 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_9_THRESHOLD, 0x01E8, "Tier 14 Block 9 Threshold" ) \
532 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_10_THRESHOLD, 0x01E9, "Tier 14 Block 10 Threshold" ) \
533 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_11_THRESHOLD, 0x01EA, "Tier 14 Block 11 Threshold" ) \
534 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_12_THRESHOLD, 0x01EB, "Tier 14 Block 12 Threshold" ) \
535 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_13_THRESHOLD, 0x01EC, "Tier 14 Block 13 Threshold" ) \
536 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_14_THRESHOLD, 0x01ED, "Tier 14 Block 14 Threshold" ) \
537 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_15_THRESHOLD, 0x01EE, "Tier 14 Block 15 Threshold" ) \
538 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_THRESHOLD_COUNT, 0x01EF, "Tier 14 Block Threshold Count" ) \
539 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_1_THRESHOLD, 0x01F0, "Tier 15 Block 1 Threshold" ) \
540 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_2_THRESHOLD, 0x01F1, "Tier 15 Block 2 Threshold" ) \
541 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_3_THRESHOLD, 0x01F2, "Tier 15 Block 3 Threshold" ) \
542 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_4_THRESHOLD, 0x01F3, "Tier 15 Block 4 Threshold" ) \
543 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_5_THRESHOLD, 0x01F4, "Tier 15 Block 5 Threshold" ) \
544 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_6_THRESHOLD, 0x01F5, "Tier 15 Block 6 Threshold" ) \
545 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_7_THRESHOLD, 0x01F6, "Tier 15 Block 7 Threshold" ) \
546 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_8_THRESHOLD, 0x01F7, "Tier 15 Block 8 Threshold" ) \
547 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_9_THRESHOLD, 0x01F8, "Tier 15 Block 9 Threshold" ) \
548 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_10_THRESHOLD, 0x01F9, "Tier 15 Block 10 Threshold" ) \
549 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_11_THRESHOLD, 0x01FA, "Tier 15 Block 11 Threshold" ) \
550 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_12_THRESHOLD, 0x01FB, "Tier 15 Block 12 Threshold" ) \
551 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_13_THRESHOLD, 0x01FC, "Tier 15 Block 13 Threshold" ) \
552 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_14_THRESHOLD, 0x01FD, "Tier 15 Block 14 Threshold" ) \
553 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_15_THRESHOLD, 0x01FE, "Tier 15 Block 15 Threshold" ) \
554 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_THRESHOLD_COUNT, 0x01FF, "Tier 15 Block Threshold Count" ) \
555 /* Block Period (Delivered) Set */ \
556 XXX(ZBEE_ZCL_ATTR_ID_PRICE_START_OF_BLOCK_PERIOD, 0x0200, "Start of Block Period" ) \
557 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_PERIOD_DURATION, 0x0201, "Block Period Duration" ) \
558 XXX(ZBEE_ZCL_ATTR_ID_PRICE_THRESHOLD_MULTIPLIER, 0x0202, "Threshold Multiplier" ) \
559 XXX(ZBEE_ZCL_ATTR_ID_PRICE_THRESHOLD_DIVISOR, 0x0203, "Threshold Divisor" ) \
560 XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_PERIOD_DURATION_TYPE, 0x0204, "Block Period Duration Type" ) \
562 XXX(ZBEE_ZCL_ATTR_ID_PRICE_COMMODITY_TYPE, 0x0300, "Commodity Type" ) \
563 XXX(ZBEE_ZCL_ATTR_ID_PRICE_STANDING_CHARGE, 0x0301, "Standing Charge" ) \
564 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CONVERSION_FACTOR, 0x0302, "Conversion Factor" ) \
565 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT,0x0303, "Conversion Factor TrailingDigit" ) \
566 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE, 0x0304, "Calorific Value" ) \
567 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE_UNIT, 0x0305, "Calorific Value Unit" ) \
568 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT, 0x0306, "Calorific Value Trailing Digit" ) \
569 /* Block Price Information (Delivered) */ \
570 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_1_PRICE, 0x0400, "No Tier Block 1 Price" ) \
571 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_2_PRICE, 0x0401, "No Tier Block 2 Price" ) \
572 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_3_PRICE, 0x0402, "No Tier Block 3 Price" ) \
573 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_4_PRICE, 0x0403, "No Tier Block 4 Price" ) \
574 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_5_PRICE, 0x0404, "No Tier Block 5 Price" ) \
575 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_6_PRICE, 0x0405, "No Tier Block 6 Price" ) \
576 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_7_PRICE, 0x0406, "No Tier Block 7 Price" ) \
577 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_8_PRICE, 0x0407, "No Tier Block 8 Price" ) \
578 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_9_PRICE, 0x0408, "No Tier Block 9 Price" ) \
579 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_10_PRICE, 0x0409, "No Tier Block 10 Price" ) \
580 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_11_PRICE, 0x040A, "No Tier Block 11 Price" ) \
581 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_12_PRICE, 0x040B, "No Tier Block 12 Price" ) \
582 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_13_PRICE, 0x040C, "No Tier Block 13 Price" ) \
583 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_14_PRICE, 0x040D, "No Tier Block 14 Price" ) \
584 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_15_PRICE, 0x040E, "No Tier Block 15 Price" ) \
585 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_16_PRICE, 0x040F, "No Tier Block 16 Price" ) \
586 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_1_PRICE, 0x0410, "Tier 1 Block 1 Price" ) \
587 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_2_PRICE, 0x0411, "Tier 1 Block 2 Price" ) \
588 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_3_PRICE, 0x0412, "Tier 1 Block 3 Price" ) \
589 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_4_PRICE, 0x0413, "Tier 1 Block 4 Price" ) \
590 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_5_PRICE, 0x0414, "Tier 1 Block 5 Price" ) \
591 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_6_PRICE, 0x0415, "Tier 1 Block 6 Price" ) \
592 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_7_PRICE, 0x0416, "Tier 1 Block 7 Price" ) \
593 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_8_PRICE, 0x0417, "Tier 1 Block 8 Price" ) \
594 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_9_PRICE, 0x0418, "Tier 1 Block 9 Price" ) \
595 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_10_PRICE, 0x0419, "Tier 1 Block 10 Price" ) \
596 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_11_PRICE, 0x041A, "Tier 1 Block 11 Price" ) \
597 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_12_PRICE, 0x041B, "Tier 1 Block 12 Price" ) \
598 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_13_PRICE, 0x041C, "Tier 1 Block 13 Price" ) \
599 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_14_PRICE, 0x041D, "Tier 1 Block 14 Price" ) \
600 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_15_PRICE, 0x041E, "Tier 1 Block 15 Price" ) \
601 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_16_PRICE, 0x041F, "Tier 1 Block 16 Price" ) \
602 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_1_PRICE, 0x0420, "Tier 2 Block 1 Price" ) \
603 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_2_PRICE, 0x0421, "Tier 2 Block 2 Price" ) \
604 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_3_PRICE, 0x0422, "Tier 2 Block 3 Price" ) \
605 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_4_PRICE, 0x0423, "Tier 2 Block 4 Price" ) \
606 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_5_PRICE, 0x0424, "Tier 2 Block 5 Price" ) \
607 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_6_PRICE, 0x0425, "Tier 2 Block 6 Price" ) \
608 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_7_PRICE, 0x0426, "Tier 2 Block 7 Price" ) \
609 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_8_PRICE, 0x0427, "Tier 2 Block 8 Price" ) \
610 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_9_PRICE, 0x0428, "Tier 2 Block 9 Price" ) \
611 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_10_PRICE, 0x0429, "Tier 2 Block 10 Price" ) \
612 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_11_PRICE, 0x042A, "Tier 2 Block 11 Price" ) \
613 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_12_PRICE, 0x042B, "Tier 2 Block 12 Price" ) \
614 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_13_PRICE, 0x042C, "Tier 2 Block 13 Price" ) \
615 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_14_PRICE, 0x042D, "Tier 2 Block 14 Price" ) \
616 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_15_PRICE, 0x042E, "Tier 2 Block 15 Price" ) \
617 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_16_PRICE, 0x042F, "Tier 2 Block 16 Price" ) \
618 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_1_PRICE, 0x0430, "Tier 3 Block 1 Price" ) \
619 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_2_PRICE, 0x0431, "Tier 3 Block 2 Price" ) \
620 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_3_PRICE, 0x0432, "Tier 3 Block 3 Price" ) \
621 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_4_PRICE, 0x0433, "Tier 3 Block 4 Price" ) \
622 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_5_PRICE, 0x0434, "Tier 3 Block 5 Price" ) \
623 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_6_PRICE, 0x0435, "Tier 3 Block 6 Price" ) \
624 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_7_PRICE, 0x0436, "Tier 3 Block 7 Price" ) \
625 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_8_PRICE, 0x0437, "Tier 3 Block 8 Price" ) \
626 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_9_PRICE, 0x0438, "Tier 3 Block 9 Price" ) \
627 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_10_PRICE, 0x0439, "Tier 3 Block 10 Price" ) \
628 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_11_PRICE, 0x043A, "Tier 3 Block 11 Price" ) \
629 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_12_PRICE, 0x043B, "Tier 3 Block 12 Price" ) \
630 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_13_PRICE, 0x043C, "Tier 3 Block 13 Price" ) \
631 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_14_PRICE, 0x043D, "Tier 3 Block 14 Price" ) \
632 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_15_PRICE, 0x043E, "Tier 3 Block 15 Price" ) \
633 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_16_PRICE, 0x043F, "Tier 3 Block 16 Price" ) \
634 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_1_PRICE, 0x0440, "Tier 4 Block 1 Price" ) \
635 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_2_PRICE, 0x0441, "Tier 4 Block 2 Price" ) \
636 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_3_PRICE, 0x0442, "Tier 4 Block 3 Price" ) \
637 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_4_PRICE, 0x0443, "Tier 4 Block 4 Price" ) \
638 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_5_PRICE, 0x0444, "Tier 4 Block 5 Price" ) \
639 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_6_PRICE, 0x0445, "Tier 4 Block 6 Price" ) \
640 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_7_PRICE, 0x0446, "Tier 4 Block 7 Price" ) \
641 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_8_PRICE, 0x0447, "Tier 4 Block 8 Price" ) \
642 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_9_PRICE, 0x0448, "Tier 4 Block 9 Price" ) \
643 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_10_PRICE, 0x0449, "Tier 4 Block 10 Price" ) \
644 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_11_PRICE, 0x044A, "Tier 4 Block 11 Price" ) \
645 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_12_PRICE, 0x044B, "Tier 4 Block 12 Price" ) \
646 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_13_PRICE, 0x044C, "Tier 4 Block 13 Price" ) \
647 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_14_PRICE, 0x044D, "Tier 4 Block 14 Price" ) \
648 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_15_PRICE, 0x044E, "Tier 4 Block 15 Price" ) \
649 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_16_PRICE, 0x044F, "Tier 4 Block 16 Price" ) \
650 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_1_PRICE, 0x0450, "Tier 5 Block 1 Price" ) \
651 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_2_PRICE, 0x0451, "Tier 5 Block 2 Price" ) \
652 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_3_PRICE, 0x0452, "Tier 5 Block 3 Price" ) \
653 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_4_PRICE, 0x0453, "Tier 5 Block 4 Price" ) \
654 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_5_PRICE, 0x0454, "Tier 5 Block 5 Price" ) \
655 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_6_PRICE, 0x0455, "Tier 5 Block 6 Price" ) \
656 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_7_PRICE, 0x0456, "Tier 5 Block 7 Price" ) \
657 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_8_PRICE, 0x0457, "Tier 5 Block 8 Price" ) \
658 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_9_PRICE, 0x0458, "Tier 5 Block 9 Price" ) \
659 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_10_PRICE, 0x0459, "Tier 5 Block 10 Price" ) \
660 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_11_PRICE, 0x045A, "Tier 5 Block 11 Price" ) \
661 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_12_PRICE, 0x045B, "Tier 5 Block 12 Price" ) \
662 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_13_PRICE, 0x045C, "Tier 5 Block 13 Price" ) \
663 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_14_PRICE, 0x045D, "Tier 5 Block 14 Price" ) \
664 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_15_PRICE, 0x045E, "Tier 5 Block 15 Price" ) \
665 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_16_PRICE, 0x045F, "Tier 5 Block 16 Price" ) \
666 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_1_PRICE, 0x0460, "Tier 6 Block 1 Price" ) \
667 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_2_PRICE, 0x0461, "Tier 6 Block 2 Price" ) \
668 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_3_PRICE, 0x0462, "Tier 6 Block 3 Price" ) \
669 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_4_PRICE, 0x0463, "Tier 6 Block 4 Price" ) \
670 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_5_PRICE, 0x0464, "Tier 6 Block 5 Price" ) \
671 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_6_PRICE, 0x0465, "Tier 6 Block 6 Price" ) \
672 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_7_PRICE, 0x0466, "Tier 6 Block 7 Price" ) \
673 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_8_PRICE, 0x0467, "Tier 6 Block 8 Price" ) \
674 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_9_PRICE, 0x0468, "Tier 6 Block 9 Price" ) \
675 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_10_PRICE, 0x0469, "Tier 6 Block 10 Price" ) \
676 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_11_PRICE, 0x046A, "Tier 6 Block 11 Price" ) \
677 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_12_PRICE, 0x046B, "Tier 6 Block 12 Price" ) \
678 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_13_PRICE, 0x046C, "Tier 6 Block 13 Price" ) \
679 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_14_PRICE, 0x046D, "Tier 6 Block 14 Price" ) \
680 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_15_PRICE, 0x046E, "Tier 6 Block 15 Price" ) \
681 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_16_PRICE, 0x046F, "Tier 6 Block 16 Price" ) \
682 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_1_PRICE, 0x0470, "Tier 7 Block 1 Price" ) \
683 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_2_PRICE, 0x0471, "Tier 7 Block 2 Price" ) \
684 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_3_PRICE, 0x0472, "Tier 7 Block 3 Price" ) \
685 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_4_PRICE, 0x0473, "Tier 7 Block 4 Price" ) \
686 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_5_PRICE, 0x0474, "Tier 7 Block 5 Price" ) \
687 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_6_PRICE, 0x0475, "Tier 7 Block 6 Price" ) \
688 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_7_PRICE, 0x0476, "Tier 7 Block 7 Price" ) \
689 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_8_PRICE, 0x0477, "Tier 7 Block 8 Price" ) \
690 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_9_PRICE, 0x0478, "Tier 7 Block 9 Price" ) \
691 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_10_PRICE, 0x0479, "Tier 7 Block 10 Price" ) \
692 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_11_PRICE, 0x047A, "Tier 7 Block 11 Price" ) \
693 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_12_PRICE, 0x047B, "Tier 7 Block 12 Price" ) \
694 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_13_PRICE, 0x047C, "Tier 7 Block 13 Price" ) \
695 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_14_PRICE, 0x047D, "Tier 7 Block 14 Price" ) \
696 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_15_PRICE, 0x047E, "Tier 7 Block 15 Price" ) \
697 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_16_PRICE, 0x047F, "Tier 7 Block 16 Price" ) \
698 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_1_PRICE, 0x0480, "Tier 8 Block 1 Price" ) \
699 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_2_PRICE, 0x0481, "Tier 8 Block 2 Price" ) \
700 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_3_PRICE, 0x0482, "Tier 8 Block 3 Price" ) \
701 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_4_PRICE, 0x0483, "Tier 8 Block 4 Price" ) \
702 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_5_PRICE, 0x0484, "Tier 8 Block 5 Price" ) \
703 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_6_PRICE, 0x0485, "Tier 8 Block 6 Price" ) \
704 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_7_PRICE, 0x0486, "Tier 8 Block 7 Price" ) \
705 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_8_PRICE, 0x0487, "Tier 8 Block 8 Price" ) \
706 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_9_PRICE, 0x0488, "Tier 8 Block 9 Price" ) \
707 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_10_PRICE, 0x0489, "Tier 8 Block 10 Price" ) \
708 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_11_PRICE, 0x048A, "Tier 8 Block 11 Price" ) \
709 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_12_PRICE, 0x048B, "Tier 8 Block 12 Price" ) \
710 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_13_PRICE, 0x048C, "Tier 8 Block 13 Price" ) \
711 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_14_PRICE, 0x048D, "Tier 8 Block 14 Price" ) \
712 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_15_PRICE, 0x048E, "Tier 8 Block 15 Price" ) \
713 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_16_PRICE, 0x048F, "Tier 8 Block 16 Price" ) \
714 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_1_PRICE, 0x0490, "Tier 9 Block 1 Price" ) \
715 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_2_PRICE, 0x0491, "Tier 9 Block 2 Price" ) \
716 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_3_PRICE, 0x0492, "Tier 9 Block 3 Price" ) \
717 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_4_PRICE, 0x0493, "Tier 9 Block 4 Price" ) \
718 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_5_PRICE, 0x0494, "Tier 9 Block 5 Price" ) \
719 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_6_PRICE, 0x0495, "Tier 9 Block 6 Price" ) \
720 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_7_PRICE, 0x0496, "Tier 9 Block 7 Price" ) \
721 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_8_PRICE, 0x0497, "Tier 9 Block 8 Price" ) \
722 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_9_PRICE, 0x0498, "Tier 9 Block 9 Price" ) \
723 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_10_PRICE, 0x0499, "Tier 9 Block 10 Price" ) \
724 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_11_PRICE, 0x049A, "Tier 9 Block 11 Price" ) \
725 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_12_PRICE, 0x049B, "Tier 9 Block 12 Price" ) \
726 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_13_PRICE, 0x049C, "Tier 9 Block 13 Price" ) \
727 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_14_PRICE, 0x049D, "Tier 9 Block 14 Price" ) \
728 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_15_PRICE, 0x049E, "Tier 9 Block 15 Price" ) \
729 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_16_PRICE, 0x049F, "Tier 9 Block 16 Price" ) \
730 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_1_PRICE, 0x04A0, "Tier 10 Block 1 Price" ) \
731 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_2_PRICE, 0x04A1, "Tier 10 Block 2 Price" ) \
732 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_3_PRICE, 0x04A2, "Tier 10 Block 3 Price" ) \
733 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_4_PRICE, 0x04A3, "Tier 10 Block 4 Price" ) \
734 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_5_PRICE, 0x04A4, "Tier 10 Block 5 Price" ) \
735 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_6_PRICE, 0x04A5, "Tier 10 Block 6 Price" ) \
736 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_7_PRICE, 0x04A6, "Tier 10 Block 7 Price" ) \
737 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_8_PRICE, 0x04A7, "Tier 10 Block 8 Price" ) \
738 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_9_PRICE, 0x04A8, "Tier 10 Block 9 Price" ) \
739 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_10_PRICE, 0x04A9, "Tier 10 Block 10 Price" ) \
740 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_11_PRICE, 0x04AA, "Tier 10 Block 11 Price" ) \
741 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_12_PRICE, 0x04AB, "Tier 10 Block 12 Price" ) \
742 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_13_PRICE, 0x04AC, "Tier 10 Block 13 Price" ) \
743 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_14_PRICE, 0x04AD, "Tier 10 Block 14 Price" ) \
744 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_15_PRICE, 0x04AE, "Tier 10 Block 15 Price" ) \
745 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_16_PRICE, 0x04AF, "Tier 10 Block 16 Price" ) \
746 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_1_PRICE, 0x04B0, "Tier 11 Block 1 Price" ) \
747 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_2_PRICE, 0x04B1, "Tier 11 Block 2 Price" ) \
748 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_3_PRICE, 0x04B2, "Tier 11 Block 3 Price" ) \
749 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_4_PRICE, 0x04B3, "Tier 11 Block 4 Price" ) \
750 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_5_PRICE, 0x04B4, "Tier 11 Block 5 Price" ) \
751 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_6_PRICE, 0x04B5, "Tier 11 Block 6 Price" ) \
752 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_7_PRICE, 0x04B6, "Tier 11 Block 7 Price" ) \
753 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_8_PRICE, 0x04B7, "Tier 11 Block 8 Price" ) \
754 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_9_PRICE, 0x04B8, "Tier 11 Block 9 Price" ) \
755 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_10_PRICE, 0x04B9, "Tier 11 Block 10 Price" ) \
756 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_11_PRICE, 0x04BA, "Tier 11 Block 11 Price" ) \
757 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_12_PRICE, 0x04BB, "Tier 11 Block 12 Price" ) \
758 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_13_PRICE, 0x04BC, "Tier 11 Block 13 Price" ) \
759 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_14_PRICE, 0x04BD, "Tier 11 Block 14 Price" ) \
760 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_15_PRICE, 0x04BE, "Tier 11 Block 15 Price" ) \
761 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_16_PRICE, 0x04BF, "Tier 11 Block 16 Price" ) \
762 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_1_PRICE, 0x04C0, "Tier 12 Block 1 Price" ) \
763 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_2_PRICE, 0x04C1, "Tier 12 Block 2 Price" ) \
764 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_3_PRICE, 0x04C2, "Tier 12 Block 3 Price" ) \
765 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_4_PRICE, 0x04C3, "Tier 12 Block 4 Price" ) \
766 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_5_PRICE, 0x04C4, "Tier 12 Block 5 Price" ) \
767 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_6_PRICE, 0x04C5, "Tier 12 Block 6 Price" ) \
768 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_7_PRICE, 0x04C6, "Tier 12 Block 7 Price" ) \
769 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_8_PRICE, 0x04C7, "Tier 12 Block 8 Price" ) \
770 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_9_PRICE, 0x04C8, "Tier 12 Block 9 Price" ) \
771 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_10_PRICE, 0x04C9, "Tier 12 Block 10 Price" ) \
772 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_11_PRICE, 0x04CA, "Tier 12 Block 11 Price" ) \
773 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_12_PRICE, 0x04CB, "Tier 12 Block 12 Price" ) \
774 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_13_PRICE, 0x04CC, "Tier 12 Block 13 Price" ) \
775 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_14_PRICE, 0x04CD, "Tier 12 Block 14 Price" ) \
776 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_15_PRICE, 0x04CE, "Tier 12 Block 15 Price" ) \
777 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_16_PRICE, 0x04CF, "Tier 12 Block 16 Price" ) \
778 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_1_PRICE, 0x04D0, "Tier 13 Block 1 Price" ) \
779 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_2_PRICE, 0x04D1, "Tier 13 Block 2 Price" ) \
780 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_3_PRICE, 0x04D2, "Tier 13 Block 3 Price" ) \
781 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_4_PRICE, 0x04D3, "Tier 13 Block 4 Price" ) \
782 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_5_PRICE, 0x04D4, "Tier 13 Block 5 Price" ) \
783 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_6_PRICE, 0x04D5, "Tier 13 Block 6 Price" ) \
784 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_7_PRICE, 0x04D6, "Tier 13 Block 7 Price" ) \
785 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_8_PRICE, 0x04D7, "Tier 13 Block 8 Price" ) \
786 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_9_PRICE, 0x04D8, "Tier 13 Block 9 Price" ) \
787 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_10_PRICE, 0x04D9, "Tier 13 Block 10 Price" ) \
788 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_11_PRICE, 0x04DA, "Tier 13 Block 11 Price" ) \
789 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_12_PRICE, 0x04DB, "Tier 13 Block 12 Price" ) \
790 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_13_PRICE, 0x04DC, "Tier 13 Block 13 Price" ) \
791 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_14_PRICE, 0x04DD, "Tier 13 Block 14 Price" ) \
792 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_15_PRICE, 0x04DE, "Tier 13 Block 15 Price" ) \
793 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_16_PRICE, 0x04DF, "Tier 13 Block 16 Price" ) \
794 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_1_PRICE, 0x04E0, "Tier 14 Block 1 Price" ) \
795 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_2_PRICE, 0x04E1, "Tier 14 Block 2 Price" ) \
796 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_3_PRICE, 0x04E2, "Tier 14 Block 3 Price" ) \
797 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_4_PRICE, 0x04E3, "Tier 14 Block 4 Price" ) \
798 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_5_PRICE, 0x04E4, "Tier 14 Block 5 Price" ) \
799 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_6_PRICE, 0x04E5, "Tier 14 Block 6 Price" ) \
800 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_7_PRICE, 0x04E6, "Tier 14 Block 7 Price" ) \
801 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_8_PRICE, 0x04E7, "Tier 14 Block 8 Price" ) \
802 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_9_PRICE, 0x04E8, "Tier 14 Block 9 Price" ) \
803 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_10_PRICE, 0x04E9, "Tier 14 Block 10 Price" ) \
804 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_11_PRICE, 0x04EA, "Tier 14 Block 11 Price" ) \
805 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_12_PRICE, 0x04EB, "Tier 14 Block 12 Price" ) \
806 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_13_PRICE, 0x04EC, "Tier 14 Block 13 Price" ) \
807 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_14_PRICE, 0x04ED, "Tier 14 Block 14 Price" ) \
808 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_15_PRICE, 0x04EE, "Tier 14 Block 15 Price" ) \
809 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_16_PRICE, 0x04EF, "Tier 14 Block 16 Price" ) \
810 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_1_PRICE, 0x04F0, "Tier 15 Block 1 Price" ) \
811 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_2_PRICE, 0x04F1, "Tier 15 Block 2 Price" ) \
812 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_3_PRICE, 0x04F2, "Tier 15 Block 3 Price" ) \
813 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_4_PRICE, 0x04F3, "Tier 15 Block 4 Price" ) \
814 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_5_PRICE, 0x04F4, "Tier 15 Block 5 Price" ) \
815 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_6_PRICE, 0x04F5, "Tier 15 Block 6 Price" ) \
816 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_7_PRICE, 0x04F6, "Tier 15 Block 7 Price" ) \
817 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_8_PRICE, 0x04F7, "Tier 15 Block 8 Price" ) \
818 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_9_PRICE, 0x04F8, "Tier 15 Block 9 Price" ) \
819 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_10_PRICE, 0x04F9, "Tier 15 Block 10 Price" ) \
820 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_11_PRICE, 0x04FA, "Tier 15 Block 11 Price" ) \
821 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_12_PRICE, 0x04FB, "Tier 15 Block 12 Price" ) \
822 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_13_PRICE, 0x04FC, "Tier 15 Block 13 Price" ) \
823 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_14_PRICE, 0x04FD, "Tier 15 Block 14 Price" ) \
824 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_15_PRICE, 0x04FE, "Tier 15 Block 15 Price" ) \
825 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_16_PRICE, 0x04FF, "Tier 15 Block 16 Price" ) \
826 /* Extended Price Information (Delivered) Set */ \
827 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_16, 0x050F, "Price Tier 16" ) \
828 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_17, 0x0510, "Price Tier 17" ) \
829 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_18, 0x0511, "Price Tier 18" ) \
830 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_19, 0x0512, "Price Tier 19" ) \
831 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_20, 0x0513, "Price Tier 20" ) \
832 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_21, 0x0514, "Price Tier 21" ) \
833 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_22, 0x0515, "Price Tier 22" ) \
834 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_23, 0x0516, "Price Tier 23" ) \
835 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_24, 0x0517, "Price Tier 24" ) \
836 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_25, 0x0518, "Price Tier 25" ) \
837 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_26, 0x0519, "Price Tier 26" ) \
838 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_27, 0x051A, "Price Tier 27" ) \
839 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_28, 0x051B, "Price Tier 28" ) \
840 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_29, 0x051C, "Price Tier 29" ) \
841 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_30, 0x051D, "Price Tier 30" ) \
842 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_31, 0x051E, "Price Tier 31" ) \
843 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_32, 0x051F, "Price Tier 32" ) \
844 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_33, 0x0520, "Price Tier 33" ) \
845 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_34, 0x0521, "Price Tier 34" ) \
846 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_35, 0x0522, "Price Tier 35" ) \
847 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_36, 0x0523, "Price Tier 36" ) \
848 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_37, 0x0524, "Price Tier 37" ) \
849 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_38, 0x0525, "Price Tier 38" ) \
850 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_39, 0x0526, "Price Tier 39" ) \
851 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_40, 0x0527, "Price Tier 40" ) \
852 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_41, 0x0528, "Price Tier 41" ) \
853 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_42, 0x0529, "Price Tier 42" ) \
854 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_43, 0x052A, "Price Tier 43" ) \
855 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_44, 0x052B, "Price Tier 44" ) \
856 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_45, 0x052C, "Price Tier 45" ) \
857 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_46, 0x052D, "Price Tier 46" ) \
858 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_47, 0x052E, "Price Tier 47" ) \
859 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_48, 0x052F, "Price Tier 48" ) \
860 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CPP_1_PRICE, 0x05FE, "CPP 1 Price" ) \
861 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CPP_2_PRICE, 0x05FF, "CPP 2 Price" ) \
862 /* Tariff Information Set (Delivered) */ \
863 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TARIFF_LABEL, 0x0610, "Tariff Label" ) \
864 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NUMBER_OF_PRICE_TIERS_IN_USE, 0x0611, "Number of Price Tiers in Use" ) \
865 XXX(ZBEE_ZCL_ATTR_ID_PRICE_NUMBER_OF_BLOCK_THRES_IN_USE, 0x0612, "Number of Block Thresholds in Use" ) \
866 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_BLOCK_MODE, 0x0613, "Tier Block Mode" ) \
867 XXX(ZBEE_ZCL_ATTR_ID_PRICE_UNIT_OF_MEASURE, 0x0615, "Unit of Measure" ) \
868 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENCY, 0x0616, "Currency" ) \
869 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TRAILING_DIGIT, 0x0617, "Price Trailing Digit" ) \
870 XXX(ZBEE_ZCL_ATTR_ID_PRICE_TARIFF_RESOLUTION_PERIOD, 0x0619, "Tariff Resolution Period" ) \
871 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2, 0x0620, "CO2" ) \
872 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2_UNIT, 0x0621, "CO2 Unit" ) \
873 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2_TRAILING_DIGIT, 0x0622, "CO2 Trailing Digit" ) \
874 /* Billing Information (Delivered) Attribute Set */ \
875 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENT_BILLING_PERIOD_START, 0x0700, "Current Billing Period Start" ) \
876 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENT_BILLING_PERIOD_DURATION, 0x0701, "Current Billing Period Duration" ) \
877 XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_START, 0x0702, "Last Billing Period Start" ) \
878 XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_DURATION, 0x0703, "Last Billing Period Duration" ) \
879 XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_CON_BILL, 0x0704, "Last Billing Period Consolidated Bill" ) \
880 /* Credit Payment Attribute Set */ \
881 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DUE_DATE, 0x0800, "Credit Payment Due Date" ) \
882 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_STATUS, 0x0801, "Credit Payment Status" ) \
883 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_OVER_DUE_AMOUNT, 0x0802, "Credit Payment Over Due Amount" ) \
884 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PAYMENT_DISCOUNT, 0x080A, "Payment Discount" ) \
885 XXX(ZBEE_ZCL_ATTR_ID_PRICE_PAYMENT_DISCOUNT_PERIOD, 0x080B, "Payment Discount Period" ) \
886 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_1, 0x0810, "Credit Payment #1" ) \
887 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_1, 0x0811, "Credit Payment Date #1" ) \
888 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_1, 0x0812, "Credit Payment Ref #1" ) \
889 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_2, 0x0820, "Credit Payment #2" ) \
890 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_2, 0x0821, "Credit Payment Date #2" ) \
891 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_2, 0x0822, "Credit Payment Ref #2" ) \
892 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_3, 0x0830, "Credit Payment #3" ) \
893 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_3, 0x0831, "Credit Payment Date #3" ) \
894 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_3, 0x0832, "Credit Payment Ref #3" ) \
895 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_4, 0x0840, "Credit Payment #4" ) \
896 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_4, 0x0841, "Credit Payment Date #4" ) \
897 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_4, 0x0842, "Credit Payment Ref #4" ) \
898 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_5, 0x0850, "Credit Payment #5" ) \
899 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_5, 0x0851, "Credit Payment Date #5" ) \
900 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_5, 0x0852, "Credit Payment Ref #5" ) \
901 /* Received Tier Label Attribute Set */ \
902 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_1_PRICE_LABEL, 0x8000, "Received Tier 1 Price label" ) \
903 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_2_PRICE_LABEL, 0x8001, "Received Tier 2 Price label" ) \
904 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_3_PRICE_LABEL, 0x8002, "Received Tier 3 Price label" ) \
905 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_4_PRICE_LABEL, 0x8003, "Received Tier 4 Price label" ) \
906 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_5_PRICE_LABEL, 0x8004, "Received Tier 5 Price label" ) \
907 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_6_PRICE_LABEL, 0x8005, "Received Tier 6 Price label" ) \
908 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_7_PRICE_LABEL, 0x8006, "Received Tier 7 Price label" ) \
909 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_8_PRICE_LABEL, 0x8007, "Received Tier 8 Price label" ) \
910 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_9_PRICE_LABEL, 0x8008, "Received Tier 9 Price label" ) \
911 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_10_PRICE_LABEL, 0x8009, "Received Tier 10 Price label" ) \
912 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_11_PRICE_LABEL, 0x800A, "Received Tier 11 Price label" ) \
913 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_12_PRICE_LABEL, 0x800B, "Received Tier 12 Price label" ) \
914 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_13_PRICE_LABEL, 0x800C, "Received Tier 13 Price label" ) \
915 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_14_PRICE_LABEL, 0x800D, "Received Tier 14 Price label" ) \
916 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_15_PRICE_LABEL, 0x800E, "Received Tier 15 Price label" ) \
917 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_16_PRICE_LABEL, 0x800F, "Received Tier 16 Price label" ) \
918 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_17_PRICE_LABEL, 0x8010, "Received Tier 17 Price label" ) \
919 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_18_PRICE_LABEL, 0x8011, "Received Tier 18 Price label" ) \
920 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_19_PRICE_LABEL, 0x8012, "Received Tier 19 Price label" ) \
921 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_20_PRICE_LABEL, 0x8013, "Received Tier 20 Price label" ) \
922 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_21_PRICE_LABEL, 0x8014, "Received Tier 21 Price label" ) \
923 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_22_PRICE_LABEL, 0x8015, "Received Tier 22 Price label" ) \
924 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_23_PRICE_LABEL, 0x8016, "Received Tier 23 Price label" ) \
925 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_24_PRICE_LABEL, 0x8017, "Received Tier 24 Price label" ) \
926 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_25_PRICE_LABEL, 0x8018, "Received Tier 25 Price label" ) \
927 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_26_PRICE_LABEL, 0x8019, "Received Tier 26 Price label" ) \
928 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_27_PRICE_LABEL, 0x801A, "Received Tier 27 Price label" ) \
929 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_28_PRICE_LABEL, 0x801B, "Received Tier 28 Price label" ) \
930 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_29_PRICE_LABEL, 0x801C, "Received Tier 29 Price label" ) \
931 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_30_PRICE_LABEL, 0x801D, "Received Tier 30 Price label" ) \
932 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_31_PRICE_LABEL, 0x801E, "Received Tier 31 Price label" ) \
933 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_32_PRICE_LABEL, 0x801F, "Received Tier 32 Price label" ) \
934 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_33_PRICE_LABEL, 0x8020, "Received Tier 33 Price label" ) \
935 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_34_PRICE_LABEL, 0x8021, "Received Tier 34 Price label" ) \
936 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_35_PRICE_LABEL, 0x8022, "Received Tier 35 Price label" ) \
937 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_36_PRICE_LABEL, 0x8023, "Received Tier 36 Price label" ) \
938 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_37_PRICE_LABEL, 0x8024, "Received Tier 37 Price label" ) \
939 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_38_PRICE_LABEL, 0x8025, "Received Tier 38 Price label" ) \
940 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_39_PRICE_LABEL, 0x8026, "Received Tier 39 Price label" ) \
941 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_40_PRICE_LABEL, 0x8027, "Received Tier 40 Price label" ) \
942 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_41_PRICE_LABEL, 0x8028, "Received Tier 41 Price label" ) \
943 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_42_PRICE_LABEL, 0x8029, "Received Tier 42 Price label" ) \
944 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_43_PRICE_LABEL, 0x802A, "Received Tier 43 Price label" ) \
945 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_44_PRICE_LABEL, 0x802B, "Received Tier 44 Price label" ) \
946 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_45_PRICE_LABEL, 0x802C, "Received Tier 45 Price label" ) \
947 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_46_PRICE_LABEL, 0x802D, "Received Tier 46 Price label" ) \
948 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_47_PRICE_LABEL, 0x802E, "Received Tier 47 Price label" ) \
949 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_48_PRICE_LABEL, 0x802F, "Received Tier 48 Price label" ) \
950 /* Received Block Threshold Attribute Set */ \
951 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_1_THRESHOLD, 0x8100, "Received Block 1 Threshold" ) \
952 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_2_THRESHOLD, 0x8101, "Received Block 2 Threshold" ) \
953 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_3_THRESHOLD, 0x8102, "Received Block 3 Threshold" ) \
954 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_4_THRESHOLD, 0x8103, "Received Block 4 Threshold" ) \
955 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_5_THRESHOLD, 0x8104, "Received Block 5 Threshold" ) \
956 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_6_THRESHOLD, 0x8105, "Received Block 6 Threshold" ) \
957 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_7_THRESHOLD, 0x8106, "Received Block 7 Threshold" ) \
958 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_8_THRESHOLD, 0x8107, "Received Block 8 Threshold" ) \
959 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_9_THRESHOLD, 0x8108, "Received Block 9 Threshold" ) \
960 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_10_THRESHOLD, 0x8109, "Received Block 10 Threshold" ) \
961 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_11_THRESHOLD, 0x810A, "Received Block 11 Threshold" ) \
962 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_12_THRESHOLD, 0x810B, "Received Block 12 Threshold" ) \
963 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_13_THRESHOLD, 0x810C, "Received Block 13 Threshold" ) \
964 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_14_THRESHOLD, 0x810D, "Received Block 14 Threshold" ) \
965 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_15_THRESHOLD, 0x810E, "Received Block 15 Threshold" ) \
966 /* Received Block Period Attribute Set */ \
967 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_START_OF_BLOCK_PERIOD, 0x8200, "Received Start of Block Period" ) \
968 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_PERIOD_DURATION, 0x8201, "Received Block Period Duration" ) \
969 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_THRESHOLD_MULTIPLIER, 0x8202, "Received Threshold Multiplier" ) \
970 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_THRESHOLD_DIVISOR, 0x8203, "Received Threshold Divisor" ) \
971 /* Received Block Price Information Attribute Set */ \
972 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_1_PRICE, 0x8400, "Rx No Tier Block 1 Price" ) \
973 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_2_PRICE, 0x8401, "Rx No Tier Block 2 Price" ) \
974 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_3_PRICE, 0x8402, "Rx No Tier Block 3 Price" ) \
975 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_4_PRICE, 0x8403, "Rx No Tier Block 4 Price" ) \
976 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_5_PRICE, 0x8404, "Rx No Tier Block 5 Price" ) \
977 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_6_PRICE, 0x8405, "Rx No Tier Block 6 Price" ) \
978 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_7_PRICE, 0x8406, "Rx No Tier Block 7 Price" ) \
979 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_8_PRICE, 0x8407, "Rx No Tier Block 8 Price" ) \
980 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_9_PRICE, 0x8408, "Rx No Tier Block 9 Price" ) \
981 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_10_PRICE, 0x8409, "Rx No Tier Block 10 Price" ) \
982 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_11_PRICE, 0x840A, "Rx No Tier Block 11 Price" ) \
983 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_12_PRICE, 0x840B, "Rx No Tier Block 12 Price" ) \
984 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_13_PRICE, 0x840C, "Rx No Tier Block 13 Price" ) \
985 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_14_PRICE, 0x840D, "Rx No Tier Block 14 Price" ) \
986 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_15_PRICE, 0x840E, "Rx No Tier Block 15 Price" ) \
987 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_16_PRICE, 0x840F, "Rx No Tier Block 16 Price" ) \
988 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_1_PRICE, 0x8410, "Rx Tier 1 Block 1 Price" ) \
989 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_2_PRICE, 0x8411, "Rx Tier 1 Block 2 Price" ) \
990 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_3_PRICE, 0x8412, "Rx Tier 1 Block 3 Price" ) \
991 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_4_PRICE, 0x8413, "Rx Tier 1 Block 4 Price" ) \
992 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_5_PRICE, 0x8414, "Rx Tier 1 Block 5 Price" ) \
993 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_6_PRICE, 0x8415, "Rx Tier 1 Block 6 Price" ) \
994 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_7_PRICE, 0x8416, "Rx Tier 1 Block 7 Price" ) \
995 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_8_PRICE, 0x8417, "Rx Tier 1 Block 8 Price" ) \
996 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_9_PRICE, 0x8418, "Rx Tier 1 Block 9 Price" ) \
997 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_10_PRICE, 0x8419, "Rx Tier 1 Block 10 Price" ) \
998 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_11_PRICE, 0x841A, "Rx Tier 1 Block 11 Price" ) \
999 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_12_PRICE, 0x841B, "Rx Tier 1 Block 12 Price" ) \
1000 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_13_PRICE, 0x841C, "Rx Tier 1 Block 13 Price" ) \
1001 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_14_PRICE, 0x841D, "Rx Tier 1 Block 14 Price" ) \
1002 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_15_PRICE, 0x841E, "Rx Tier 1 Block 15 Price" ) \
1003 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_16_PRICE, 0x841F, "Rx Tier 1 Block 16 Price" ) \
1004 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_1_PRICE, 0x8420, "Rx Tier 2 Block 1 Price" ) \
1005 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_2_PRICE, 0x8421, "Rx Tier 2 Block 2 Price" ) \
1006 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_3_PRICE, 0x8422, "Rx Tier 2 Block 3 Price" ) \
1007 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_4_PRICE, 0x8423, "Rx Tier 2 Block 4 Price" ) \
1008 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_5_PRICE, 0x8424, "Rx Tier 2 Block 5 Price" ) \
1009 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_6_PRICE, 0x8425, "Rx Tier 2 Block 6 Price" ) \
1010 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_7_PRICE, 0x8426, "Rx Tier 2 Block 7 Price" ) \
1011 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_8_PRICE, 0x8427, "Rx Tier 2 Block 8 Price" ) \
1012 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_9_PRICE, 0x8428, "Rx Tier 2 Block 9 Price" ) \
1013 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_10_PRICE, 0x8429, "Rx Tier 2 Block 10 Price" ) \
1014 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_11_PRICE, 0x842A, "Rx Tier 2 Block 11 Price" ) \
1015 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_12_PRICE, 0x842B, "Rx Tier 2 Block 12 Price" ) \
1016 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_13_PRICE, 0x842C, "Rx Tier 2 Block 13 Price" ) \
1017 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_14_PRICE, 0x842D, "Rx Tier 2 Block 14 Price" ) \
1018 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_15_PRICE, 0x842E, "Rx Tier 2 Block 15 Price" ) \
1019 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_16_PRICE, 0x842F, "Rx Tier 2 Block 16 Price" ) \
1020 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_1_PRICE, 0x8430, "Rx Tier 3 Block 1 Price" ) \
1021 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_2_PRICE, 0x8431, "Rx Tier 3 Block 2 Price" ) \
1022 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_3_PRICE, 0x8432, "Rx Tier 3 Block 3 Price" ) \
1023 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_4_PRICE, 0x8433, "Rx Tier 3 Block 4 Price" ) \
1024 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_5_PRICE, 0x8434, "Rx Tier 3 Block 5 Price" ) \
1025 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_6_PRICE, 0x8435, "Rx Tier 3 Block 6 Price" ) \
1026 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_7_PRICE, 0x8436, "Rx Tier 3 Block 7 Price" ) \
1027 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_8_PRICE, 0x8437, "Rx Tier 3 Block 8 Price" ) \
1028 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_9_PRICE, 0x8438, "Rx Tier 3 Block 9 Price" ) \
1029 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_10_PRICE, 0x8439, "Rx Tier 3 Block 10 Price" ) \
1030 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_11_PRICE, 0x843A, "Rx Tier 3 Block 11 Price" ) \
1031 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_12_PRICE, 0x843B, "Rx Tier 3 Block 12 Price" ) \
1032 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_13_PRICE, 0x843C, "Rx Tier 3 Block 13 Price" ) \
1033 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_14_PRICE, 0x843D, "Rx Tier 3 Block 14 Price" ) \
1034 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_15_PRICE, 0x843E, "Rx Tier 3 Block 15 Price" ) \
1035 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_16_PRICE, 0x843F, "Rx Tier 3 Block 16 Price" ) \
1036 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_1_PRICE, 0x8440, "Rx Tier 4 Block 1 Price" ) \
1037 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_2_PRICE, 0x8441, "Rx Tier 4 Block 2 Price" ) \
1038 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_3_PRICE, 0x8442, "Rx Tier 4 Block 3 Price" ) \
1039 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_4_PRICE, 0x8443, "Rx Tier 4 Block 4 Price" ) \
1040 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_5_PRICE, 0x8444, "Rx Tier 4 Block 5 Price" ) \
1041 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_6_PRICE, 0x8445, "Rx Tier 4 Block 6 Price" ) \
1042 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_7_PRICE, 0x8446, "Rx Tier 4 Block 7 Price" ) \
1043 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_8_PRICE, 0x8447, "Rx Tier 4 Block 8 Price" ) \
1044 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_9_PRICE, 0x8448, "Rx Tier 4 Block 9 Price" ) \
1045 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_10_PRICE, 0x8449, "Rx Tier 4 Block 10 Price" ) \
1046 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_11_PRICE, 0x844A, "Rx Tier 4 Block 11 Price" ) \
1047 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_12_PRICE, 0x844B, "Rx Tier 4 Block 12 Price" ) \
1048 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_13_PRICE, 0x844C, "Rx Tier 4 Block 13 Price" ) \
1049 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_14_PRICE, 0x844D, "Rx Tier 4 Block 14 Price" ) \
1050 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_15_PRICE, 0x844E, "Rx Tier 4 Block 15 Price" ) \
1051 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_16_PRICE, 0x844F, "Rx Tier 4 Block 16 Price" ) \
1052 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_1_PRICE, 0x8450, "Rx Tier 5 Block 1 Price" ) \
1053 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_2_PRICE, 0x8451, "Rx Tier 5 Block 2 Price" ) \
1054 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_3_PRICE, 0x8452, "Rx Tier 5 Block 3 Price" ) \
1055 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_4_PRICE, 0x8453, "Rx Tier 5 Block 4 Price" ) \
1056 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_5_PRICE, 0x8454, "Rx Tier 5 Block 5 Price" ) \
1057 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_6_PRICE, 0x8455, "Rx Tier 5 Block 6 Price" ) \
1058 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_7_PRICE, 0x8456, "Rx Tier 5 Block 7 Price" ) \
1059 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_8_PRICE, 0x8457, "Rx Tier 5 Block 8 Price" ) \
1060 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_9_PRICE, 0x8458, "Rx Tier 5 Block 9 Price" ) \
1061 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_10_PRICE, 0x8459, "Rx Tier 5 Block 10 Price" ) \
1062 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_11_PRICE, 0x845A, "Rx Tier 5 Block 11 Price" ) \
1063 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_12_PRICE, 0x845B, "Rx Tier 5 Block 12 Price" ) \
1064 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_13_PRICE, 0x845C, "Rx Tier 5 Block 13 Price" ) \
1065 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_14_PRICE, 0x845D, "Rx Tier 5 Block 14 Price" ) \
1066 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_15_PRICE, 0x845E, "Rx Tier 5 Block 15 Price" ) \
1067 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_16_PRICE, 0x845F, "Rx Tier 5 Block 16 Price" ) \
1068 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_1_PRICE, 0x8460, "Rx Tier 6 Block 1 Price" ) \
1069 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_2_PRICE, 0x8461, "Rx Tier 6 Block 2 Price" ) \
1070 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_3_PRICE, 0x8462, "Rx Tier 6 Block 3 Price" ) \
1071 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_4_PRICE, 0x8463, "Rx Tier 6 Block 4 Price" ) \
1072 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_5_PRICE, 0x8464, "Rx Tier 6 Block 5 Price" ) \
1073 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_6_PRICE, 0x8465, "Rx Tier 6 Block 6 Price" ) \
1074 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_7_PRICE, 0x8466, "Rx Tier 6 Block 7 Price" ) \
1075 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_8_PRICE, 0x8467, "Rx Tier 6 Block 8 Price" ) \
1076 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_9_PRICE, 0x8468, "Rx Tier 6 Block 9 Price" ) \
1077 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_10_PRICE, 0x8469, "Rx Tier 6 Block 10 Price" ) \
1078 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_11_PRICE, 0x846A, "Rx Tier 6 Block 11 Price" ) \
1079 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_12_PRICE, 0x846B, "Rx Tier 6 Block 12 Price" ) \
1080 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_13_PRICE, 0x846C, "Rx Tier 6 Block 13 Price" ) \
1081 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_14_PRICE, 0x846D, "Rx Tier 6 Block 14 Price" ) \
1082 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_15_PRICE, 0x846E, "Rx Tier 6 Block 15 Price" ) \
1083 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_16_PRICE, 0x846F, "Rx Tier 6 Block 16 Price" ) \
1084 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_1_PRICE, 0x8470, "Rx Tier 7 Block 1 Price" ) \
1085 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_2_PRICE, 0x8471, "Rx Tier 7 Block 2 Price" ) \
1086 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_3_PRICE, 0x8472, "Rx Tier 7 Block 3 Price" ) \
1087 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_4_PRICE, 0x8473, "Rx Tier 7 Block 4 Price" ) \
1088 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_5_PRICE, 0x8474, "Rx Tier 7 Block 5 Price" ) \
1089 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_6_PRICE, 0x8475, "Rx Tier 7 Block 6 Price" ) \
1090 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_7_PRICE, 0x8476, "Rx Tier 7 Block 7 Price" ) \
1091 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_8_PRICE, 0x8477, "Rx Tier 7 Block 8 Price" ) \
1092 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_9_PRICE, 0x8478, "Rx Tier 7 Block 9 Price" ) \
1093 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_10_PRICE, 0x8479, "Rx Tier 7 Block 10 Price" ) \
1094 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_11_PRICE, 0x847A, "Rx Tier 7 Block 11 Price" ) \
1095 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_12_PRICE, 0x847B, "Rx Tier 7 Block 12 Price" ) \
1096 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_13_PRICE, 0x847C, "Rx Tier 7 Block 13 Price" ) \
1097 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_14_PRICE, 0x847D, "Rx Tier 7 Block 14 Price" ) \
1098 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_15_PRICE, 0x847E, "Rx Tier 7 Block 15 Price" ) \
1099 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_16_PRICE, 0x847F, "Rx Tier 7 Block 16 Price" ) \
1100 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_1_PRICE, 0x8480, "Rx Tier 8 Block 1 Price" ) \
1101 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_2_PRICE, 0x8481, "Rx Tier 8 Block 2 Price" ) \
1102 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_3_PRICE, 0x8482, "Rx Tier 8 Block 3 Price" ) \
1103 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_4_PRICE, 0x8483, "Rx Tier 8 Block 4 Price" ) \
1104 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_5_PRICE, 0x8484, "Rx Tier 8 Block 5 Price" ) \
1105 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_6_PRICE, 0x8485, "Rx Tier 8 Block 6 Price" ) \
1106 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_7_PRICE, 0x8486, "Rx Tier 8 Block 7 Price" ) \
1107 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_8_PRICE, 0x8487, "Rx Tier 8 Block 8 Price" ) \
1108 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_9_PRICE, 0x8488, "Rx Tier 8 Block 9 Price" ) \
1109 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_10_PRICE, 0x8489, "Rx Tier 8 Block 10 Price" ) \
1110 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_11_PRICE, 0x848A, "Rx Tier 8 Block 11 Price" ) \
1111 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_12_PRICE, 0x848B, "Rx Tier 8 Block 12 Price" ) \
1112 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_13_PRICE, 0x848C, "Rx Tier 8 Block 13 Price" ) \
1113 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_14_PRICE, 0x848D, "Rx Tier 8 Block 14 Price" ) \
1114 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_15_PRICE, 0x848E, "Rx Tier 8 Block 15 Price" ) \
1115 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_16_PRICE, 0x848F, "Rx Tier 8 Block 16 Price" ) \
1116 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_1_PRICE, 0x8490, "Rx Tier 9 Block 1 Price" ) \
1117 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_2_PRICE, 0x8491, "Rx Tier 9 Block 2 Price" ) \
1118 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_3_PRICE, 0x8492, "Rx Tier 9 Block 3 Price" ) \
1119 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_4_PRICE, 0x8493, "Rx Tier 9 Block 4 Price" ) \
1120 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_5_PRICE, 0x8494, "Rx Tier 9 Block 5 Price" ) \
1121 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_6_PRICE, 0x8495, "Rx Tier 9 Block 6 Price" ) \
1122 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_7_PRICE, 0x8496, "Rx Tier 9 Block 7 Price" ) \
1123 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_8_PRICE, 0x8497, "Rx Tier 9 Block 8 Price" ) \
1124 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_9_PRICE, 0x8498, "Rx Tier 9 Block 9 Price" ) \
1125 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_10_PRICE, 0x8499, "Rx Tier 9 Block 10 Price" ) \
1126 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_11_PRICE, 0x849A, "Rx Tier 9 Block 11 Price" ) \
1127 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_12_PRICE, 0x849B, "Rx Tier 9 Block 12 Price" ) \
1128 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_13_PRICE, 0x849C, "Rx Tier 9 Block 13 Price" ) \
1129 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_14_PRICE, 0x849D, "Rx Tier 9 Block 14 Price" ) \
1130 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_15_PRICE, 0x849E, "Rx Tier 9 Block 15 Price" ) \
1131 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_16_PRICE, 0x849F, "Rx Tier 9 Block 16 Price" ) \
1132 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_1_PRICE, 0x84A0, "Rx Tier 10 Block 1 Price" ) \
1133 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_2_PRICE, 0x84A1, "Rx Tier 10 Block 2 Price" ) \
1134 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_3_PRICE, 0x84A2, "Rx Tier 10 Block 3 Price" ) \
1135 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_4_PRICE, 0x84A3, "Rx Tier 10 Block 4 Price" ) \
1136 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_5_PRICE, 0x84A4, "Rx Tier 10 Block 5 Price" ) \
1137 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_6_PRICE, 0x84A5, "Rx Tier 10 Block 6 Price" ) \
1138 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_7_PRICE, 0x84A6, "Rx Tier 10 Block 7 Price" ) \
1139 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_8_PRICE, 0x84A7, "Rx Tier 10 Block 8 Price" ) \
1140 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_9_PRICE, 0x84A8, "Rx Tier 10 Block 9 Price" ) \
1141 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_10_PRICE, 0x84A9, "Rx Tier 10 Block 10 Price" ) \
1142 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_11_PRICE, 0x84AA, "Rx Tier 10 Block 11 Price" ) \
1143 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_12_PRICE, 0x84AB, "Rx Tier 10 Block 12 Price" ) \
1144 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_13_PRICE, 0x84AC, "Rx Tier 10 Block 13 Price" ) \
1145 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_14_PRICE, 0x84AD, "Rx Tier 10 Block 14 Price" ) \
1146 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_15_PRICE, 0x84AE, "Rx Tier 10 Block 15 Price" ) \
1147 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_16_PRICE, 0x84AF, "Rx Tier 10 Block 16 Price" ) \
1148 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_1_PRICE, 0x84B0, "Rx Tier 11 Block 1 Price" ) \
1149 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_2_PRICE, 0x84B1, "Rx Tier 11 Block 2 Price" ) \
1150 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_3_PRICE, 0x84B2, "Rx Tier 11 Block 3 Price" ) \
1151 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_4_PRICE, 0x84B3, "Rx Tier 11 Block 4 Price" ) \
1152 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_5_PRICE, 0x84B4, "Rx Tier 11 Block 5 Price" ) \
1153 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_6_PRICE, 0x84B5, "Rx Tier 11 Block 6 Price" ) \
1154 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_7_PRICE, 0x84B6, "Rx Tier 11 Block 7 Price" ) \
1155 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_8_PRICE, 0x84B7, "Rx Tier 11 Block 8 Price" ) \
1156 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_9_PRICE, 0x84B8, "Rx Tier 11 Block 9 Price" ) \
1157 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_10_PRICE, 0x84B9, "Rx Tier 11 Block 10 Price" ) \
1158 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_11_PRICE, 0x84BA, "Rx Tier 11 Block 11 Price" ) \
1159 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_12_PRICE, 0x84BB, "Rx Tier 11 Block 12 Price" ) \
1160 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_13_PRICE, 0x84BC, "Rx Tier 11 Block 13 Price" ) \
1161 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_14_PRICE, 0x84BD, "Rx Tier 11 Block 14 Price" ) \
1162 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_15_PRICE, 0x84BE, "Rx Tier 11 Block 15 Price" ) \
1163 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_16_PRICE, 0x84BF, "Rx Tier 11 Block 16 Price" ) \
1164 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_1_PRICE, 0x84C0, "Rx Tier 12 Block 1 Price" ) \
1165 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_2_PRICE, 0x84C1, "Rx Tier 12 Block 2 Price" ) \
1166 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_3_PRICE, 0x84C2, "Rx Tier 12 Block 3 Price" ) \
1167 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_4_PRICE, 0x84C3, "Rx Tier 12 Block 4 Price" ) \
1168 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_5_PRICE, 0x84C4, "Rx Tier 12 Block 5 Price" ) \
1169 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_6_PRICE, 0x84C5, "Rx Tier 12 Block 6 Price" ) \
1170 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_7_PRICE, 0x84C6, "Rx Tier 12 Block 7 Price" ) \
1171 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_8_PRICE, 0x84C7, "Rx Tier 12 Block 8 Price" ) \
1172 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_9_PRICE, 0x84C8, "Rx Tier 12 Block 9 Price" ) \
1173 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_10_PRICE, 0x84C9, "Rx Tier 12 Block 10 Price" ) \
1174 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_11_PRICE, 0x84CA, "Rx Tier 12 Block 11 Price" ) \
1175 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_12_PRICE, 0x84CB, "Rx Tier 12 Block 12 Price" ) \
1176 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_13_PRICE, 0x84CC, "Rx Tier 12 Block 13 Price" ) \
1177 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_14_PRICE, 0x84CD, "Rx Tier 12 Block 14 Price" ) \
1178 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_15_PRICE, 0x84CE, "Rx Tier 12 Block 15 Price" ) \
1179 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_16_PRICE, 0x84CF, "Rx Tier 12 Block 16 Price" ) \
1180 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_1_PRICE, 0x84D0, "Rx Tier 13 Block 1 Price" ) \
1181 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_2_PRICE, 0x84D1, "Rx Tier 13 Block 2 Price" ) \
1182 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_3_PRICE, 0x84D2, "Rx Tier 13 Block 3 Price" ) \
1183 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_4_PRICE, 0x84D3, "Rx Tier 13 Block 4 Price" ) \
1184 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_5_PRICE, 0x84D4, "Rx Tier 13 Block 5 Price" ) \
1185 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_6_PRICE, 0x84D5, "Rx Tier 13 Block 6 Price" ) \
1186 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_7_PRICE, 0x84D6, "Rx Tier 13 Block 7 Price" ) \
1187 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_8_PRICE, 0x84D7, "Rx Tier 13 Block 8 Price" ) \
1188 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_9_PRICE, 0x84D8, "Rx Tier 13 Block 9 Price" ) \
1189 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_10_PRICE, 0x84D9, "Rx Tier 13 Block 10 Price" ) \
1190 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_11_PRICE, 0x84DA, "Rx Tier 13 Block 11 Price" ) \
1191 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_12_PRICE, 0x84DB, "Rx Tier 13 Block 12 Price" ) \
1192 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_13_PRICE, 0x84DC, "Rx Tier 13 Block 13 Price" ) \
1193 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_14_PRICE, 0x84DD, "Rx Tier 13 Block 14 Price" ) \
1194 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_15_PRICE, 0x84DE, "Rx Tier 13 Block 15 Price" ) \
1195 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_16_PRICE, 0x84DF, "Rx Tier 13 Block 16 Price" ) \
1196 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_1_PRICE, 0x84E0, "Rx Tier 14 Block 1 Price" ) \
1197 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_2_PRICE, 0x84E1, "Rx Tier 14 Block 2 Price" ) \
1198 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_3_PRICE, 0x84E2, "Rx Tier 14 Block 3 Price" ) \
1199 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_4_PRICE, 0x84E3, "Rx Tier 14 Block 4 Price" ) \
1200 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_5_PRICE, 0x84E4, "Rx Tier 14 Block 5 Price" ) \
1201 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_6_PRICE, 0x84E5, "Rx Tier 14 Block 6 Price" ) \
1202 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_7_PRICE, 0x84E6, "Rx Tier 14 Block 7 Price" ) \
1203 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_8_PRICE, 0x84E7, "Rx Tier 14 Block 8 Price" ) \
1204 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_9_PRICE, 0x84E8, "Rx Tier 14 Block 9 Price" ) \
1205 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_10_PRICE, 0x84E9, "Rx Tier 14 Block 10 Price" ) \
1206 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_11_PRICE, 0x84EA, "Rx Tier 14 Block 11 Price" ) \
1207 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_12_PRICE, 0x84EB, "Rx Tier 14 Block 12 Price" ) \
1208 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_13_PRICE, 0x84EC, "Rx Tier 14 Block 13 Price" ) \
1209 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_14_PRICE, 0x84ED, "Rx Tier 14 Block 14 Price" ) \
1210 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_15_PRICE, 0x84EE, "Rx Tier 14 Block 15 Price" ) \
1211 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_16_PRICE, 0x84EF, "Rx Tier 14 Block 16 Price" ) \
1212 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_1_PRICE, 0x84F0, "Rx Tier 15 Block 1 Price" ) \
1213 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_2_PRICE, 0x84F1, "Rx Tier 15 Block 2 Price" ) \
1214 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_3_PRICE, 0x84F2, "Rx Tier 15 Block 3 Price" ) \
1215 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_4_PRICE, 0x84F3, "Rx Tier 15 Block 4 Price" ) \
1216 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_5_PRICE, 0x84F4, "Rx Tier 15 Block 5 Price" ) \
1217 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_6_PRICE, 0x84F5, "Rx Tier 15 Block 6 Price" ) \
1218 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_7_PRICE, 0x84F6, "Rx Tier 15 Block 7 Price" ) \
1219 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_8_PRICE, 0x84F7, "Rx Tier 15 Block 8 Price" ) \
1220 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_9_PRICE, 0x84F8, "Rx Tier 15 Block 9 Price" ) \
1221 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_10_PRICE, 0x84F9, "Rx Tier 15 Block 10 Price" ) \
1222 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_11_PRICE, 0x84FA, "Rx Tier 15 Block 11 Price" ) \
1223 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_12_PRICE, 0x84FB, "Rx Tier 15 Block 12 Price" ) \
1224 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_13_PRICE, 0x84FC, "Rx Tier 15 Block 13 Price" ) \
1225 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_14_PRICE, 0x84FD, "Rx Tier 15 Block 14 Price" ) \
1226 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_15_PRICE, 0x84FE, "Rx Tier 15 Block 15 Price" ) \
1227 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_16_PRICE, 0x84FF, "Rx Tier 15 Block 16 Price" ) \
1228 /* Received Extended Price Information Attribute Set */ \
1229 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_16, 0x850F, "Received Price Tier 16" ) \
1230 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_17, 0x8510, "Received Price Tier 17" ) \
1231 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_18, 0x8511, "Received Price Tier 18" ) \
1232 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_19, 0x8512, "Received Price Tier 19" ) \
1233 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_20, 0x8513, "Received Price Tier 20" ) \
1234 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_21, 0x8514, "Received Price Tier 21" ) \
1235 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_22, 0x8515, "Received Price Tier 22" ) \
1236 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_23, 0x8516, "Received Price Tier 23" ) \
1237 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_24, 0x8517, "Received Price Tier 24" ) \
1238 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_25, 0x8518, "Received Price Tier 25" ) \
1239 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_26, 0x8519, "Received Price Tier 26" ) \
1240 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_27, 0x851A, "Received Price Tier 27" ) \
1241 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_28, 0x851B, "Received Price Tier 28" ) \
1242 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_29, 0x851C, "Received Price Tier 29" ) \
1243 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_30, 0x851D, "Received Price Tier 30" ) \
1244 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_31, 0x851E, "Received Price Tier 31" ) \
1245 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_32, 0x851F, "Received Price Tier 32" ) \
1246 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_33, 0x8520, "Received Price Tier 33" ) \
1247 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_34, 0x8521, "Received Price Tier 34" ) \
1248 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_35, 0x8522, "Received Price Tier 35" ) \
1249 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_36, 0x8523, "Received Price Tier 36" ) \
1250 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_37, 0x8524, "Received Price Tier 37" ) \
1251 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_38, 0x8525, "Received Price Tier 38" ) \
1252 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_39, 0x8526, "Received Price Tier 39" ) \
1253 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_40, 0x8527, "Received Price Tier 40" ) \
1254 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_41, 0x8528, "Received Price Tier 41" ) \
1255 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_42, 0x8529, "Received Price Tier 42" ) \
1256 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_43, 0x852A, "Received Price Tier 43" ) \
1257 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_44, 0x852B, "Received Price Tier 44" ) \
1258 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_45, 0x852C, "Received Price Tier 45" ) \
1259 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_46, 0x852D, "Received Price Tier 46" ) \
1260 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_47, 0x852E, "Received Price Tier 47" ) \
1261 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_48, 0x852F, "Received Price Tier 48" ) \
1262 /* Received Tariff Information Attribute Set */ \
1263 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TARIFF_LABEL, 0x8610, "Received Tariff label" ) \
1264 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NUM_OF_PRICE_TIERS_IN_USE, 0x8611, "Received Number of Tariff Tiers in Use" ) \
1265 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NUM_OF_BLOCK_THRES_IN_USE, 0x8612, "Received Number of Block Thresholds in Use" ) \
1266 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_BLOCK_MODE, 0x8613, "Received Tier Block Mode" ) \
1267 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TARIFF_RES_PERIOD, 0x8615, "Received tariff Resolution Period" ) \
1268 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2, 0x8625, "Received CO2" ) \
1269 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2_UNIT, 0x8626, "Received CO2 Unit" ) \
1270 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2_TRAILING_DIGIT, 0x8627, "Received CO2 Trailing Digit" ) \
1271 /* Received Billing Information Attribute Set */ \
1272 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_CURRENT_BILLING_PERIOD_START, 0x8700, "Received Current Billing Period Start" ) \
1273 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_CURRENT_BILLING_PERIOD_DUR, 0x8701, "Received Current Billing Period Duration" ) \
1274 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_LAST_BILLING_PERIOD_START, 0x8702, "Received Last Billing Period Start" ) \
1275 XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_LAST_BILLING_PERIOD_CON_BILL, 0x8704, "Received Last Billing Period Consolidated Bill" ) \
1276 /* Smart Energy */ \
1277 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE, 0xFFFE, "Attribute Reporting Status" )
1279 VALUE_STRING_ENUM(zbee_zcl_price_attr_server_names
);
1280 VALUE_STRING_ARRAY(zbee_zcl_price_attr_server_names
);
1281 static value_string_ext zbee_zcl_price_attr_server_names_ext
= VALUE_STRING_EXT_INIT(zbee_zcl_price_attr_server_names
);
1283 #define zbee_zcl_price_attr_client_names_VALUE_STRING_LIST(XXX) \
1284 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_PRICE_INC_RND_MINUTES, 0x0000, "Price Increase Randomize Minutes" ) \
1285 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_PRICE_DEC_RND_MINUTES, 0x0001, "Price Decrease Randomize Minutes" ) \
1286 XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_COMMODITY_TYPE, 0x0002, "Commodity Type" ) \
1287 /* Smart Energy */ \
1288 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE_CLNT, 0xFFFE, "Attribute Reporting Status" )
1290 VALUE_STRING_ENUM(zbee_zcl_price_attr_client_names
);
1291 VALUE_STRING_ARRAY(zbee_zcl_price_attr_client_names
);
1293 /* Server Commands Received */
1294 #define zbee_zcl_price_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
1295 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENT_PRICE, 0x00, "Get Current Price" ) \
1296 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_SCHEDULED_PRICES, 0x01, "Get Scheduled Prices" ) \
1297 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_ACKNOWLEDGEMENT, 0x02, "Price Acknowledgement" ) \
1298 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_PERIOD, 0x03, "Get Block Period(s)" ) \
1299 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CONVERSION_FACTOR, 0x04, "Get Conversion Factor" ) \
1300 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CALORIFIC_VALUE, 0x05, "Get Calorific Value" ) \
1301 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_INFORMATION, 0x06, "Get Tariff Information" ) \
1302 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_MATRIX, 0x07, "Get Price Matrix" ) \
1303 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_THRESHOLDS, 0x08, "Get Block Thresholds" ) \
1304 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CO2_VALUE, 0x09, "Get CO2 Value" ) \
1305 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TIER_LABELS, 0x0A, "Get Tier Labels" ) \
1306 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BILLING_PERIOD, 0x0B, "Get Billing Period" ) \
1307 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CONSOLIDATED_BILL, 0x0C, "Get Consolidated Bill" ) \
1308 XXX(ZBEE_ZCL_CMD_ID_PRICE_CPP_EVENT_RESPONSE, 0x0D, "CPP Event Response" ) \
1309 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CREDIT_PAYMENT, 0x0E, "Get Credit Payment" ) \
1310 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENCY_CONVERSION, 0x0F, "Get Currency Conversion" ) \
1311 XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_CANCELLATION, 0x10, "Get Tariff Cancellation" )
1313 VALUE_STRING_ENUM(zbee_zcl_price_srv_rx_cmd_names
);
1314 VALUE_STRING_ARRAY(zbee_zcl_price_srv_rx_cmd_names
);
1316 /* Server Commands Generated */
1317 #define zbee_zcl_price_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
1318 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE, 0x00, "Publish Price" ) \
1319 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_PERIOD, 0x01, "Publish Block Period" ) \
1320 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONVERSION_FACTOR, 0x02, "Publish Conversion Factor" ) \
1321 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CALORIFIC_VALUE, 0x03, "Publish Calorific Value" ) \
1322 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TARIFF_INFORMATION, 0x04, "Publish Tariff Information" ) \
1323 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE_MATRIX, 0x05, "Publish Price Matrix" ) \
1324 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_THRESHOLDS, 0x06, "Publish Block Thresholds" ) \
1325 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CO2_VALUE, 0x07, "Publish CO2 Value" ) \
1326 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TIER_LABELS, 0x08, "Publish Tier Labels" ) \
1327 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BILLING_PERIOD, 0x09, "Publish Billing Period" ) \
1328 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONSOLIDATED_BILL, 0x0A, "Publish Consolidated Bill" ) \
1329 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CPP_EVENT, 0x0B, "Publish CPP Event" ) \
1330 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CREDIT_PAYMENT, 0x0C, "Publish Credit Payment" ) \
1331 XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CURRENCY_CONVERSION, 0x0D, "Publish Currency Conversion" ) \
1332 XXX(ZBEE_ZCL_CMD_ID_PRICE_CANCEL_TARIFF, 0x0E, "Cancel Tariff" )
1334 VALUE_STRING_ENUM(zbee_zcl_price_srv_tx_cmd_names
);
1335 VALUE_STRING_ARRAY(zbee_zcl_price_srv_tx_cmd_names
);
1337 /* Block Period Control Field BitMap - Price Acknowledgement */
1338 #define zbee_zcl_price_block_period_control_price_acknowledgement_names_VALUE_STRING_LIST(XXX) \
1339 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOLEDGEMENT_NOT_REQUIRED, 0x0, "Price Acknowledgement not required" ) \
1340 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOLEDGEMENT_REQUIRED, 0x1, "Price Acknowledgement required" )
1342 VALUE_STRING_ARRAY(zbee_zcl_price_block_period_control_price_acknowledgement_names
);
1344 /* Block Period Control Field BitMap - Repeating Block */
1345 #define zbee_zcl_price_block_period_control_repeating_block_names_VALUE_STRING_LIST(XXX) \
1346 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_NON_REPEATING, 0x0, "Non Repeating Block" ) \
1347 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_REPEATING, 0x1, "Repeating Block" )
1349 VALUE_STRING_ARRAY(zbee_zcl_price_block_period_control_repeating_block_names
);
1351 /* Block Period DurationTimebase Enumeration */
1352 #define zbee_zcl_price_block_period_duration_timebase_names_VALUE_STRING_LIST(XXX) \
1353 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_MINUTE, 0x0, "Minutes" ) \
1354 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_DAY, 0x1, "Days" ) \
1355 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_WEEK, 0x2, "Weeks" ) \
1356 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_MONTH, 0x3, "Months" )
1358 VALUE_STRING_ARRAY(zbee_zcl_price_block_period_duration_timebase_names
);
1360 /* Block Period Duration Control Enumeration */
1361 #define zbee_zcl_price_block_period_duration_control_names_VALUE_STRING_LIST(XXX) \
1362 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_START_OF_TIMEBASE, 0x0, "Start of Timebase" ) \
1363 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_END_OF_TIMEBASE, 0x1, "End of Timebase" ) \
1364 XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_NOT_SPECIFIED, 0x2, "Not Specified" )
1366 VALUE_STRING_ARRAY(zbee_zcl_price_block_period_duration_control_names
);
1368 /* Tariff Type Enumeration */
1369 #define zbee_zcl_price_tariff_type_names_VALUE_STRING_LIST(XXX) \
1370 XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_DELIVERED_TARIFF, 0x0, "Delivered Tariff" ) \
1371 XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_RECEIVED_TARIFF, 0x1, "Received Tariff" ) \
1372 XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_DELIVERED_AND_RECEIVED_TARIFF, 0x2, "delivered and Received Tariff" )
1374 VALUE_STRING_ARRAY(zbee_zcl_price_tariff_type_names
);
1376 /* Tariff Resolution Period Enumeration */
1377 #define zbee_zcl_price_tariff_resolution_period_names_VALUE_STRING_LIST(XXX) \
1378 XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED, 0x00, "Not Defined" ) \
1379 XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD, 0x01, "Block Period" ) \
1380 XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_1_DAY, 0x02, "1 Day" )
1382 VALUE_STRING_ARRAY(zbee_zcl_price_tariff_resolution_period_names
);
1384 /* Tariff Charging Scheme Enumeration */
1385 #define zbee_zcl_price_tariff_charging_scheme_names_VALUE_STRING_LIST(XXX) \
1386 XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_TOU_TARIFF, 0x0, "TOU Tariff" ) \
1387 XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TARIFF, 0x1, "Block Tariff" ) \
1388 XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TOU_WITH_COMMON_THRES, 0x2, "Block/TOU Tariff with common thresholds" ) \
1389 XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TOU_WITH_INDIV_TRHES, 0x3, "Block/TOU Tariff with individual thresholds per tier" )
1391 VALUE_STRING_ARRAY(zbee_zcl_price_tariff_charging_scheme_names
);
1394 #define ZBEE_ZCL_PRICE_TARIFF_TYPE 0x0F
1396 /* Trailing Digit and Price Tier */
1397 #define ZBEE_ZCL_PRICE_TIER 0x0F
1398 #define ZBEE_ZCL_PRICE_TRAILING_DIGIT 0xF0
1400 /* Number of Price Tiers and Register Tier */
1401 #define ZBEE_ZCL_PRICE_REGISTER_TIER 0x0F
1402 #define ZBEE_ZCL_PRICE_NUMBER_OF_PRICE_TIERS 0xF0
1404 /* Alternate Cost Trailing Digit */
1405 #define ZBEE_ZCL_PRICE_ALTERNATE_COST_TRAILING_DIGIT 0xF0
1407 /* Block Period Duration Type */
1408 #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE 0x0F
1409 #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL 0xF0
1411 /* Block Period Control Field BitMap */
1412 #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT 0x01
1413 #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK 0x02
1415 /* Conversion Factor Trailing Digit */
1416 #define ZBEE_ZCL_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT 0xF0
1418 /* Calorific Value Trailing Digit */
1419 #define ZBEE_ZCL_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT 0xF0
1421 /* Tariff Type / Charging Scheme */
1422 #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_TYPE 0x0F
1423 #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_CHARGING_SCHEME 0xF0
1425 /* Tariff Information Price Trailing Digit */
1426 #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_PRICE_TRAILING_DIGIT 0xF0
1428 /* Price Matrix Tier/Block ID */
1429 #define ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_BLOCK 0x0F
1430 #define ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_TIER 0xF0
1432 /* Block Thresholds Tier/Number of Block Thresholds */
1433 #define ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS 0x0F
1434 #define ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_TIER 0xF0
1436 /* CO2 Value Trailing Digit */
1437 #define ZBEE_ZCL_PRICE_CO2_VALUE_TRAILING_DIGIT 0xF0
1439 /* Billing Period Duration Type */
1440 #define ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_TIMEBASE 0x0F
1441 #define ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_CONTROL 0xF0
1443 /* Billing Period Tariff Type */
1444 #define ZBEE_ZCL_PRICE_BILLING_PERIOD_TARIFF_TYPE 0x0F
1446 /* Consolidated Bill Trailing Digit */
1447 #define ZBEE_ZCL_PRICE_CONSOLIDATED_BILL_TRAILING_DIGIT 0xF0
1449 /*************************/
1450 /* Function Declarations */
1451 /*************************/
1452 void proto_register_zbee_zcl_price(void);
1453 void proto_reg_handoff_zbee_zcl_price(void);
1455 /* Attribute Dissector Helpers */
1456 static void dissect_zcl_price_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
1458 /* Command Dissector Helpers */
1459 static void dissect_zcl_price_get_current_price (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1460 static void dissect_zcl_price_get_scheduled_prices (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1461 static void dissect_zcl_price_get_price_acknowledgement (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1462 static void dissect_zcl_price_get_block_period (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1463 static void dissect_zcl_price_get_conversion_factor (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1464 static void dissect_zcl_price_get_calorific_value (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1465 static void dissect_zcl_price_get_tariff_information (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1466 static void dissect_zcl_price_get_price_matrix (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1467 static void dissect_zcl_price_get_block_thresholds (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1468 static void dissect_zcl_price_get_co2_value (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1469 static void dissect_zcl_price_get_tier_labels (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1470 static void dissect_zcl_price_get_billing_period (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1471 static void dissect_zcl_price_get_consolidated_bill (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1472 static void dissect_zcl_price_get_cpp_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1473 static void dissect_zcl_price_get_credit_payment (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1474 static void dissect_zcl_price_publish_price (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1475 static void dissect_zcl_price_publish_block_period (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1476 static void dissect_zcl_price_publish_conversion_factor (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1477 static void dissect_zcl_price_publish_calorific_value (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1478 static void dissect_zcl_price_publish_tariff_information (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1479 static void dissect_zcl_price_publish_price_matrix (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1480 static void dissect_zcl_price_publish_block_thresholds (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1481 static void dissect_zcl_price_publish_co2_value (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1482 static void dissect_zcl_price_publish_tier_labels (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1483 static void dissect_zcl_price_publish_billing_period (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1484 static void dissect_zcl_price_publish_consolidated_bill (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1485 static void dissect_zcl_price_publish_cpp_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1486 static void dissect_zcl_price_publish_credit_payment (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1487 static void dissect_zcl_price_publish_currency_conversion (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1488 static void dissect_zcl_price_publish_cancel_tariff (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
1490 /*************************/
1491 /* Global Variables */
1492 /*************************/
1494 /* Initialize the protocol and registered fields */
1495 static int proto_zbee_zcl_price
;
1497 static int hf_zbee_zcl_price_srv_tx_cmd_id
;
1498 static int hf_zbee_zcl_price_srv_rx_cmd_id
;
1499 static int hf_zbee_zcl_price_attr_server_id
;
1500 static int hf_zbee_zcl_price_attr_client_id
;
1501 static int hf_zbee_zcl_price_attr_reporting_status
;
1502 static int hf_zbee_zcl_price_provider_id
;
1503 static int hf_zbee_zcl_price_issuer_event_id
;
1504 static int hf_zbee_zcl_price_min_issuer_event_id
;
1505 static int hf_zbee_zcl_price_issuer_tariff_id
;
1506 static int hf_zbee_zcl_price_command_index
;
1507 static int hf_zbee_zcl_price_total_number_of_commands
;
1508 static int hf_zbee_zcl_price_number_of_commands
;
1509 static int hf_zbee_zcl_price_number_of_events
;
1510 static int hf_zbee_zcl_price_number_of_records
;
1511 static int hf_zbee_zcl_price_number_of_block_thresholds
;
1512 static int hf_zbee_zcl_price_number_of_generation_tiers
;
1513 static int hf_zbee_zcl_price_extended_number_of_price_tiers
;
1514 static int hf_zbee_zcl_price_command_options
;
1515 static int hf_zbee_zcl_price_control
;
1516 static int hf_zbee_zcl_price_tier
;
1517 static int hf_zbee_zcl_price_tariff_type_mask
;
1518 static int hf_zbee_zcl_price_tariff_type
;
1519 static int hf_zbee_zcl_price_tariff_resolution_period
;
1520 static int hf_zbee_zcl_price_cpp_auth
;
1521 static int hf_zbee_zcl_price_cpp_price_tier
;
1522 static int hf_zbee_zcl_price_rate_label
;
1523 static int hf_zbee_zcl_price_unit_of_measure
;
1524 static int hf_zbee_zcl_price_currency
;
1525 static int hf_zbee_zcl_price_trailing_digit_and_price_tier
;
1526 static int hf_zbee_zcl_price_trailing_digit
;
1527 static int hf_zbee_zcl_price_extended_price_tier
;
1528 static int hf_zbee_zcl_price_number_of_price_tiers_and_register_tier
;
1529 static int hf_zbee_zcl_price_register_tier
;
1530 static int hf_zbee_zcl_price_number_of_price_tiers
;
1531 static int hf_zbee_zcl_price_extended_register_tier
;
1532 static int hf_zbee_zcl_price_duration_in_minutes
;
1533 static int hf_zbee_zcl_price
;
1534 static int hf_zbee_zcl_price_ratio
;
1535 static int hf_zbee_zcl_price_generation_price
;
1536 static int hf_zbee_zcl_price_generation_price_ratio
;
1537 static int hf_zbee_zcl_price_generation_tier
;
1538 static int hf_zbee_zcl_price_alternate_cost_delivered
;
1539 static int hf_zbee_zcl_price_alternate_cost_unit
;
1540 static int hf_zbee_zcl_price_alternate_cost_trailing_digit_mask
;
1541 static int hf_zbee_zcl_price_alternate_cost_trailing_digit
;
1542 static int hf_zbee_zcl_price_start_time
;
1543 static int hf_zbee_zcl_price_earliest_start_time
;
1544 static int hf_zbee_zcl_price_latest_end_time
;
1545 static int hf_zbee_zcl_price_current_time
;
1546 static int hf_zbee_zcl_price_price_ack_time
;
1547 static int hf_zbee_zcl_price_block_period_start_time
;
1548 static int hf_zbee_zcl_price_block_period_duration
;
1549 static int hf_zbee_zcl_price_block_period_duration_type
;
1550 static int hf_zbee_zcl_price_block_period_duration_timebase
;
1551 static int hf_zbee_zcl_price_block_period_duration_control
;
1552 static int hf_zbee_zcl_price_block_period_control
;
1553 static int hf_zbee_zcl_price_block_period_control_price_acknowledgement
;
1554 static int hf_zbee_zcl_price_block_period_control_repeating_block
;
1555 static int hf_zbee_zcl_price_conversion_factor
;
1556 static int hf_zbee_zcl_price_conversion_factor_trailing_digit_mask
;
1557 static int hf_zbee_zcl_price_conversion_factor_trailing_digit
;
1558 static int hf_zbee_zcl_price_calorific_value
;
1559 static int hf_zbee_zcl_price_calorific_value_unit
;
1560 static int hf_zbee_zcl_price_calorific_value_trailing_digit_mask
;
1561 static int hf_zbee_zcl_price_calorific_value_trailing_digit
;
1562 static int hf_zbee_zcl_price_tariff_information_type_and_charging_scheme
;
1563 static int hf_zbee_zcl_price_tariff_information_type
;
1564 static int hf_zbee_zcl_price_tariff_information_charging_scheme
;
1565 static int hf_zbee_zcl_price_tariff_information_tariff_label
;
1566 static int hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use
;
1567 static int hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use
;
1568 static int hf_zbee_zcl_price_tariff_information_price_trailing_digit_mask
;
1569 static int hf_zbee_zcl_price_tariff_information_price_trailing_digit
;
1570 static int hf_zbee_zcl_price_tariff_information_standing_charge
;
1571 static int hf_zbee_zcl_price_tariff_information_tier_block_mode
;
1572 static int hf_zbee_zcl_price_tariff_information_block_threshold_multiplier
;
1573 static int hf_zbee_zcl_price_tariff_information_block_threshold_divisor
;
1574 static int hf_zbee_zcl_price_price_matrix_sub_payload_control
;
1575 static int hf_zbee_zcl_price_price_matrix_tier_block_id
;
1576 static int hf_zbee_zcl_price_price_matrix_tier_block_id_block
;
1577 static int hf_zbee_zcl_price_price_matrix_tier_block_id_tier
;
1578 static int hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier
;
1579 static int hf_zbee_zcl_price_price_matrix_price
;
1580 static int hf_zbee_zcl_price_block_thresholds_sub_payload_control
;
1581 static int hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
;
1582 static int hf_zbee_zcl_price_block_thresholds_tier
;
1583 static int hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds
;
1584 static int hf_zbee_zcl_price_block_thresholds_block_threshold
;
1585 static int hf_zbee_zcl_price_co2_value
;
1586 static int hf_zbee_zcl_price_co2_unit
;
1587 static int hf_zbee_zcl_price_co2_value_trailing_digit_mask
;
1588 static int hf_zbee_zcl_price_co2_value_trailing_digit
;
1589 static int hf_zbee_zcl_price_tier_labels_number_of_labels
;
1590 static int hf_zbee_zcl_price_tier_labels_tier_id
;
1591 static int hf_zbee_zcl_price_tier_labels_tier_label
;
1592 static int hf_zbee_zcl_price_billing_period_start_time
;
1593 static int hf_zbee_zcl_price_billing_period_duration
;
1594 static int hf_zbee_zcl_price_billing_period_duration_type
;
1595 static int hf_zbee_zcl_price_billing_period_duration_timebase
;
1596 static int hf_zbee_zcl_price_billing_period_duration_control
;
1597 static int hf_zbee_zcl_price_consolidated_bill
;
1598 static int hf_zbee_zcl_price_consolidated_bill_trailing_digit_mask
;
1599 static int hf_zbee_zcl_price_consolidated_bill_trailing_digit
;
1600 static int hf_zbee_zcl_price_credit_payment_due_date
;
1601 static int hf_zbee_zcl_price_credit_payment_overdue_amount
;
1602 static int hf_zbee_zcl_price_credit_payment_status
;
1603 static int hf_zbee_zcl_price_credit_payment
;
1604 static int hf_zbee_zcl_price_credit_payment_date
;
1605 static int hf_zbee_zcl_price_credit_payment_ref
;
1606 static int hf_zbee_zcl_price_old_currency
;
1607 static int hf_zbee_zcl_price_new_currency
;
1608 static int hf_zbee_zcl_price_currency_change_control_flags
;
1610 /* Initialize the subtree pointers */
1611 static int ett_zbee_zcl_price
;
1612 static int ett_zbee_zcl_price_tariff_type
;
1613 static int ett_zbee_zcl_price_trailing_digit_and_price_tier
;
1614 static int ett_zbee_zcl_price_number_of_price_tiers_and_register_tier
;
1615 static int ett_zbee_zcl_price_alternate_cost_trailing_digit
;
1616 static int ett_zbee_zcl_price_block_period_control
;
1617 static int ett_zbee_zcl_price_block_period_duration_type
;
1618 static int ett_zbee_zcl_price_conversion_factor_trailing_digit
;
1619 static int ett_zbee_zcl_price_calorific_value_trailing_digit
;
1620 static int ett_zbee_zcl_price_tariff_information_tariff_type_and_charging_scheme
;
1621 static int ett_zbee_zcl_price_tariff_information_price_trailing_digit
;
1622 static int ett_zbee_zcl_price_price_matrix_tier_block_id
;
1623 static int ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
;
1624 static int ett_zbee_zcl_price_co2_value_trailing_digit
;
1625 static int ett_zbee_zcl_price_billing_period_duration_type
;
1626 static int ett_zbee_zcl_price_consolidated_bill_trailing_digit
;
1628 static int * const zbee_zcl_price_billing_period_duration_type
[] = {
1629 &hf_zbee_zcl_price_billing_period_duration_timebase
,
1630 &hf_zbee_zcl_price_billing_period_duration_control
,
1634 static int * const zbee_zcl_price_block_period_duration_type
[] = {
1635 &hf_zbee_zcl_price_block_period_duration_timebase
,
1636 &hf_zbee_zcl_price_block_period_duration_control
,
1640 static int * const zbee_zcl_price_block_period_control
[] = {
1641 &hf_zbee_zcl_price_block_period_control_price_acknowledgement
,
1642 &hf_zbee_zcl_price_block_period_control_repeating_block
,
1646 static int * const zbee_zcl_price_tariff_type_mask
[] = {
1647 &hf_zbee_zcl_price_tariff_type
,
1651 /*************************/
1652 /* Function Bodies */
1653 /*************************/
1656 *This function is called by ZCL foundation dissector in order to decode
1658 *@param tree pointer to data tree Wireshark uses to display packet.
1659 *@param tvb pointer to buffer containing raw packet.
1660 *@param offset pointer to buffer offset
1661 *@param attr_id attribute identifier
1662 *@param data_type attribute data type
1663 *@param client_attr ZCL client
1666 dissect_zcl_price_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
1669 /* applies to all SE clusters */
1670 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE
:
1671 proto_tree_add_item(tree
, hf_zbee_zcl_price_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
1675 default: /* Catch all */
1676 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
1679 } /*dissect_zcl_price_attr_data*/
1682 *ZigBee ZCL Price cluster dissector for wireshark.
1684 *@param tvb pointer to buffer containing raw packet.
1685 *@param pinfo pointer to packet information fields
1686 *@param tree pointer to data tree Wireshark uses to display packet.
1689 dissect_zbee_zcl_price(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
1691 proto_tree
*payload_tree
;
1692 zbee_zcl_packet
*zcl
;
1693 unsigned offset
= 0;
1697 /* Reject the packet if data is NULL */
1700 zcl
= (zbee_zcl_packet
*)data
;
1701 cmd_id
= zcl
->cmd_id
;
1703 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
1704 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
1705 /* Append the command name to the info column. */
1706 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
1707 val_to_str_const(cmd_id
, zbee_zcl_price_srv_rx_cmd_names
, "Unknown Command"),
1710 /* Add the command ID. */
1711 proto_tree_add_uint(tree
, hf_zbee_zcl_price_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
1713 /* Check is this command has a payload, than add the payload tree */
1714 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
1716 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_price
, NULL
, "Payload");
1718 /* Call the appropriate command dissector */
1721 case ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENT_PRICE
:
1722 dissect_zcl_price_get_current_price(tvb
, payload_tree
, &offset
);
1725 case ZBEE_ZCL_CMD_ID_PRICE_GET_SCHEDULED_PRICES
:
1726 dissect_zcl_price_get_scheduled_prices(tvb
, payload_tree
, &offset
);
1729 case ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_ACKNOWLEDGEMENT
:
1730 dissect_zcl_price_get_price_acknowledgement(tvb
, payload_tree
, &offset
);
1733 case ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_PERIOD
:
1734 dissect_zcl_price_get_block_period(tvb
, payload_tree
, &offset
);
1737 case ZBEE_ZCL_CMD_ID_PRICE_GET_CONVERSION_FACTOR
:
1738 dissect_zcl_price_get_conversion_factor(tvb
, payload_tree
, &offset
);
1741 case ZBEE_ZCL_CMD_ID_PRICE_GET_CALORIFIC_VALUE
:
1742 dissect_zcl_price_get_calorific_value(tvb
, payload_tree
, &offset
);
1745 case ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_INFORMATION
:
1746 dissect_zcl_price_get_tariff_information(tvb
, payload_tree
, &offset
);
1749 case ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_MATRIX
:
1750 dissect_zcl_price_get_price_matrix(tvb
, payload_tree
, &offset
);
1753 case ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_THRESHOLDS
:
1754 dissect_zcl_price_get_block_thresholds(tvb
, payload_tree
, &offset
);
1757 case ZBEE_ZCL_CMD_ID_PRICE_GET_CO2_VALUE
:
1758 dissect_zcl_price_get_co2_value(tvb
, payload_tree
, &offset
);
1761 case ZBEE_ZCL_CMD_ID_PRICE_GET_TIER_LABELS
:
1762 dissect_zcl_price_get_tier_labels(tvb
, payload_tree
, &offset
);
1765 case ZBEE_ZCL_CMD_ID_PRICE_GET_BILLING_PERIOD
:
1766 dissect_zcl_price_get_billing_period(tvb
, payload_tree
, &offset
);
1769 case ZBEE_ZCL_CMD_ID_PRICE_GET_CONSOLIDATED_BILL
:
1770 dissect_zcl_price_get_consolidated_bill(tvb
, payload_tree
, &offset
);
1773 case ZBEE_ZCL_CMD_ID_PRICE_CPP_EVENT_RESPONSE
:
1774 dissect_zcl_price_get_cpp_event(tvb
, payload_tree
, &offset
);
1777 case ZBEE_ZCL_CMD_ID_PRICE_GET_CREDIT_PAYMENT
:
1778 dissect_zcl_price_get_credit_payment(tvb
, payload_tree
, &offset
);
1781 case ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENCY_CONVERSION
:
1785 case ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_CANCELLATION
:
1794 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
1795 /* Append the command name to the info column. */
1796 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
1797 val_to_str_const(cmd_id
, zbee_zcl_price_srv_tx_cmd_names
, "Unknown Command"),
1800 /* Add the command ID. */
1801 proto_tree_add_uint(tree
, hf_zbee_zcl_price_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
1803 /* Check is this command has a payload, than add the payload tree */
1804 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
1806 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_price
, NULL
, "Payload");
1808 /* Call the appropriate command dissector */
1811 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE
:
1812 dissect_zcl_price_publish_price(tvb
, payload_tree
, &offset
);
1815 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_PERIOD
:
1816 dissect_zcl_price_publish_block_period(tvb
, payload_tree
, &offset
);
1819 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONVERSION_FACTOR
:
1820 dissect_zcl_price_publish_conversion_factor(tvb
, payload_tree
, &offset
);
1823 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CALORIFIC_VALUE
:
1824 dissect_zcl_price_publish_calorific_value(tvb
, payload_tree
, &offset
);
1827 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TARIFF_INFORMATION
:
1828 dissect_zcl_price_publish_tariff_information(tvb
, payload_tree
, &offset
);
1831 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE_MATRIX
:
1832 dissect_zcl_price_publish_price_matrix(tvb
, payload_tree
, &offset
);
1835 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_THRESHOLDS
:
1836 dissect_zcl_price_publish_block_thresholds(tvb
, payload_tree
, &offset
);
1839 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CO2_VALUE
:
1840 dissect_zcl_price_publish_co2_value(tvb
, payload_tree
, &offset
);
1843 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TIER_LABELS
:
1844 dissect_zcl_price_publish_tier_labels(tvb
, payload_tree
, &offset
);
1847 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BILLING_PERIOD
:
1848 dissect_zcl_price_publish_billing_period(tvb
, payload_tree
, &offset
);
1851 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONSOLIDATED_BILL
:
1852 dissect_zcl_price_publish_consolidated_bill(tvb
, payload_tree
, &offset
);
1855 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CPP_EVENT
:
1856 dissect_zcl_price_publish_cpp_event(tvb
, payload_tree
, &offset
);
1859 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CREDIT_PAYMENT
:
1860 dissect_zcl_price_publish_credit_payment(tvb
, payload_tree
, &offset
);
1863 case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CURRENCY_CONVERSION
:
1864 dissect_zcl_price_publish_currency_conversion(tvb
, payload_tree
, &offset
);
1867 case ZBEE_ZCL_CMD_ID_PRICE_CANCEL_TARIFF
:
1868 dissect_zcl_price_publish_cancel_tariff(tvb
, payload_tree
, &offset
);
1877 return tvb_captured_length(tvb
);
1878 } /*dissect_zbee_zcl_price*/
1881 *This function manages the Get Current Price payload
1883 *@param tvb pointer to buffer containing raw packet.
1884 *@param tree pointer to data tree Wireshark uses to display packet.
1885 *@param offset pointer to offset from caller
1888 dissect_zcl_price_get_current_price(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
1890 /* Command Options */
1891 proto_tree_add_item(tree
, hf_zbee_zcl_price_command_options
, tvb
, *offset
, 1, ENC_NA
);
1893 } /*dissect_zcl_price_get_current_price*/
1896 *This function manages the Get Scheduled Prices payload
1898 *@param tvb pointer to buffer containing raw packet.
1899 *@param tree pointer to data tree Wireshark uses to display packet.
1900 *@param offset pointer to offset from caller
1903 dissect_zcl_price_get_scheduled_prices(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
1906 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1909 /* Number of Events */
1910 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_events
, tvb
, *offset
, 1, ENC_NA
);
1912 } /*dissect_zcl_price_get_scheduled_prices*/
1915 *This function manages the Get Price Acknowledgement payload
1917 *@param tvb pointer to buffer containing raw packet.
1918 *@param tree pointer to data tree Wireshark uses to display packet.
1919 *@param offset pointer to offset from caller
1922 dissect_zcl_price_get_price_acknowledgement(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
1925 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1928 /* Issuer Event ID */
1929 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1932 /* Price Ack Time */
1933 proto_tree_add_item(tree
, hf_zbee_zcl_price_price_ack_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1937 proto_tree_add_item(tree
, hf_zbee_zcl_price_control
, tvb
, *offset
, 1, ENC_NA
);
1939 } /*dissect_zcl_price_get_price_acknowledgement*/
1942 *This function manages the Get Block Period payload
1944 *@param tvb pointer to buffer containing raw packet.
1945 *@param tree pointer to data tree Wireshark uses to display packet.
1946 *@param offset pointer to offset from caller
1949 dissect_zcl_price_get_block_period(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
1952 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1955 /* Number of Events */
1956 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_events
, tvb
, *offset
, 1, ENC_NA
);
1959 /* (Optional) Tariff Type */
1960 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
1961 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
1964 } /*dissect_zcl_price_get_block_period*/
1967 *This function manages the Get Conversion Factor payload
1969 *@param tvb pointer to buffer containing raw packet.
1970 *@param tree pointer to data tree Wireshark uses to display packet.
1971 *@param offset pointer to offset from caller
1974 dissect_zcl_price_get_conversion_factor(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
1976 /* Earliest Start Time */
1977 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1980 /* Min Issuer Event ID */
1981 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
1984 /* Number of Commands */
1985 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
1987 } /*dissect_zcl_price_get_conversion_factor*/
1990 *This function manages the Get Calorific Value payload
1992 *@param tvb pointer to buffer containing raw packet.
1993 *@param tree pointer to data tree Wireshark uses to display packet.
1994 *@param offset pointer to offset from caller
1997 dissect_zcl_price_get_calorific_value(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2000 /* Earliest Start Time */
2001 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2004 /* Min Issuer Event ID */
2005 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2008 /* Number of Commands */
2009 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2011 } /*dissect_zcl_price_get_calorific_value*/
2014 *This function manages the Get Tariff Information payload
2016 *@param tvb pointer to buffer containing raw packet.
2017 *@param tree pointer to data tree Wireshark uses to display packet.
2018 *@param offset pointer to offset from caller
2021 dissect_zcl_price_get_tariff_information(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2023 /* Earliest Start Time */
2024 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2027 /* Min Issuer Event ID */
2028 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2031 /* Number of Commands */
2032 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2036 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
2039 } /*dissect_zcl_price_get_tariff_information*/
2042 *This function manages the Get Price Matrix payload
2044 *@param tvb pointer to buffer containing raw packet.
2045 *@param tree pointer to data tree Wireshark uses to display packet.
2046 *@param offset pointer to offset from caller
2049 dissect_zcl_price_get_price_matrix(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2051 /* Issuer Tariff ID */
2052 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2054 } /*dissect_zcl_price_get_price_matrix*/
2057 *This function manages the Get Block Thresholds payload
2059 *@param tvb pointer to buffer containing raw packet.
2060 *@param tree pointer to data tree Wireshark uses to display packet.
2061 *@param offset pointer to offset from caller
2064 dissect_zcl_price_get_block_thresholds(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2066 /* Issuer Tariff ID */
2067 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2069 } /*dissect_zcl_price_get_block_thresholds*/
2072 *This function manages the Get CO2 Value payload
2074 *@param tvb pointer to buffer containing raw packet.
2075 *@param tree pointer to data tree Wireshark uses to display packet.
2076 *@param offset pointer to offset from caller
2079 dissect_zcl_price_get_co2_value(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2081 /* Earliest Start Time */
2082 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2085 /* Min Issuer Event ID */
2086 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2089 /* Number of Commands */
2090 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2093 /* (Optional) Tariff Type */
2094 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
2095 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
2098 } /*dissect_zcl_price_get_co2_value*/
2101 *This function manages the Get Tier Labels payload
2103 *@param tvb pointer to buffer containing raw packet.
2104 *@param tree pointer to data tree Wireshark uses to display packet.
2105 *@param offset pointer to offset from caller
2108 dissect_zcl_price_get_tier_labels(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2110 /* Issuer Tariff ID */
2111 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2113 } /*dissect_zcl_price_get_tier_labels*/
2116 *This function manages the Get Billing Period payload
2118 *@param tvb pointer to buffer containing raw packet.
2119 *@param tree pointer to data tree Wireshark uses to display packet.
2120 *@param offset pointer to offset from caller
2123 dissect_zcl_price_get_billing_period(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2125 /* Earliest Start Time */
2126 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2129 /* Min Issuer Event ID */
2130 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2133 /* Number of Commands */
2134 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2137 /* (Optional) Tariff Type */
2138 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
2139 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
2143 } /*dissect_zcl_price_get_billing_period*/
2146 *This function manages the Get Consolidated Bill payload
2148 *@param tvb pointer to buffer containing raw packet.
2149 *@param tree pointer to data tree Wireshark uses to display packet.
2150 *@param offset pointer to offset from caller
2153 dissect_zcl_price_get_consolidated_bill(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2156 /* Earliest Start Time */
2157 proto_tree_add_item(tree
, hf_zbee_zcl_price_earliest_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2160 /* Min Issuer Event ID */
2161 proto_tree_add_item(tree
, hf_zbee_zcl_price_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2164 /* Number of Commands */
2165 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2168 /* (Optional) Tariff Type */
2169 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
2170 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
2174 } /*dissect_zcl_price_get_consolidated_bill*/
2177 *This function manages the Get CPP Event Response payload
2179 *@param tvb pointer to buffer containing raw packet.
2180 *@param tree pointer to data tree Wireshark uses to display packet.
2181 *@param offset pointer to offset from caller
2184 dissect_zcl_price_get_cpp_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2186 /* Issuer Event ID */
2187 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2191 proto_tree_add_item(tree
, hf_zbee_zcl_price_cpp_auth
, tvb
, *offset
, 1, ENC_NA
);
2193 } /*dissect_zcl_price_get_event_response*/
2196 *This function manages the Get Credit Payment payload
2198 *@param tvb pointer to buffer containing raw packet.
2199 *@param tree pointer to data tree Wireshark uses to display packet.
2200 *@param offset pointer to offset from caller
2203 dissect_zcl_price_get_credit_payment(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2206 /* Latest End Time */
2207 proto_tree_add_item(tree
, hf_zbee_zcl_price_latest_end_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2210 /* Number of Records */
2211 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_records
, tvb
, *offset
, 1, ENC_NA
);
2213 } /*dissect_zcl_price_get_credit_payment*/
2216 *This function manages the Publish Price payload
2218 *@param tvb pointer to buffer containing raw packet.
2219 *@param tree pointer to data tree Wireshark uses to display packet.
2220 *@param offset pointer to offset from caller
2223 dissect_zcl_price_publish_price(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2227 static int * const trailing_digit
[] = {
2228 &hf_zbee_zcl_price_tier
,
2229 &hf_zbee_zcl_price_trailing_digit
,
2233 static int * const number_of_price_tiers_and_register_tier
[] = {
2234 &hf_zbee_zcl_price_register_tier
,
2235 &hf_zbee_zcl_price_number_of_price_tiers
,
2239 static int * const alternate_cost_trailing_digit
[] = {
2240 &hf_zbee_zcl_price_alternate_cost_trailing_digit
,
2245 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2249 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_price_rate_label
, tvb
, *offset
, 1, ENC_NA
| ENC_ZIGBEE
, &length
);
2252 /* Issuer Event ID */
2253 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2257 proto_tree_add_item(tree
, hf_zbee_zcl_price_current_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2260 /* Unit of Measure */
2261 proto_tree_add_item(tree
, hf_zbee_zcl_price_unit_of_measure
, tvb
, *offset
, 1, ENC_NA
);
2265 proto_tree_add_item(tree
, hf_zbee_zcl_price_currency
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2268 /* Price Trailing Digit and Price Tier */
2269 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_trailing_digit_and_price_tier
, ett_zbee_zcl_price_trailing_digit_and_price_tier
, trailing_digit
, ENC_LITTLE_ENDIAN
);
2272 /* Number of Price Tiers and Register Tier */
2273 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_number_of_price_tiers_and_register_tier
, ett_zbee_zcl_price_number_of_price_tiers_and_register_tier
, number_of_price_tiers_and_register_tier
, ENC_LITTLE_ENDIAN
);
2277 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2280 /* Duration in Minutes */
2281 proto_tree_add_item(tree
, hf_zbee_zcl_price_duration_in_minutes
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2285 proto_tree_add_item(tree
, hf_zbee_zcl_price
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2288 /* (Optional) Price Ratio */
2289 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2290 proto_tree_add_item(tree
, hf_zbee_zcl_price_ratio
, tvb
, *offset
, 1, ENC_NA
);
2293 /* (Optional) Generation Price */
2294 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2295 proto_tree_add_item(tree
, hf_zbee_zcl_price_generation_price
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2298 /* (Optional) Generation Price Ratio */
2299 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2300 proto_tree_add_item(tree
, hf_zbee_zcl_price_generation_price_ratio
, tvb
, *offset
, 1, ENC_NA
);
2303 /* (Optional) Alternate Cost Delivered */
2304 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2305 proto_tree_add_item(tree
, hf_zbee_zcl_price_alternate_cost_delivered
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2308 /* (Optional) Alternate Cost Unit */
2309 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2310 proto_tree_add_item(tree
, hf_zbee_zcl_price_alternate_cost_unit
, tvb
, *offset
, 1, ENC_NA
);
2313 /* (Optional) Alternate Cost Trailing Digit */
2314 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2315 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_alternate_cost_trailing_digit_mask
, ett_zbee_zcl_price_alternate_cost_trailing_digit
, alternate_cost_trailing_digit
, ENC_LITTLE_ENDIAN
);
2318 /* (Optional) Number of Block Thresholds */
2319 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2320 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_block_thresholds
, tvb
, *offset
, 1, ENC_NA
);
2323 /* (Optional) Price Control */
2324 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2325 proto_tree_add_item(tree
, hf_zbee_zcl_price_control
, tvb
, *offset
, 1, ENC_NA
);
2328 /* (Optional) Number of Generation Tiers */
2329 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2330 proto_tree_add_item(tree
, hf_zbee_zcl_price_number_of_generation_tiers
, tvb
, *offset
, 1, ENC_NA
);
2333 /* (Optional) Generation Tier */
2334 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2335 proto_tree_add_item(tree
, hf_zbee_zcl_price_generation_tier
, tvb
, *offset
, 1, ENC_NA
);
2338 /* (Optional) Extended Number of Price Tiers */
2339 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2340 proto_tree_add_item(tree
, hf_zbee_zcl_price_extended_number_of_price_tiers
, tvb
, *offset
, 1, ENC_NA
);
2343 /* (Optional) Extended Price Tier */
2344 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2345 proto_tree_add_item(tree
, hf_zbee_zcl_price_extended_price_tier
, tvb
, *offset
, 1, ENC_NA
);
2348 /* (Optional) Extended Register Tier */
2349 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
2350 proto_tree_add_item(tree
, hf_zbee_zcl_price_extended_register_tier
, tvb
, *offset
, 1, ENC_NA
);
2352 } /*dissect_zcl_price_publish_price*/
2355 *This function manages the Publish Block Period payload
2357 *@param tvb pointer to buffer containing raw packet.
2358 *@param tree pointer to data tree Wireshark uses to display packet.
2359 *@param offset pointer to offset from caller
2362 dissect_zcl_price_publish_block_period(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2365 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2368 /* Issuer Event ID */
2369 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2372 /* Block Period Start Time */
2373 proto_tree_add_item(tree
, hf_zbee_zcl_price_block_period_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2376 /* Block Period Duration */
2377 proto_tree_add_item(tree
, hf_zbee_zcl_price_block_period_duration
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
2380 /* Block Period Control */
2381 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_block_period_control
, ett_zbee_zcl_price_block_period_control
, zbee_zcl_price_block_period_control
, ENC_LITTLE_ENDIAN
);
2384 /* Block Period Duration Type */
2385 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_block_period_duration_type
, ett_zbee_zcl_price_block_period_duration_type
, zbee_zcl_price_block_period_duration_type
, ENC_LITTLE_ENDIAN
);
2389 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
2392 /* Tariff Resolution Period */
2393 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_resolution_period
, tvb
, *offset
, 1, ENC_NA
);
2395 } /*dissect_zcl_price_publish_block_period*/
2398 *This function manages the Publish Conversion Factor payload
2400 *@param tvb pointer to buffer containing raw packet.
2401 *@param tree pointer to data tree Wireshark uses to display packet.
2402 *@param offset pointer to offset from caller
2405 dissect_zcl_price_publish_conversion_factor(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2407 static int * const conversion_factor_trailing_digit
[] = {
2408 &hf_zbee_zcl_price_conversion_factor_trailing_digit
,
2412 /* Issuer Event ID */
2413 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2417 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2420 /* Conversion Factor */
2421 proto_tree_add_item(tree
, hf_zbee_zcl_price_conversion_factor
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2424 /* Conversion Factor Trailing digit */
2425 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_conversion_factor_trailing_digit_mask
, ett_zbee_zcl_price_conversion_factor_trailing_digit
, conversion_factor_trailing_digit
, ENC_LITTLE_ENDIAN
);
2427 } /*dissect_zcl_price_publish_conversion_factor*/
2430 *This function manages the Publish Calorific Value payload
2432 *@param tvb pointer to buffer containing raw packet.
2433 *@param tree pointer to data tree Wireshark uses to display packet.
2434 *@param offset pointer to offset from caller
2437 dissect_zcl_price_publish_calorific_value(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2439 static int * const calorific_value_trailing_digit
[] = {
2440 &hf_zbee_zcl_price_calorific_value_trailing_digit
,
2444 /* Issuer Event ID */
2445 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2449 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2452 /* Calorific Value */
2453 proto_tree_add_item(tree
, hf_zbee_zcl_price_calorific_value
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2456 /* Calorific Value Unit */
2457 proto_tree_add_item(tree
, hf_zbee_zcl_price_calorific_value_unit
, tvb
, *offset
, 1, ENC_NA
);
2460 /* Calorific Value Trailing digit */
2461 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_calorific_value_trailing_digit_mask
, ett_zbee_zcl_price_calorific_value_trailing_digit
, calorific_value_trailing_digit
, ENC_LITTLE_ENDIAN
);
2463 } /*dissect_zcl_price_publish_calorific_value*/
2466 *This function manages the Publish Tariff Information payload
2468 *@param tvb pointer to buffer containing raw packet.
2469 *@param tree pointer to data tree Wireshark uses to display packet.
2470 *@param offset pointer to offset from caller
2473 dissect_zcl_price_publish_tariff_information(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2477 static int * const price_trailing_digit
[] = {
2478 &hf_zbee_zcl_price_tariff_information_price_trailing_digit
,
2482 static int * const type_and_charging_scheme
[] = {
2483 &hf_zbee_zcl_price_tariff_information_type
,
2484 &hf_zbee_zcl_price_tariff_information_charging_scheme
,
2489 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2492 /* Issuer Event ID */
2493 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2496 /* Issuer Tariff ID */
2497 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2501 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2504 /* Tariff Type / Charging Scheme */
2505 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_information_type_and_charging_scheme
, ett_zbee_zcl_price_tariff_information_tariff_type_and_charging_scheme
, type_and_charging_scheme
, ENC_LITTLE_ENDIAN
);
2509 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_price_tariff_information_tariff_label
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
2512 /* Number of Price Tiers in Use */
2513 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use
, tvb
, *offset
, 1, ENC_NA
);
2516 /* Number of Block Thresholds in Use */
2517 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use
, tvb
, *offset
, 1, ENC_NA
);
2520 /* Unit of Measure */
2521 proto_tree_add_item(tree
, hf_zbee_zcl_price_unit_of_measure
, tvb
, *offset
, 1, ENC_NA
);
2525 proto_tree_add_item(tree
, hf_zbee_zcl_price_currency
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2528 /* Price Trailing Digit */
2529 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_information_price_trailing_digit_mask
, ett_zbee_zcl_price_tariff_information_price_trailing_digit
, price_trailing_digit
, ENC_LITTLE_ENDIAN
);
2532 /* Standing Charge */
2533 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_standing_charge
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2536 /* Tier Block Mode */
2537 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_tier_block_mode
, tvb
, *offset
, 1, ENC_NA
);
2540 /* Block Threshold Multiplier */
2541 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_block_threshold_multiplier
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
2544 /* Block Threshold Divisor */
2545 proto_tree_add_item(tree
, hf_zbee_zcl_price_tariff_information_block_threshold_divisor
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
2547 } /*dissect_zcl_price_publish_tariff_information*/
2550 *This function manages the Publish Price Matrix payload
2552 *@param tvb pointer to buffer containing raw packet.
2553 *@param tree pointer to data tree Wireshark uses to display packet.
2554 *@param offset pointer to offset from caller
2557 dissect_zcl_price_publish_price_matrix(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2559 uint8_t sub_payload_control
;
2561 static int * const tier_block_id
[] = {
2562 &hf_zbee_zcl_price_price_matrix_tier_block_id_block
,
2563 &hf_zbee_zcl_price_price_matrix_tier_block_id_tier
,
2568 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2571 /* Issuer Event ID */
2572 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2576 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2579 /* Issuer Tariff ID */
2580 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2584 proto_tree_add_item(tree
, hf_zbee_zcl_price_command_index
, tvb
, *offset
, 1, ENC_NA
);
2587 /* Total Number of Commands */
2588 proto_tree_add_item(tree
, hf_zbee_zcl_price_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2591 /* Sub-Payload Control */
2592 sub_payload_control
= tvb_get_uint8(tvb
, *offset
) && 0x01; /* First bit determines Tier/Block ID field type */
2593 proto_tree_add_item(tree
, hf_zbee_zcl_price_price_matrix_sub_payload_control
, tvb
, *offset
, 1, ENC_NA
);
2596 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
2598 if (sub_payload_control
== 0)
2599 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_price_matrix_tier_block_id
, ett_zbee_zcl_price_price_matrix_tier_block_id
, tier_block_id
, ENC_LITTLE_ENDIAN
);
2601 proto_tree_add_item(tree
, hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier
, tvb
, *offset
, 1, ENC_NA
);
2605 proto_tree_add_item(tree
, hf_zbee_zcl_price_price_matrix_price
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2608 } /*dissect_zcl_price_publish_price_matrix*/
2611 *This function manages the Publish Block Thresholds payload
2613 *@param tvb pointer to buffer containing raw packet.
2614 *@param tree pointer to data tree Wireshark uses to display packet.
2615 *@param offset pointer to offset from caller
2618 dissect_zcl_price_publish_block_thresholds(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2620 uint8_t sub_payload_control
;
2622 static int * const tier_number_of_block_thresholds
[] = {
2623 &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds
,
2624 &hf_zbee_zcl_price_block_thresholds_tier
,
2628 static int * const number_of_block_thresholds
[] = {
2629 &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds
,
2634 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2637 /* Issuer Event ID */
2638 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2642 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2645 /* Issuer Tariff ID */
2646 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2650 proto_tree_add_item(tree
, hf_zbee_zcl_price_command_index
, tvb
, *offset
, 1, ENC_NA
);
2653 /* Total Number of Commands */
2654 proto_tree_add_item(tree
, hf_zbee_zcl_price_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2657 /* Sub-Payload Control */
2658 sub_payload_control
= tvb_get_uint8(tvb
, *offset
) && 0x01; /* First bit determines Tier/Number of Block Thresholds field type */
2659 proto_tree_add_item(tree
, hf_zbee_zcl_price_block_thresholds_sub_payload_control
, tvb
, *offset
, 1, ENC_NA
);
2662 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
2665 /* Tier/Number of Block Thresholds */
2666 thresholds
= tvb_get_uint8(tvb
, *offset
) & ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS
;
2667 if (sub_payload_control
== 0)
2668 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
, ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
, tier_number_of_block_thresholds
, ENC_LITTLE_ENDIAN
);
2670 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
, ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
, number_of_block_thresholds
, ENC_LITTLE_ENDIAN
);
2673 /* Block Threshold(s) */
2674 for (int i
= 0; i
< thresholds
; i
++) {
2675 proto_tree_add_item(tree
, hf_zbee_zcl_price_block_thresholds_block_threshold
, tvb
, *offset
, 6, ENC_LITTLE_ENDIAN
);
2679 } /*dissect_zcl_price_publish_block_thresholds*/
2682 *This function manages the Publish CO2 Value payload
2684 *@param tvb pointer to buffer containing raw packet.
2685 *@param tree pointer to data tree Wireshark uses to display packet.
2686 *@param offset pointer to offset from caller
2689 dissect_zcl_price_publish_co2_value(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2691 static int * const co2_value_trailing_digit
[] = {
2692 &hf_zbee_zcl_price_co2_value_trailing_digit
,
2697 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2700 /* Issuer Event ID */
2701 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2705 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2709 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
2713 proto_tree_add_item(tree
, hf_zbee_zcl_price_co2_value
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2717 proto_tree_add_item(tree
, hf_zbee_zcl_price_co2_unit
, tvb
, *offset
, 1, ENC_NA
);
2720 /* CO2 Value Trailing Digit */
2721 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_co2_value_trailing_digit_mask
, ett_zbee_zcl_price_co2_value_trailing_digit
, co2_value_trailing_digit
, ENC_LITTLE_ENDIAN
);
2723 } /*dissect_zcl_price_publish_co2_value*/
2726 *This function manages the Publish Tier Labels payload
2728 *@param tvb pointer to buffer containing raw packet.
2729 *@param tree pointer to data tree Wireshark uses to display packet.
2730 *@param offset pointer to offset from caller
2733 dissect_zcl_price_publish_tier_labels(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2735 uint8_t number_of_labels
;
2739 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2742 /* Issuer Event ID */
2743 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2746 /* Issuer Tariff ID */
2747 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_tariff_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2751 proto_tree_add_item(tree
, hf_zbee_zcl_price_command_index
, tvb
, *offset
, 1, ENC_NA
);
2754 /* Total Number of Commands */
2755 proto_tree_add_item(tree
, hf_zbee_zcl_price_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
2758 /* Number of Labels */
2759 number_of_labels
= tvb_get_uint8(tvb
, *offset
);
2760 proto_tree_add_item(tree
, hf_zbee_zcl_price_tier_labels_number_of_labels
, tvb
, *offset
, 1, ENC_NA
);
2763 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) >= 0 && i
< number_of_labels
; i
++) {
2765 proto_tree_add_item(tree
, hf_zbee_zcl_price_tier_labels_tier_id
, tvb
, *offset
, 1, ENC_NA
);
2769 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_price_tier_labels_tier_label
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
2772 } /*dissect_zcl_price_publish_tier_labels*/
2775 *This function manages the Publish Consolidated Bill payload
2777 *@param tvb pointer to buffer containing raw packet.
2778 *@param tree pointer to data tree Wireshark uses to display packet.
2779 *@param offset pointer to offset from caller
2782 dissect_zcl_price_publish_billing_period(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2785 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2788 /* Issuer Event ID */
2789 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2792 /* Billing Period Start Time */
2793 proto_tree_add_item(tree
, hf_zbee_zcl_price_billing_period_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2796 /* Billing Period Duration */
2797 proto_tree_add_item(tree
, hf_zbee_zcl_price_billing_period_duration
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
2800 /* Billing Period Duration Type */
2801 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_billing_period_duration_type
, ett_zbee_zcl_price_billing_period_duration_type
, zbee_zcl_price_billing_period_duration_type
, ENC_LITTLE_ENDIAN
);
2805 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
2807 } /*dissect_zcl_price_publish_billing_period*/
2810 *This function manages the Publish Consolidated Bill payload
2812 *@param tvb pointer to buffer containing raw packet.
2813 *@param tree pointer to data tree Wireshark uses to display packet.
2814 *@param offset pointer to offset from caller
2817 dissect_zcl_price_publish_consolidated_bill(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2819 static int * const bill_trailing_digit
[] = {
2820 &hf_zbee_zcl_price_consolidated_bill_trailing_digit
,
2825 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2828 /* Issuer Event ID */
2829 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2832 /* Billing Period Start Time */
2833 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2836 /* Billing Period Duration */
2837 proto_tree_add_item(tree
, hf_zbee_zcl_price_billing_period_duration
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
2840 /* Billing Period Duration Type */
2841 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_billing_period_duration_type
, ett_zbee_zcl_price_billing_period_duration_type
, zbee_zcl_price_billing_period_duration_type
, ENC_LITTLE_ENDIAN
);
2845 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
2848 /* Consolidated Bill */
2849 proto_tree_add_item(tree
, hf_zbee_zcl_price_consolidated_bill
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2853 proto_tree_add_item(tree
, hf_zbee_zcl_price_currency
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2856 /* Bill Trailing Digit */
2857 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_consolidated_bill_trailing_digit_mask
, ett_zbee_zcl_price_consolidated_bill_trailing_digit
, bill_trailing_digit
, ENC_LITTLE_ENDIAN
);
2859 } /*dissect_zcl_price_publish_consolidated_bill*/
2861 *This function manages the Publish CPP Event payload
2863 *@param tvb pointer to buffer containing raw packet.
2864 *@param tree pointer to data tree Wireshark uses to display packet.
2865 *@param offset pointer to offset from caller
2868 dissect_zcl_price_publish_cpp_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2871 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2874 /* Issuer Event ID */
2875 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2879 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2882 /* Duration in Minutes */
2883 proto_tree_add_item(tree
, hf_zbee_zcl_price_duration_in_minutes
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2887 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
2890 /* CPP Price Tier */
2891 proto_tree_add_item(tree
, hf_zbee_zcl_price_cpp_price_tier
, tvb
, *offset
, 1, ENC_NA
);
2895 proto_tree_add_item(tree
, hf_zbee_zcl_price_cpp_auth
, tvb
, *offset
, 1, ENC_NA
);
2897 } /*dissect_zcl_price_publish_cpp_event*/
2901 *This function manages the Publish Credit Payment payload
2903 *@param tvb pointer to buffer containing raw packet.
2904 *@param tree pointer to data tree Wireshark uses to display packet.
2905 *@param offset pointer to offset from caller
2908 dissect_zcl_price_publish_credit_payment(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2913 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2916 /* Issuer Event ID */
2917 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2920 /* Credit Payment Due Date */
2921 proto_tree_add_item(tree
, hf_zbee_zcl_price_credit_payment_due_date
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
2924 /* Credit Payment Overdue Amount */
2925 proto_tree_add_item(tree
, hf_zbee_zcl_price_credit_payment_overdue_amount
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2928 /* Credit Payment Status */
2929 proto_tree_add_item(tree
, hf_zbee_zcl_price_credit_payment_status
, tvb
, *offset
, 1, ENC_NA
);
2932 /* Credit Payment */
2933 proto_tree_add_item(tree
, hf_zbee_zcl_price_credit_payment
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2936 /* Credit Payment Date */
2937 proto_tree_add_item(tree
, hf_zbee_zcl_price_credit_payment_date
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
2940 /* Credit Payment Ref */
2941 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_price_credit_payment_ref
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
2943 } /*dissect_zcl_price_publish_credit_payment*/
2946 *This function manages the Publish Currency Conversion payload
2948 *@param tvb pointer to buffer containing raw packet.
2949 *@param tree pointer to data tree Wireshark uses to display packet.
2950 *@param offset pointer to offset from caller
2953 dissect_zcl_price_publish_currency_conversion(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
2956 static int * const conversion_factor_trailing_digit
[] = {
2957 &hf_zbee_zcl_price_conversion_factor_trailing_digit
,
2962 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2965 /* Issuer Event ID */
2966 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2970 proto_tree_add_item(tree
, hf_zbee_zcl_price_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2974 proto_tree_add_item(tree
, hf_zbee_zcl_price_old_currency
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2978 proto_tree_add_item(tree
, hf_zbee_zcl_price_new_currency
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
2981 /* Conversion Factor */
2982 proto_tree_add_item(tree
, hf_zbee_zcl_price_conversion_factor
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2985 /* Conversion Factor Trailing digit */
2986 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_conversion_factor_trailing_digit_mask
, ett_zbee_zcl_price_conversion_factor_trailing_digit
, conversion_factor_trailing_digit
, ENC_LITTLE_ENDIAN
);
2989 /* Currency Change Control Flags */
2990 proto_tree_add_item(tree
, hf_zbee_zcl_price_currency_change_control_flags
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
2992 } /*dissect_zcl_price_publish_currency_conversion*/
2995 *This function manages the Publish Cancel Tariff payload
2997 *@param tvb pointer to buffer containing raw packet.
2998 *@param tree pointer to data tree Wireshark uses to display packet.
2999 *@param offset pointer to offset from caller
3002 dissect_zcl_price_publish_cancel_tariff(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
3005 proto_tree_add_item(tree
, hf_zbee_zcl_price_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
3008 /* Issuer Event ID */
3009 proto_tree_add_item(tree
, hf_zbee_zcl_price_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
3013 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_price_tariff_type_mask
, ett_zbee_zcl_price_tariff_type
, zbee_zcl_price_tariff_type_mask
, ENC_LITTLE_ENDIAN
);
3015 } /*dissect_zcl_price_publish_cancel_tariff*/
3018 *This function registers the ZCL Price dissector
3022 proto_register_zbee_zcl_price(void)
3024 static hf_register_info hf
[] = {
3026 { &hf_zbee_zcl_price_attr_server_id
,
3027 { "Attribute", "zbee_zcl_se.price.attr_id", FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &zbee_zcl_price_attr_server_names_ext
,
3028 0x0, NULL
, HFILL
} },
3030 { &hf_zbee_zcl_price_attr_client_id
,
3031 { "Attribute", "zbee_zcl_se.price.attr_client_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_price_attr_client_names
),
3032 0x0, NULL
, HFILL
} },
3034 { &hf_zbee_zcl_price_attr_reporting_status
, /* common to all SE clusters */
3035 { "Attribute Reporting Status", "zbee_zcl_se.price.attr.attr_reporting_status",
3036 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
3038 { &hf_zbee_zcl_price_srv_tx_cmd_id
,
3039 { "Command", "zbee_zcl_se.price.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_srv_tx_cmd_names
),
3040 0x00, NULL
, HFILL
} },
3042 { &hf_zbee_zcl_price_srv_rx_cmd_id
,
3043 { "Command", "zbee_zcl_se.price.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_srv_rx_cmd_names
),
3044 0x00, NULL
, HFILL
} },
3046 { &hf_zbee_zcl_price_provider_id
,
3047 { "Provider ID", "zbee_zcl_se.price.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
3048 0x00, NULL
, HFILL
} },
3050 { &hf_zbee_zcl_price_issuer_event_id
,
3051 { "Issuer Event ID", "zbee_zcl_se.price.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
3052 0x00, NULL
, HFILL
} },
3054 { &hf_zbee_zcl_price_min_issuer_event_id
,
3055 { "Min Issuer Event ID", "zbee_zcl_se.price.min_issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
3056 0x00, NULL
, HFILL
} },
3058 { &hf_zbee_zcl_price_issuer_tariff_id
,
3059 { "Issuer Tariff ID", "zbee_zcl_se.price.issuer_tariff_id", FT_UINT32
, BASE_DEC
, NULL
,
3060 0x00, NULL
, HFILL
} },
3062 { &hf_zbee_zcl_price_command_index
,
3063 { "Command Index", "zbee_zcl_se.price.command_index", FT_UINT8
, BASE_DEC
, NULL
,
3064 0x00, NULL
, HFILL
} },
3066 { &hf_zbee_zcl_price_total_number_of_commands
,
3067 { "Total Number of Commands", "zbee_zcl_se.price.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
3068 0x00, NULL
, HFILL
} },
3070 { &hf_zbee_zcl_price_number_of_commands
,
3071 { "Number of Commands", "zbee_zcl_se.price.number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
3072 0x00, NULL
, HFILL
} },
3074 { &hf_zbee_zcl_price_number_of_events
,
3075 { "Number of Events", "zbee_zcl_se.price.number_of_events", FT_UINT8
, BASE_DEC
, NULL
,
3076 0x00, NULL
, HFILL
} },
3078 { &hf_zbee_zcl_price_number_of_records
,
3079 { "Number of Records", "zbee_zcl_se.price.number_of_records", FT_UINT8
, BASE_DEC
, NULL
,
3080 0x00, NULL
, HFILL
} },
3082 { &hf_zbee_zcl_price_number_of_block_thresholds
,
3083 { "Number of Block Thresholds", "zbee_zcl_se.price.number_of_block_thresholds", FT_UINT8
, BASE_DEC
, NULL
,
3084 0x00, NULL
, HFILL
} },
3086 { &hf_zbee_zcl_price_number_of_generation_tiers
,
3087 { "Number of Generation Tiers", "zbee_zcl_se.price.number_of_generation_tiers", FT_UINT8
, BASE_DEC
, NULL
,
3088 0x00, NULL
, HFILL
} },
3090 { &hf_zbee_zcl_price_extended_number_of_price_tiers
,
3091 { "Extended Number of Price Tiers", "zbee_zcl_se.price.extended_number_of_price_tiers", FT_UINT8
, BASE_DEC
, NULL
,
3092 0x00, NULL
, HFILL
} },
3094 { &hf_zbee_zcl_price_command_options
,
3095 { "Command Options", "zbee_zcl_se.price.command_options", FT_UINT8
, BASE_HEX
, NULL
,
3096 0x00, NULL
, HFILL
} },
3098 { &hf_zbee_zcl_price_control
,
3099 { "Price Control", "zbee_zcl_se.price.control", FT_UINT8
, BASE_HEX
, NULL
,
3100 0x00, NULL
, HFILL
} },
3102 /* start Tariff Type fields */
3103 { &hf_zbee_zcl_price_tariff_type_mask
,
3104 { "Tariff Type", "zbee_zcl_se.price.tariff_type_mask", FT_UINT8
, BASE_HEX
, NULL
,
3105 0x00, NULL
, HFILL
} },
3107 { &hf_zbee_zcl_price_tariff_type
,
3108 { "Tariff Type", "zbee_zcl_se.price.tariff_type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_type_names
),
3109 ZBEE_ZCL_PRICE_TARIFF_TYPE
, NULL
, HFILL
} },
3110 /* end Tariff Type fields */
3112 { &hf_zbee_zcl_price_tariff_resolution_period
,
3113 { "Tariff Resolution Period", "zbee_zcl_se.price.tariff.resolution_period", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_resolution_period_names
),
3114 0x00, NULL
, HFILL
} },
3116 { &hf_zbee_zcl_price_cpp_price_tier
,
3117 { "CPP Price Tier", "zbee_zcl_se.price.cpp_price_tier", FT_UINT8
, BASE_DEC
, NULL
,
3118 0x00, NULL
, HFILL
} },
3120 { &hf_zbee_zcl_price_cpp_auth
,
3121 { "CPP Auth", "zbee_zcl_se.price.cpp_auth", FT_UINT8
, BASE_DEC
, NULL
,
3122 0x00, NULL
, HFILL
} },
3124 { &hf_zbee_zcl_price_rate_label
,
3125 { "Rate Label", "zbee_zcl_se.price.rate_label", FT_UINT_STRING
, BASE_NONE
, NULL
,
3126 0x00, NULL
, HFILL
} },
3128 { &hf_zbee_zcl_price_unit_of_measure
,
3129 { "Unit of Measure", "zbee_zcl_se.price.unit_of_measure", FT_UINT8
, BASE_HEX
, NULL
,
3130 0x00, NULL
, HFILL
} },
3132 { &hf_zbee_zcl_price_currency
,
3133 { "Currency", "zbee_zcl_se.price.currency", FT_UINT16
, BASE_HEX
, NULL
,
3134 0x00, NULL
, HFILL
} },
3136 /* start Trailing Digit and Price Tier fields */
3137 { &hf_zbee_zcl_price_trailing_digit_and_price_tier
,
3138 { "Trailing Digit and Price Tier", "zbee_zcl_se.price.trailing_digit_and_price_tier", FT_UINT8
, BASE_HEX
, NULL
,
3139 0x00, NULL
, HFILL
} },
3141 { &hf_zbee_zcl_price_tier
,
3142 { "Price Tier", "zbee_zcl_se.price.tier", FT_UINT8
, BASE_HEX
, NULL
,
3143 ZBEE_ZCL_PRICE_TIER
, NULL
, HFILL
} },
3145 { &hf_zbee_zcl_price_trailing_digit
,
3146 { "Trailing Digit", "zbee_zcl_se.price.trailing_digit", FT_UINT8
, BASE_HEX
, NULL
,
3147 ZBEE_ZCL_PRICE_TRAILING_DIGIT
, NULL
, HFILL
} },
3148 /* end Trailing Digit and Price Tier fields */
3150 /* start Number of Price Tiers and Register Tier fields */
3151 { &hf_zbee_zcl_price_number_of_price_tiers_and_register_tier
,
3152 { "Number of Price Tiers and Register Tier", "zbee_zcl_se.price.number_of_price_tiers_and_register_tier", FT_UINT8
, BASE_HEX
, NULL
,
3153 0x00, NULL
, HFILL
} },
3155 { &hf_zbee_zcl_price_register_tier
,
3156 { "Register Tier", "zbee_zcl_se.price.register_tier", FT_UINT8
, BASE_HEX
, NULL
,
3157 ZBEE_ZCL_PRICE_REGISTER_TIER
, NULL
, HFILL
} },
3159 { &hf_zbee_zcl_price_number_of_price_tiers
,
3160 { "Number of Price Tiers", "zbee_zcl_se.price.number_of_price_tiers", FT_UINT8
, BASE_HEX
, NULL
,
3161 ZBEE_ZCL_PRICE_NUMBER_OF_PRICE_TIERS
, NULL
, HFILL
} },
3162 /* end Number of Price Tiers and Register Tier fields */
3164 { &hf_zbee_zcl_price_extended_price_tier
,
3165 { "Extended Price Tier", "zbee_zcl_se.price.extended_price_tier", FT_UINT8
, BASE_HEX
, NULL
,
3166 0x00, NULL
, HFILL
} },
3168 { &hf_zbee_zcl_price_extended_register_tier
,
3169 { "Extended Register Tier", "zbee_zcl_se.price.extended_register_tier", FT_UINT8
, BASE_HEX
, NULL
,
3170 0x00, NULL
, HFILL
} },
3172 { &hf_zbee_zcl_price_duration_in_minutes
,
3173 { "Duration in Minutes", "zbee_zcl_se.price.duration_in_minutes", FT_UINT16
, BASE_DEC
, NULL
,
3174 0x00, NULL
, HFILL
} },
3176 { &hf_zbee_zcl_price
,
3177 { "Price", "zbee_zcl_se.price.price", FT_UINT32
, BASE_DEC
, NULL
,
3178 0x00, NULL
, HFILL
} },
3180 { &hf_zbee_zcl_price_ratio
,
3181 { "Price Ratio", "zbee_zcl_se.price.price.ratio", FT_UINT8
, BASE_DEC
, NULL
,
3182 0x00, NULL
, HFILL
} },
3184 { &hf_zbee_zcl_price_generation_price
,
3185 { "Generation Price", "zbee_zcl_se.price.generation_price", FT_UINT32
, BASE_DEC
, NULL
,
3186 0x00, NULL
, HFILL
} },
3188 { &hf_zbee_zcl_price_generation_price_ratio
,
3189 { "Generation Price Ratio", "zbee_zcl_se.price.generation_price.ratio", FT_UINT8
, BASE_DEC
, NULL
,
3190 0x00, NULL
, HFILL
} },
3192 { &hf_zbee_zcl_price_generation_tier
,
3193 { "Generation Tier", "zbee_zcl_se.price.generation_tier", FT_UINT8
, BASE_HEX
, NULL
,
3194 0x00, NULL
, HFILL
} },
3196 { &hf_zbee_zcl_price_alternate_cost_delivered
,
3197 { "Alternate Cost Delivered", "zbee_zcl_se.price.alternate_cost_delivered", FT_UINT32
, BASE_DEC
, NULL
,
3198 0x00, NULL
, HFILL
} },
3200 { &hf_zbee_zcl_price_alternate_cost_unit
,
3201 { "Alternate Cost Unit", "zbee_zcl_se.price.alternate_cost.unit", FT_UINT8
, BASE_HEX
, NULL
,
3202 0x00, NULL
, HFILL
} },
3204 /* start Alternate Cost Trailing Digit */
3205 { &hf_zbee_zcl_price_alternate_cost_trailing_digit_mask
,
3206 { "Alternate Cost Trailing Digit", "zbee_zcl_se.price.alternate_cost.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3207 0x00, NULL
, HFILL
} },
3209 { &hf_zbee_zcl_price_alternate_cost_trailing_digit
,
3210 { "Alternate Cost Trailing Digit", "zbee_zcl_se.price.alternate_cost.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3211 ZBEE_ZCL_PRICE_ALTERNATE_COST_TRAILING_DIGIT
, NULL
, HFILL
} },
3212 /* end Alternate Cost Trailing Digit */
3214 { &hf_zbee_zcl_price_start_time
,
3215 { "Start Time", "zbee_zcl_se.price.start_time", FT_UINT32
, BASE_CUSTOM
,
3216 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3218 { &hf_zbee_zcl_price_earliest_start_time
,
3219 { "Earliest Start Time", "zbee_zcl_se.price.earliest_start_time", FT_UINT32
, BASE_CUSTOM
,
3220 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3222 { &hf_zbee_zcl_price_latest_end_time
,
3223 { "Latest End Time", "zbee_zcl_se.price.latest_end_time", FT_UINT32
, BASE_CUSTOM
,
3224 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3226 { &hf_zbee_zcl_price_current_time
,
3227 { "Current Time", "zbee_zcl_se.price.current_time", FT_UINT32
, BASE_CUSTOM
,
3228 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3230 { &hf_zbee_zcl_price_price_ack_time
,
3231 { "Price Ack Time", "zbee_zcl_se.price.price_ack_time", FT_UINT32
, BASE_CUSTOM
,
3232 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3234 { &hf_zbee_zcl_price_block_period_start_time
,
3235 { "Block Period Start Time", "zbee_zcl_se.price.block_period.start_time", FT_UINT32
, BASE_CUSTOM
,
3236 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3238 { &hf_zbee_zcl_price_block_period_duration
,
3239 { "Block Period Duration", "zbee_zcl_se.price.block_period.duration", FT_UINT24
, BASE_DEC
, NULL
,
3240 0x00, NULL
, HFILL
} },
3242 /* start Block Period Control */
3243 { &hf_zbee_zcl_price_block_period_control
,
3244 { "Block Period Control", "zbee_zcl_se.price.block_period.control", FT_UINT8
, BASE_HEX
, NULL
,
3245 0x00, NULL
, HFILL
} },
3247 { &hf_zbee_zcl_price_block_period_control_price_acknowledgement
,
3248 { "Price Acknowledgement", "zbee_zcl_se.price.block_period.control.price_acknowledgement", FT_UINT8
, BASE_DEC
, VALS(zbee_zcl_price_block_period_control_price_acknowledgement_names
),
3249 ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT
, NULL
, HFILL
} },
3251 { &hf_zbee_zcl_price_block_period_control_repeating_block
,
3252 { "Repeating Block", "zbee_zcl_se.price.block_period.control.repeating_block", FT_UINT8
, BASE_DEC
, VALS(zbee_zcl_price_block_period_control_repeating_block_names
),
3253 ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK
, NULL
, HFILL
} },
3254 /* end Block Period Control */
3256 /* start Block Period Duration Type fields */
3257 { &hf_zbee_zcl_price_block_period_duration_type
,
3258 { "Block Period Duration Type", "zbee_zcl_se.price.block_period.duration.type", FT_UINT8
, BASE_HEX
, NULL
,
3259 0x00, NULL
, HFILL
} },
3261 { &hf_zbee_zcl_price_block_period_duration_timebase
,
3262 { "Duration Timebase", "zbee_zcl_se.price.block_period.duration.timebase", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_block_period_duration_timebase_names
),
3263 ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE
, NULL
, HFILL
} },
3265 { &hf_zbee_zcl_price_block_period_duration_control
,
3266 { "Duration Control", "zbee_zcl_se.price.block_period.duration.control", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_block_period_duration_control_names
),
3267 ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL
, NULL
, HFILL
} },
3268 /* end Block Period Duration Type fields */
3270 { &hf_zbee_zcl_price_conversion_factor
,
3271 { "Conversion Factor", "zbee_zcl_se.price.conversion_factor", FT_UINT32
, BASE_DEC
, NULL
,
3272 0x00, NULL
, HFILL
} },
3274 /* start Conversion Factor Trailing Digit fields */
3275 { &hf_zbee_zcl_price_conversion_factor_trailing_digit_mask
,
3276 { "Conversion Factor Trailing Digit", "zbee_zcl_se.price.conversion_factor_trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3277 0x00, NULL
, HFILL
} },
3279 { &hf_zbee_zcl_price_conversion_factor_trailing_digit
,
3280 { "Conversion Factor Trailing Digit", "zbee_zcl_se.price.conversion_factor.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3281 ZBEE_ZCL_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT
, NULL
, HFILL
} },
3282 /* end Conversion Factor Trailing Digit fields */
3284 { &hf_zbee_zcl_price_calorific_value
,
3285 { "Calorific Value", "zbee_zcl_se.price.calorific_value", FT_UINT32
, BASE_DEC
, NULL
,
3286 0x00, NULL
, HFILL
} },
3288 { &hf_zbee_zcl_price_calorific_value_unit
,
3289 { "Calorific Value Unit", "zbee_zcl_se.price.calorific_value.unit", FT_UINT8
, BASE_HEX
, NULL
,
3290 0x00, NULL
, HFILL
} },
3292 /* start Calorific Value Trailing Digit fields */
3293 { &hf_zbee_zcl_price_calorific_value_trailing_digit_mask
,
3294 { "Calorific Value Trailing Digit", "zbee_zcl_se.price.calorific_value.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3295 0x00, NULL
, HFILL
} },
3297 { &hf_zbee_zcl_price_calorific_value_trailing_digit
,
3298 { "Calorific Value Trailing Digit", "zbee_zcl_se.price.calorific_value.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3299 ZBEE_ZCL_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT
, NULL
, HFILL
} },
3300 /* end Calorific Value Trailing Digit fields */
3302 /* start Tariff Information Type/Charging Scheme fields */
3303 { &hf_zbee_zcl_price_tariff_information_type_and_charging_scheme
,
3304 { "Tariff Type/Charging Scheme", "zbee_zcl_se.price.tariff_information.type_and_charging_scheme", FT_UINT8
, BASE_HEX
, NULL
,
3305 0x00, NULL
, HFILL
} },
3307 { &hf_zbee_zcl_price_tariff_information_type
,
3308 { "Tariff Type", "zbee_zcl_se.price.tariff_information.type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_type_names
),
3309 ZBEE_ZCL_PRICE_TARIFF_INFORMATION_TYPE
, NULL
, HFILL
} },
3311 { &hf_zbee_zcl_price_tariff_information_charging_scheme
,
3312 { "Charging Scheme", "zbee_zcl_se.price.tariff_information.charging_scheme", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_charging_scheme_names
),
3313 ZBEE_ZCL_PRICE_TARIFF_INFORMATION_CHARGING_SCHEME
, NULL
, HFILL
} },
3314 /* end Tariff Information Type/Charging Scheme fields */
3316 { &hf_zbee_zcl_price_tariff_information_tariff_label
,
3317 { "Tariff Label", "zbee_zcl_se.price.tariff_information.tariff_label", FT_UINT_STRING
, BASE_NONE
, NULL
,
3318 0x00, NULL
, HFILL
} },
3320 { &hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use
,
3321 { "Number of Price Tiers in Use", "zbee_zcl_se.price.tariff_information.number_of_price_tiers_in_use", FT_UINT8
, BASE_DEC
, NULL
,
3322 0x00, NULL
, HFILL
} },
3324 { &hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use
,
3325 { "Number of Block Thresholds in Use", "zbee_zcl_se.price.tariff_information.number_of_block_thresholds_in_use", FT_UINT8
, BASE_DEC
, NULL
,
3326 0x00, NULL
, HFILL
} },
3328 /* start Price Trailing Digit fields */
3329 { &hf_zbee_zcl_price_tariff_information_price_trailing_digit_mask
,
3330 { "Price Trailing Digit", "zbee_zcl_se.price.tariff_information.price.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3331 0x00, NULL
, HFILL
} },
3333 { &hf_zbee_zcl_price_tariff_information_price_trailing_digit
,
3334 { "Price Trailing Digit", "zbee_zcl_se.price.tariff_information.price.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3335 ZBEE_ZCL_PRICE_TARIFF_INFORMATION_PRICE_TRAILING_DIGIT
, NULL
, HFILL
} },
3336 /* start Price Trailing Digit fields */
3338 { &hf_zbee_zcl_price_tariff_information_standing_charge
,
3339 { "Standing Charge", "zbee_zcl_se.price.tariff_information.standing_charge", FT_UINT32
, BASE_DEC
, NULL
,
3340 0x00, NULL
, HFILL
} },
3342 { &hf_zbee_zcl_price_tariff_information_tier_block_mode
,
3343 { "Tier Block Mode", "zbee_zcl_se.price.tariff_information.tier_block_mode", FT_UINT8
, BASE_HEX
, NULL
,
3344 0x00, NULL
, HFILL
} },
3346 { &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds
,
3347 { "Number of Block Thresholds", "zbee_zcl_se.price.tariff_information.number_of_block_thresholds", FT_UINT8
, BASE_DEC
, NULL
,
3348 ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS
, NULL
, HFILL
} },
3350 { &hf_zbee_zcl_price_tariff_information_block_threshold_multiplier
,
3351 { "Block Threshold Multiplier", "zbee_zcl_se.price.tariff_information.block_threshold_multiplier", FT_UINT24
, BASE_DEC
, NULL
,
3352 0x00, NULL
, HFILL
} },
3354 { &hf_zbee_zcl_price_tariff_information_block_threshold_divisor
,
3355 { "Block Threshold Divisor", "zbee_zcl_se.price.tariff_information.block_threshold_divisor", FT_UINT24
, BASE_DEC
, NULL
,
3356 0x00, NULL
, HFILL
} },
3358 { &hf_zbee_zcl_price_price_matrix_sub_payload_control
,
3359 { "Sub Payload Control", "zbee_zcl_se.price.price_matrix.sub_payload_control", FT_UINT8
, BASE_DEC
, NULL
,
3360 0x00, NULL
, HFILL
} },
3362 /* start Tier/Block ID fields */
3363 { &hf_zbee_zcl_price_price_matrix_tier_block_id
,
3364 { "Tier/Block ID", "zbee_zcl_se.price.price_matrix.tier_block_id", FT_UINT8
, BASE_HEX
, NULL
,
3365 0x00, NULL
, HFILL
} },
3367 { &hf_zbee_zcl_price_price_matrix_tier_block_id_block
,
3368 { "Block", "zbee_zcl_se.price.price_matrix.block", FT_UINT8
, BASE_DEC
, NULL
,
3369 ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_BLOCK
, NULL
, HFILL
} },
3371 { &hf_zbee_zcl_price_price_matrix_tier_block_id_tier
,
3372 { "Tier", "zbee_zcl_se.price.price_matrix.tier", FT_UINT8
, BASE_DEC
, NULL
,
3373 ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_TIER
, NULL
, HFILL
} },
3374 /* end Tier/Block ID fields */
3376 { &hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier
,
3377 { "Tier", "zbee_zcl_se.price.price_matrix.tier", FT_UINT8
, BASE_DEC
, NULL
,
3378 0x00, NULL
, HFILL
} },
3380 { &hf_zbee_zcl_price_price_matrix_price
,
3381 { "Price", "zbee_zcl_se.price.price_matrix.price", FT_UINT32
, BASE_DEC
, NULL
,
3382 0x00, NULL
, HFILL
} },
3384 { &hf_zbee_zcl_price_block_thresholds_sub_payload_control
,
3385 { "Sub Payload Control", "zbee_zcl_se.price.block_thresholds.sub_payload_control", FT_UINT8
, BASE_DEC
, NULL
,
3386 0x00, NULL
, HFILL
} },
3388 /* start Tier/Number of Block Thresholds fields */
3389 { &hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
,
3390 { "Tier/Number of Block Thresholds", "zbee_zcl_se.price.block_thresholds.tier_number_of_block_thresholds", FT_UINT8
, BASE_HEX
, NULL
,
3391 0x00, NULL
, HFILL
} },
3393 { &hf_zbee_zcl_price_block_thresholds_tier
,
3394 { "Tier", "zbee_zcl_se.price.block_thresholds.tier", FT_UINT8
, BASE_DEC
, NULL
,
3395 ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_TIER
, NULL
, HFILL
} },
3396 /* end Tier/Number of Block Thresholds fields */
3398 { &hf_zbee_zcl_price_block_thresholds_block_threshold
,
3399 { "Block Threshold", "zbee_zcl_se.price.block_threshold", FT_UINT48
, BASE_DEC
, NULL
,
3400 0x00, NULL
, HFILL
} },
3402 { &hf_zbee_zcl_price_co2_value
,
3403 { "CO2 Value", "zbee_zcl_se.price.co2.value", FT_UINT32
, BASE_DEC
, NULL
,
3404 0x00, NULL
, HFILL
} },
3406 { &hf_zbee_zcl_price_co2_unit
,
3407 { "CO2 Unit", "zbee_zcl_se.price.co2.unit", FT_UINT8
, BASE_HEX
, NULL
,
3408 0x00, NULL
, HFILL
} },
3410 /* start CO2 Trailing Digit fields */
3411 { &hf_zbee_zcl_price_co2_value_trailing_digit_mask
,
3412 { "CO2 Value Trailing Digit", "zbee_zcl_se.price.co2.value.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3413 0x00, NULL
, HFILL
} },
3415 { &hf_zbee_zcl_price_co2_value_trailing_digit
,
3416 { "CO2 Value Trailing Digit", "zbee_zcl_se.price.co2.value.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3417 ZBEE_ZCL_PRICE_CO2_VALUE_TRAILING_DIGIT
, NULL
, HFILL
} },
3418 /* end CO2 Trailing Digit fields */
3420 { &hf_zbee_zcl_price_tier_labels_number_of_labels
,
3421 { "Number of Labels", "zbee_zcl_se.price.tier_labels.number_of_labels", FT_UINT8
, BASE_DEC
, NULL
,
3422 0x00, NULL
, HFILL
} },
3424 { &hf_zbee_zcl_price_tier_labels_tier_id
,
3425 { "Tier ID", "zbee_zcl_se.price.tier_labels.tier_id", FT_UINT8
, BASE_DEC
, NULL
,
3426 0x00, NULL
, HFILL
} },
3428 { &hf_zbee_zcl_price_tier_labels_tier_label
,
3429 { "Tariff Label", "zbee_zcl_se.price.tier_labels.tier_label", FT_UINT_STRING
, BASE_NONE
, NULL
,
3430 0x00, NULL
, HFILL
} },
3432 { &hf_zbee_zcl_price_billing_period_start_time
,
3433 { "Billing Period Start Time", "zbee_zcl_se.price.billing_period.start_time", FT_UINT32
, BASE_CUSTOM
,
3434 CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
3436 { &hf_zbee_zcl_price_billing_period_duration
,
3437 { "Billing Period Duration", "zbee_zcl_se.price.billing_period.duration", FT_UINT24
, BASE_DEC
, NULL
,
3438 0x00, NULL
, HFILL
} },
3440 /* start Billing Period Duration Type fields */
3441 { &hf_zbee_zcl_price_billing_period_duration_type
,
3442 { "Billing Period Duration Type", "zbee_zcl_se.price.billing_period.duration.type", FT_UINT8
, BASE_HEX
, NULL
,
3443 0x00, NULL
, HFILL
} },
3445 { &hf_zbee_zcl_price_billing_period_duration_timebase
,
3446 { "Duration Timebase", "zbee_zcl_se.price.billing_period.duration.timebase", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_block_period_duration_timebase_names
),
3447 ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_TIMEBASE
, NULL
, HFILL
} },
3449 { &hf_zbee_zcl_price_billing_period_duration_control
,
3450 { "Duration Control", "zbee_zcl_se.price.billing_period.duration.control", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_block_period_duration_control_names
),
3451 ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_CONTROL
, NULL
, HFILL
} },
3452 /* end Billing Period Duration Type fields */
3454 { &hf_zbee_zcl_price_consolidated_bill
,
3455 { "Consolidated Bill", "zbee_zcl_se.price.consolidated_bill", FT_UINT32
, BASE_DEC
, NULL
,
3456 0x00, NULL
, HFILL
} },
3458 /* start Consolidated Bill Trailing Digit fields */
3459 { &hf_zbee_zcl_price_consolidated_bill_trailing_digit_mask
,
3460 { "Bill Trailing Digit", "zbee_zcl_se.price.consolidated_bill.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3461 0x00, NULL
, HFILL
} },
3463 { &hf_zbee_zcl_price_consolidated_bill_trailing_digit
,
3464 { "Bill Trailing Digit", "zbee_zcl_se.price.consolidated_bill.trailing_digit", FT_UINT8
, BASE_DEC
, NULL
,
3465 ZBEE_ZCL_PRICE_CONSOLIDATED_BILL_TRAILING_DIGIT
, NULL
, HFILL
} },
3466 /* end Consolidated Bill Trailing Digit fields */
3468 { &hf_zbee_zcl_price_credit_payment_due_date
,
3469 { "Credit Payment Due Date", "zbee_zcl_se.price.credit_payment.due_date", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
3470 0x00, NULL
, HFILL
} },
3472 { &hf_zbee_zcl_price_credit_payment_date
,
3473 { "Credit Payment Date", "zbee_zcl_se.price.credit_payment.date", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
3474 0x00, NULL
, HFILL
} },
3476 { &hf_zbee_zcl_price_credit_payment_overdue_amount
,
3477 { "Credit Payment Overdue Amount", "zbee_zcl_se.price.credit_payment.overdue_amount", FT_UINT32
, BASE_DEC
, NULL
,
3478 0x00, NULL
, HFILL
} },
3480 { &hf_zbee_zcl_price_credit_payment_status
,
3481 { "Credit Payment Status", "zbee_zcl_se.price.credit_payment.status", FT_UINT8
, BASE_DEC
, NULL
,
3482 0x00, NULL
, HFILL
} },
3484 { &hf_zbee_zcl_price_credit_payment
,
3485 { "Credit Payment", "zbee_zcl_se.price.credit_payment", FT_UINT32
, BASE_DEC
, NULL
,
3486 0x00, NULL
, HFILL
} },
3488 { &hf_zbee_zcl_price_credit_payment_ref
,
3489 { "Credit Payment Ref", "zbee_zcl_se.price.credit_payment.ref", FT_UINT_STRING
, BASE_NONE
, NULL
,
3490 0x00, NULL
, HFILL
} },
3492 { &hf_zbee_zcl_price_old_currency
,
3493 { "Old Currency", "zbee_zcl_se.price.old_currency", FT_UINT16
, BASE_HEX
, NULL
,
3494 0x00, NULL
, HFILL
} },
3496 { &hf_zbee_zcl_price_new_currency
,
3497 { "New Currency", "zbee_zcl_se.price.new_currency", FT_UINT16
, BASE_HEX
, NULL
,
3498 0x00, NULL
, HFILL
} },
3500 { &hf_zbee_zcl_price_currency_change_control_flags
,
3501 { "Currency Change Control Flags", "zbee_zcl_se.price.currency_change_control_flags", FT_UINT32
, BASE_HEX
, NULL
,
3502 0x00, NULL
, HFILL
} },
3505 /* ZCL Price subtrees */
3507 &ett_zbee_zcl_price
,
3508 &ett_zbee_zcl_price_tariff_type
,
3509 &ett_zbee_zcl_price_trailing_digit_and_price_tier
,
3510 &ett_zbee_zcl_price_number_of_price_tiers_and_register_tier
,
3511 &ett_zbee_zcl_price_alternate_cost_trailing_digit
,
3512 &ett_zbee_zcl_price_block_period_control
,
3513 &ett_zbee_zcl_price_block_period_duration_type
,
3514 &ett_zbee_zcl_price_conversion_factor_trailing_digit
,
3515 &ett_zbee_zcl_price_calorific_value_trailing_digit
,
3516 &ett_zbee_zcl_price_tariff_information_tariff_type_and_charging_scheme
,
3517 &ett_zbee_zcl_price_tariff_information_price_trailing_digit
,
3518 &ett_zbee_zcl_price_price_matrix_tier_block_id
,
3519 &ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds
,
3520 &ett_zbee_zcl_price_co2_value_trailing_digit
,
3521 &ett_zbee_zcl_price_billing_period_duration_type
,
3522 &ett_zbee_zcl_price_consolidated_bill_trailing_digit
,
3525 /* Register the ZigBee ZCL Price cluster protocol name and description */
3526 proto_zbee_zcl_price
= proto_register_protocol("ZigBee ZCL Price", "ZCL Price", ZBEE_PROTOABBREV_ZCL_PRICE
);
3527 proto_register_field_array(proto_zbee_zcl_price
, hf
, array_length(hf
));
3528 proto_register_subtree_array(ett
, array_length(ett
));
3530 /* Register the ZigBee ZCL Price dissector. */
3531 register_dissector(ZBEE_PROTOABBREV_ZCL_PRICE
, dissect_zbee_zcl_price
, proto_zbee_zcl_price
);
3532 } /*proto_register_zbee_zcl_price*/
3535 *Hands off the ZCL Price dissector.
3539 proto_reg_handoff_zbee_zcl_price(void)
3541 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_PRICE
,
3542 proto_zbee_zcl_price
,
3546 hf_zbee_zcl_price_attr_server_id
,
3547 hf_zbee_zcl_price_attr_client_id
,
3548 hf_zbee_zcl_price_srv_rx_cmd_id
,
3549 hf_zbee_zcl_price_srv_tx_cmd_id
,
3550 (zbee_zcl_fn_attr_data
)dissect_zcl_price_attr_data
3552 } /*proto_reg_handoff_zbee_zcl_price*/
3554 /* ########################################################################## */
3555 /* #### (0x0701) DEMAND RESPONSE AND LOAD CONTROL CLUSTER ################### */
3556 /* ########################################################################## */
3559 #define zbee_zcl_drlc_attr_client_names_VALUE_STRING_LIST(XXX) \
3560 XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_UTILITY_ENROLLMENT_GROUP, 0x0000, "Utility Enrollment Group" ) \
3561 XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_START_RANDOMIZATION_MINUTES,0x0001, "Start Randomization Minutes" ) \
3562 XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_DURATION_RND_MINUTES, 0x0002, "Duration Randomization Minutes" ) \
3563 XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_DEVICE_CLASS_VALUE, 0x0003, "Device Class Value" ) \
3564 /* Smart Energy */ \
3565 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DRLC_CLNT, 0xFFFE, "Attribute Reporting Status" )
3567 VALUE_STRING_ENUM(zbee_zcl_drlc_attr_client_names
);
3568 VALUE_STRING_ARRAY(zbee_zcl_drlc_attr_client_names
);
3570 /* Server Commands Received */
3571 #define zbee_zcl_drlc_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
3572 XXX(ZBEE_ZCL_CMD_ID_DRLC_REPORT_EVENT_STATUS, 0x00, "Report Event Status" ) \
3573 XXX(ZBEE_ZCL_CMD_ID_DRLC_GET_SCHEDULED_EVENTS, 0x01, "Get Scheduled Events" )
3575 VALUE_STRING_ENUM(zbee_zcl_drlc_srv_rx_cmd_names
);
3576 VALUE_STRING_ARRAY(zbee_zcl_drlc_srv_rx_cmd_names
);
3578 /* Server Commands Generated */
3579 #define zbee_zcl_drlc_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
3580 XXX(ZBEE_ZCL_CMD_ID_DRLC_LOAD_CONTROL_EVENT, 0x00, "Load Control Event" ) \
3581 XXX(ZBEE_ZCL_CMD_ID_DRLC_CANCEL_LOAD_CONTROL_EVENT, 0x01, "Cancel Load Control Event" ) \
3582 XXX(ZBEE_ZCL_CMD_ID_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS, 0x02, "Cancel All Load Control Events" )
3584 VALUE_STRING_ENUM(zbee_zcl_drlc_srv_tx_cmd_names
);
3585 VALUE_STRING_ARRAY(zbee_zcl_drlc_srv_tx_cmd_names
);
3587 #define ZBEE_ZCL_DRLC_TEMP_OFFSET_NOT_USED 0xFF
3588 #define ZBEE_ZCL_DRLC_TEMP_OFFSET_DIVIDER 10.0f
3590 #define ZBEE_ZCL_DRLC_TEMP_SET_POINT_NOT_USED 0x8000
3591 #define ZBEE_ZCL_DRLC_TEMP_SET_POINT_DIVIDER 100.0f
3593 #define ZBEE_ZCL_DRLC_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE 0x80
3595 static const range_string zbee_zcl_drlc_load_control_event_criticality_level
[] = {
3596 { 0x0, 0x0, "Reserved" },
3597 { 0x1, 0x1, "Green" },
3603 { 0x7, 0x7, "Emergency" },
3604 { 0x8, 0x8, "Planned Outage" },
3605 { 0x9, 0x9, "Service Disconnect" },
3606 { 0x0A, 0x0F, "Utility Defined" },
3607 { 0x10, 0xFF, "Reserved" },
3611 static const range_string zbee_zcl_drlc_report_event_status_event_status
[] = {
3612 { 0x0, 0x0, "Reserved for future use." },
3613 { 0x01, 0x01, "Load Control Event command received" },
3614 { 0x02, 0x02, "Event started" },
3615 { 0x03, 0x03, "Event completed" },
3616 { 0x04, 0x04, "User has chosen to \"Opt-Out\", user will not participate in this event" },
3617 { 0x05, 0x05, "User has chosen to \"Opt-In\", user will participate in this event" },
3618 { 0x06, 0x06, "The event has been cancelled" },
3619 { 0x07, 0x07, "The event has been superseded" },
3620 { 0x08, 0x08, "Event partially completed with User \"Opt-Out\"." },
3621 { 0x09, 0x09, "Event partially completed due to User \"Opt-In\"." },
3622 { 0x0A, 0x0A, "Event completed, no User participation (Previous \"Opt-Out\")." },
3623 { 0x0B, 0xF7, "Reserved for future use." },
3624 { 0xF8, 0xF8, "Rejected - Invalid Cancel Command (Default)" },
3625 { 0xF9, 0xF9, "Rejected - Invalid Cancel Command (Invalid Effective Time)" },
3626 { 0xFA, 0xFA , "Reserved" },
3627 { 0xFB, 0xFB, "Rejected - Event was received after it had expired (Current Time > Start Time + Duration)" },
3628 { 0xFC, 0xFC, "Reserved for future use." },
3629 { 0xFD, 0xFD, "Rejected - Invalid Cancel Command (Undefined Event)" },
3630 { 0xFE, 0xFE, "Load Control Event command Rejected" },
3631 { 0xFF, 0xFF, "Reserved for future use." },
3635 static const range_string zbee_zcl_drlc_report_event_signature_type
[] = {
3636 { 0x0, 0x0, "No Signature" },
3637 { 0x01, 0x01, "ECDSA" },
3638 { 0x02, 0xFF, "Reserved" },
3642 static const true_false_string zbee_zcl_drlc_randomize_start_tfs
= {
3643 "Randomize Start time",
3644 "Randomized Start not Applied"
3647 static const true_false_string zbee_zcl_drlc_randomize_duration_tfs
= {
3648 "Randomize Duration time",
3649 "Randomized Duration not Applied"
3651 /*************************/
3652 /* Function Declarations */
3653 /*************************/
3654 void proto_register_zbee_zcl_drlc(void);
3655 void proto_reg_handoff_zbee_zcl_drlc(void);
3657 static void decode_zcl_drlc_temp_offset (char *s
, uint8_t value
);
3658 static void decode_zcl_drlc_temp_set_point (char *s
, int16_t value
);
3659 static void decode_zcl_drlc_average_load_adjustment_percentage (char *s
, int8_t value
);
3661 static void dissect_zcl_drlc_load_control_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
3662 static void dissect_zcl_drlc_cancel_load_control_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
3663 static void dissect_zcl_drlc_cancel_all_load_control_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
3664 static void dissect_zcl_drlc_report_event_status (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
3665 static void dissect_zcl_drlc_get_scheduled_events (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
3667 /* Attribute Dissector Helpers */
3668 static void dissect_zcl_drlc_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
3669 /*************************/
3670 /* Global Variables */
3671 /*************************/
3673 /* Initialize the protocol and registered fields */
3674 static int proto_zbee_zcl_drlc
;
3676 static int hf_zbee_zcl_drlc_srv_tx_cmd_id
;
3677 static int hf_zbee_zcl_drlc_srv_rx_cmd_id
;
3678 static int hf_zbee_zcl_drlc_attr_client_id
;
3679 static int hf_zbee_zcl_drlc_attr_reporting_status
;
3680 static int hf_zbee_zcl_drlc_issuer_event_id
;
3681 static int hf_zbee_zcl_drlc_device_class
;
3682 static int hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace
;
3683 static int hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters
;
3684 static int hf_zbee_zcl_drlc_device_class_water_heater
;
3685 static int hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi
;
3686 static int hf_zbee_zcl_drlc_device_class_smart_appliances
;
3687 static int hf_zbee_zcl_drlc_device_class_irrigation_pump
;
3688 static int hf_zbee_zcl_drlc_device_class_managed_c_i_loads
;
3689 static int hf_zbee_zcl_drlc_device_class_simple_misc_loads
;
3690 static int hf_zbee_zcl_drlc_device_class_exterior_lighting
;
3691 static int hf_zbee_zcl_drlc_device_class_interior_lighting
;
3692 static int hf_zbee_zcl_drlc_device_class_electric_vehicle
;
3693 static int hf_zbee_zcl_drlc_device_class_generation_systems
;
3694 static int hf_zbee_zcl_drlc_device_class_reserved
;
3695 static int hf_zbee_zcl_drlc_utility_enrollment_group
;
3696 static int hf_zbee_zcl_drlc_start_time
;
3697 static int hf_zbee_zcl_drlc_duration_in_minutes
;
3698 static int hf_zbee_zcl_drlc_criticality_level
;
3699 static int hf_zbee_zcl_drlc_cooling_temp_offset
;
3700 static int hf_zbee_zcl_drlc_heating_temp_offset
;
3701 static int hf_zbee_zcl_drlc_cooling_temp_set_point
;
3702 static int hf_zbee_zcl_drlc_heating_temp_set_point
;
3703 static int hf_zbee_zcl_drlc_average_load_adjustment_percentage
;
3704 static int hf_zbee_zcl_drlc_duty_cycle
;
3705 static int hf_zbee_zcl_drlc_event_control
;
3706 static int hf_zbee_zcl_drlc_event_control_randomize_start_time
;
3707 static int hf_zbee_zcl_drlc_event_control_randomize_duration_time
;
3708 static int hf_zbee_zcl_drlc_event_control_reserved
;
3709 static int hf_zbee_zcl_drlc_cancel_control
;
3710 static int hf_zbee_zcl_drlc_cancel_control_event_in_process
;
3711 static int hf_zbee_zcl_drlc_cancel_control_reserved
;
3712 static int hf_zbee_zcl_drlc_effective_time
;
3713 static int hf_zbee_zcl_drlc_report_event_issuer_event_id
;
3714 static int hf_zbee_zcl_drlc_report_event_event_status
;
3715 static int hf_zbee_zcl_drlc_report_event_event_status_time
;
3716 static int hf_zbee_zcl_drlc_report_event_criticality_level_applied
;
3717 static int hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied
;
3718 static int hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied
;
3719 static int hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage
;
3720 static int hf_zbee_zcl_drlc_report_event_duty_cycle
;
3721 static int hf_zbee_zcl_drlc_report_event_event_control
;
3722 static int hf_zbee_zcl_drlc_report_event_signature_type
;
3723 static int hf_zbee_zcl_drlc_report_event_signature
;
3724 static int hf_zbee_zcl_drlc_get_scheduled_events_start_time
;
3725 static int hf_zbee_zcl_drlc_get_scheduled_events_number_of_events
;
3726 static int hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id
;
3728 static int* const zbee_zcl_drlc_control_event_device_classes
[] = {
3729 &hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace
,
3730 &hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters
,
3731 &hf_zbee_zcl_drlc_device_class_water_heater
,
3732 &hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi
,
3733 &hf_zbee_zcl_drlc_device_class_smart_appliances
,
3734 &hf_zbee_zcl_drlc_device_class_irrigation_pump
,
3735 &hf_zbee_zcl_drlc_device_class_managed_c_i_loads
,
3736 &hf_zbee_zcl_drlc_device_class_simple_misc_loads
,
3737 &hf_zbee_zcl_drlc_device_class_exterior_lighting
,
3738 &hf_zbee_zcl_drlc_device_class_interior_lighting
,
3739 &hf_zbee_zcl_drlc_device_class_electric_vehicle
,
3740 &hf_zbee_zcl_drlc_device_class_generation_systems
,
3741 &hf_zbee_zcl_drlc_device_class_reserved
,
3745 static int* const hf_zbee_zcl_drlc_event_control_flags
[] = {
3746 &hf_zbee_zcl_drlc_event_control_randomize_start_time
,
3747 &hf_zbee_zcl_drlc_event_control_randomize_duration_time
,
3748 &hf_zbee_zcl_drlc_event_control_reserved
,
3752 static int* const hf_zbee_zcl_drlc_cancel_control_flags
[] = {
3753 &hf_zbee_zcl_drlc_cancel_control_event_in_process
,
3754 &hf_zbee_zcl_drlc_cancel_control_reserved
,
3757 /* Initialize the subtree pointers */
3758 static int ett_zbee_zcl_drlc
;
3759 static int ett_zbee_zcl_drlc_device_class
;
3760 static int ett_zbee_zcl_drlc_event_control
;
3761 static int ett_zbee_zcl_drlc_cancel_control
;
3763 /*************************/
3764 /* Function Bodies */
3765 /*************************/
3767 * This function decodes Temperature Offset.
3769 * @param s string to display
3770 * @param value value to decode
3773 decode_zcl_drlc_temp_offset(char *s
, uint8_t value
)
3775 if (value
== ZBEE_ZCL_DRLC_TEMP_OFFSET_NOT_USED
)
3776 snprintf(s
, ITEM_LABEL_LENGTH
, "Not Used");
3779 temp_delta
= value
/ ZBEE_ZCL_DRLC_TEMP_OFFSET_DIVIDER
;
3780 snprintf(s
, ITEM_LABEL_LENGTH
, "%+.2f%s", temp_delta
, units_degree_celsius
.singular
);
3782 } /*decode_zcl_drlc_temp_offset*/
3785 * This function decodes Temperature Set Point.
3787 * @param s string to display
3788 * @param value value to decode
3790 static void decode_zcl_drlc_temp_set_point(char *s
, int16_t value
)
3792 if (value
& ZBEE_ZCL_DRLC_TEMP_SET_POINT_NOT_USED
)
3793 snprintf(s
, ITEM_LABEL_LENGTH
, "Not Used");
3796 temp_delta
= value
/ ZBEE_ZCL_DRLC_TEMP_SET_POINT_DIVIDER
;
3797 snprintf(s
, ITEM_LABEL_LENGTH
, "%+.2f%s", temp_delta
, units_degree_celsius
.singular
);
3799 } /*decode_zcl_drlc_temp_set_point*/
3802 * This function decodes Average Load Adjustment Percentage.
3804 * @param s string to display
3805 * @param value value to decode
3807 static void decode_zcl_drlc_average_load_adjustment_percentage(char *s
, int8_t value
)
3809 if (value
& ZBEE_ZCL_DRLC_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE
)
3810 snprintf(s
, ITEM_LABEL_LENGTH
, "Not Used");
3812 snprintf(s
, ITEM_LABEL_LENGTH
, "%+d%%", value
);
3814 } /*decode_zcl_drlc_average_load_adjustment_percentage*/
3817 *This function is called by ZCL foundation dissector in order to decode
3819 *@param tree pointer to data tree Wireshark uses to display packet.
3820 *@param tvb pointer to buffer containing raw packet.
3821 *@param offset pointer to buffer offset
3822 *@param attr_id attribute identifier
3823 *@param data_type attribute data type
3824 *@param client_attr ZCL client
3827 dissect_zcl_drlc_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
3830 /* applies to all SE clusters */
3831 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DRLC_CLNT
:
3832 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
3836 default: /* Catch all */
3837 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
3840 } /*dissect_zcl_drlc_attr_data*/
3843 *This function is called by ZCL foundation dissector in order to decode
3844 *DRLC Load Control Event Command Payload.
3846 *@param tree pointer to data tree Wireshark uses to display packet.
3847 *@param tvb pointer to buffer containing raw packet.
3848 *@param offset pointer to buffer offset
3851 dissect_zcl_drlc_load_control_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
3853 /* Issuer Event ID */
3854 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_issuer_event_id
, tvb
,
3855 *offset
, 4, ENC_LITTLE_ENDIAN
);
3859 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_device_class
, ett_zbee_zcl_drlc_device_class
,
3860 zbee_zcl_drlc_control_event_device_classes
, ENC_LITTLE_ENDIAN
);
3863 /* Utility Enrollment Group */
3864 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_utility_enrollment_group
, tvb
,
3865 *offset
, 1, ENC_NA
);
3869 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_start_time
, tvb
,
3870 *offset
, 4, ENC_LITTLE_ENDIAN
);
3872 /* Duration In Minutes */
3873 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_duration_in_minutes
, tvb
,
3874 *offset
, 2, ENC_LITTLE_ENDIAN
);
3877 /* Criticality Level */
3878 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_criticality_level
, tvb
,
3879 *offset
, 1, ENC_NA
);
3882 /* Cooling Temperature Offset */
3883 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_cooling_temp_offset
, tvb
,
3884 *offset
, 1, ENC_NA
);
3887 /* Heating Temperature Offset */
3888 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_heating_temp_offset
, tvb
,
3889 *offset
, 1, ENC_NA
);
3892 /* Cooling Temperature Set Point */
3893 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_cooling_temp_set_point
, tvb
,
3894 *offset
, 2, ENC_LITTLE_ENDIAN
);
3897 /* Heating Temperature Set Point */
3898 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_heating_temp_set_point
, tvb
,
3899 *offset
, 2, ENC_LITTLE_ENDIAN
);
3902 /* Average Load Adjustment Percentage */
3903 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_average_load_adjustment_percentage
, tvb
,
3904 *offset
, 1, ENC_NA
);
3908 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_duty_cycle
, tvb
,
3909 *offset
, 1, ENC_NA
);
3913 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_event_control
, ett_zbee_zcl_drlc_event_control
,
3914 hf_zbee_zcl_drlc_event_control_flags
, ENC_LITTLE_ENDIAN
);
3917 } /*dissect_zcl_drlc_load_control_event*/
3920 *This function is called by ZCL foundation dissector in order to decode
3921 *DRLC Cancel Load Control Event Command Payload.
3923 *@param tree pointer to data tree Wireshark uses to display packet.
3924 *@param tvb pointer to buffer containing raw packet.
3925 *@param offset pointer to buffer offset
3928 dissect_zcl_drlc_cancel_load_control_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
3930 /* Issuer Event ID */
3931 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_issuer_event_id
, tvb
,
3932 *offset
, 4, ENC_LITTLE_ENDIAN
);
3936 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_device_class
, ett_zbee_zcl_drlc_device_class
,
3937 zbee_zcl_drlc_control_event_device_classes
, ENC_LITTLE_ENDIAN
);
3940 /* Utility Enrollment Group */
3941 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_utility_enrollment_group
, tvb
,
3942 *offset
, 1, ENC_NA
);
3945 /* Cancel Control */
3946 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_cancel_control
, ett_zbee_zcl_drlc_cancel_control
,
3947 hf_zbee_zcl_drlc_cancel_control_flags
, ENC_LITTLE_ENDIAN
);
3950 /* Effective Time */
3951 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_effective_time
, tvb
,
3952 *offset
, 4, ENC_LITTLE_ENDIAN
);
3958 *This function is called by ZCL foundation dissector in order to decode
3959 *DRLC Cancel All Load Control Events Command Payload.
3961 *@param tree pointer to data tree Wireshark uses to display packet.
3962 *@param tvb pointer to buffer containing raw packet.
3963 *@param offset pointer to buffer offset
3966 dissect_zcl_drlc_cancel_all_load_control_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
3968 /* Cancel Control */
3969 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_cancel_control
, ett_zbee_zcl_drlc_cancel_control
,
3970 hf_zbee_zcl_drlc_cancel_control_flags
, ENC_LITTLE_ENDIAN
);
3973 } /*dissect_zcl_drlc_cancel_all_load_control_event*/
3976 *This function is called by ZCL foundation dissector in order to decode
3977 *DRLC Report Event Status Command Payload.
3979 *@param tree pointer to data tree Wireshark uses to display packet.
3980 *@param tvb pointer to buffer containing raw packet.
3981 *@param offset pointer to buffer offset
3984 dissect_zcl_drlc_report_event_status(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
3986 /* Issuer Event ID */
3987 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_issuer_event_id
, tvb
,
3988 *offset
, 4, ENC_LITTLE_ENDIAN
);
3992 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_event_status
, tvb
, *offset
, 1, ENC_NA
);
3995 /* Event Status Time */
3996 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_event_status_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
3999 /* Criticality Level Applied */
4000 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_criticality_level_applied
, tvb
,
4001 *offset
, 1, ENC_NA
);
4004 /* Cooling Temperature Set Point Applied */
4005 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied
, tvb
,
4006 *offset
, 2, ENC_LITTLE_ENDIAN
);
4009 /* Heating Temperature Set Point Applied */
4010 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied
, tvb
,
4011 *offset
, 2, ENC_LITTLE_ENDIAN
);
4014 /* Average Load Adjustment Percentage Applied */
4015 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage
, tvb
,
4016 *offset
, 1, ENC_NA
);
4019 /* Duty Cycle Applied */
4020 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_duty_cycle
, tvb
,
4021 *offset
, 1, ENC_NA
);
4025 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_drlc_report_event_event_control
, ett_zbee_zcl_drlc_event_control
,
4026 hf_zbee_zcl_drlc_event_control_flags
, ENC_LITTLE_ENDIAN
);
4029 /* Signature Type */
4030 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_signature_type
, tvb
,
4031 *offset
, 1, ENC_NA
);
4036 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
4037 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_report_event_signature
, tvb
,
4038 *offset
, rem_len
, ENC_NA
);
4040 } /*dissect_zcl_drlc_report_event_status*/
4043 *This function is called by ZCL foundation dissector in order to decode
4044 *DRLC Get Scheduled Events Command Payload.
4046 *@param tree pointer to data tree Wireshark uses to display packet.
4047 *@param tvb pointer to buffer containing raw packet.
4048 *@param offset pointer to buffer offset
4051 dissect_zcl_drlc_get_scheduled_events(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
4056 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_get_scheduled_events_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
4059 /* Number of Events */
4060 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_get_scheduled_events_number_of_events
, tvb
,
4061 *offset
, 1, ENC_NA
);
4064 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
4066 /* Issuer Event ID */
4067 proto_tree_add_item(tree
, hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id
, tvb
,
4068 *offset
, rem_len
, ENC_LITTLE_ENDIAN
);
4071 } /*dissect_zcl_drlc_report_event_status*/
4074 *ZigBee ZCL DRLC cluster dissector for wireshark.
4076 *@param tvb pointer to buffer containing raw packet.
4077 *@param pinfo pointer to packet information fields
4078 *@param tree pointer to data tree Wireshark uses to display packet.
4081 dissect_zbee_zcl_drlc(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
4083 zbee_zcl_packet
*zcl
;
4084 unsigned offset
= 0;
4087 proto_tree
*payload_tree
;
4089 /* Reject the packet if data is NULL */
4092 zcl
= (zbee_zcl_packet
*)data
;
4093 cmd_id
= zcl
->cmd_id
;
4095 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
4096 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
4097 /* Append the command name to the info column. */
4098 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
4099 val_to_str_const(cmd_id
, zbee_zcl_drlc_srv_rx_cmd_names
, "Unknown Command"),
4102 /* Add the command ID. */
4103 proto_tree_add_uint(tree
, hf_zbee_zcl_drlc_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
4105 /* Check is this command has a payload, than add the payload tree */
4106 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
4108 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_drlc
, NULL
, "Payload");
4110 /* Call the appropriate command dissector */
4113 case ZBEE_ZCL_CMD_ID_DRLC_REPORT_EVENT_STATUS
:
4114 dissect_zcl_drlc_report_event_status(tvb
, payload_tree
, &offset
);
4117 case ZBEE_ZCL_CMD_ID_DRLC_GET_SCHEDULED_EVENTS
:
4118 dissect_zcl_drlc_get_scheduled_events(tvb
, payload_tree
, &offset
);
4126 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
4127 /* Append the command name to the info column. */
4128 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
4129 val_to_str_const(cmd_id
, zbee_zcl_drlc_srv_tx_cmd_names
, "Unknown Command"),
4132 /* Add the command ID. */
4133 proto_tree_add_uint(tree
, hf_zbee_zcl_drlc_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
4135 /* Check is this command has a payload, than add the payload tree */
4136 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
4138 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_drlc
, NULL
, "Payload");
4140 /* Call the appropriate command dissector */
4143 case ZBEE_ZCL_CMD_ID_DRLC_LOAD_CONTROL_EVENT
:
4144 dissect_zcl_drlc_load_control_event(tvb
, payload_tree
, &offset
);
4147 case ZBEE_ZCL_CMD_ID_DRLC_CANCEL_LOAD_CONTROL_EVENT
:
4148 dissect_zcl_drlc_cancel_load_control_event(tvb
, payload_tree
, &offset
);
4151 case ZBEE_ZCL_CMD_ID_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS
:
4152 dissect_zcl_drlc_cancel_all_load_control_event(tvb
, payload_tree
, &offset
);
4161 return tvb_captured_length(tvb
);
4162 } /*dissect_zbee_zcl_drlc*/
4165 *This function registers the ZCL DRLC dissector
4169 proto_register_zbee_zcl_drlc(void)
4171 static hf_register_info hf
[] = {
4173 { &hf_zbee_zcl_drlc_attr_client_id
,
4174 { "Attribute", "zbee_zcl_se.drlc.attr_client_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_drlc_attr_client_names
),
4175 0x0, NULL
, HFILL
} },
4177 { &hf_zbee_zcl_drlc_attr_reporting_status
, /* common to all SE clusters */
4178 { "Attribute Reporting Status", "zbee_zcl_se.drlc.attr.attr_reporting_status",
4179 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
4181 { &hf_zbee_zcl_drlc_srv_tx_cmd_id
,
4182 { "Command", "zbee_zcl_se.drlc.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_drlc_srv_tx_cmd_names
),
4183 0x00, NULL
, HFILL
} },
4185 { &hf_zbee_zcl_drlc_srv_rx_cmd_id
,
4186 { "Command", "zbee_zcl_se.drlc.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_drlc_srv_rx_cmd_names
),
4187 0x00, NULL
, HFILL
} },
4189 { &hf_zbee_zcl_drlc_issuer_event_id
,
4190 { "Issuer Event ID", "zbee_zcl_se.drlc.issuer_id",
4191 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4193 { &hf_zbee_zcl_drlc_device_class
,
4194 { "Device Class", "zbee_zcl_se.drlc.device_class",
4195 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4197 { &hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace
,
4198 { "HVAC Compressor or Furnace", "zbee_zcl_se.drlc.device_class.hvac_compressor_or_furnace",
4199 FT_BOOLEAN
, 16, NULL
, 0x0001, NULL
, HFILL
} },
4201 { &hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters
,
4202 { "Strip Heaters/Baseboard Heaters", "zbee_zcl_se.drlc.device_class.strip_heaters_baseboard_heaters",
4203 FT_BOOLEAN
, 16, NULL
, 0x0002, NULL
, HFILL
} },
4205 { &hf_zbee_zcl_drlc_device_class_water_heater
,
4206 { "Water Heater", "zbee_zcl_se.drlc.device_class.water_heater",
4207 FT_BOOLEAN
, 16, NULL
, 0x0004, NULL
, HFILL
} },
4209 { &hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi
,
4210 { "Pool Pump/Spa/Jacuzzi", "zbee_zcl_se.drlc.device_class.pool_pump_spa_jacuzzi",
4211 FT_BOOLEAN
, 16, NULL
, 0x0008, NULL
, HFILL
} },
4213 { &hf_zbee_zcl_drlc_device_class_smart_appliances
,
4214 { "Smart Appliances", "zbee_zcl_se.drlc.device_class.smart_appliances",
4215 FT_BOOLEAN
, 16, NULL
, 0x0010, NULL
, HFILL
} },
4217 { &hf_zbee_zcl_drlc_device_class_irrigation_pump
,
4218 { "Irrigation Pump", "zbee_zcl_se.drlc.device_class.irrigation_pump",
4219 FT_BOOLEAN
, 16, NULL
, 0x0020, NULL
, HFILL
} },
4221 { &hf_zbee_zcl_drlc_device_class_managed_c_i_loads
,
4222 { "Managed Commercial & Industrial (C&I) loads", "zbee_zcl_se.drlc.device_class.managed_c_i_loads",
4223 FT_BOOLEAN
, 16, NULL
, 0x0040, NULL
, HFILL
} },
4225 { &hf_zbee_zcl_drlc_device_class_simple_misc_loads
,
4226 { "Simple misc. (Residential On/Off) loads", "zbee_zcl_se.drlc.device_class.simple_misc_loads",
4227 FT_BOOLEAN
, 16, NULL
, 0x0080, NULL
, HFILL
} },
4229 { &hf_zbee_zcl_drlc_device_class_exterior_lighting
,
4230 { "Exterior Lighting", "zbee_zcl_se.drlc.device_class.exterior_lighting",
4231 FT_BOOLEAN
, 16, NULL
, 0x0100, NULL
, HFILL
} },
4233 { &hf_zbee_zcl_drlc_device_class_interior_lighting
,
4234 { "Interior Lighting", "zbee_zcl_se.drlc.device_class.interior_lighting",
4235 FT_BOOLEAN
, 16, NULL
, 0x0200, NULL
, HFILL
} },
4237 { &hf_zbee_zcl_drlc_device_class_electric_vehicle
,
4238 { "Electric Vehicle", "zbee_zcl_se.drlc.device_class.electric_vehicle",
4239 FT_BOOLEAN
, 16, NULL
, 0x0400, NULL
, HFILL
} },
4241 { &hf_zbee_zcl_drlc_device_class_generation_systems
,
4242 { "Generation Systems", "zbee_zcl_se.drlc.device_class.generation_systems",
4243 FT_BOOLEAN
, 16, NULL
, 0x0800, NULL
, HFILL
} },
4245 { &hf_zbee_zcl_drlc_device_class_reserved
,
4246 { "Reserved", "zbee_zcl_se.drlc.device_class.reserved",
4247 FT_UINT16
, BASE_HEX
, NULL
, 0xF000, NULL
, HFILL
} },
4249 { &hf_zbee_zcl_drlc_utility_enrollment_group
,
4250 { "Utility Enrollment Group", "zbee_zcl_se.drlc.utility_enrollment_group",
4251 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4253 { &hf_zbee_zcl_drlc_start_time
,
4254 { "Start Time", "zbee_zcl_se.drlc.start_time",
4255 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(decode_zcl_se_utc_time
), 0x0, NULL
, HFILL
} },
4257 { &hf_zbee_zcl_drlc_duration_in_minutes
,
4258 { "Duration In Minutes", "zbee_zcl_se.drlc.duration_in_minutes",
4259 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
} },
4261 { &hf_zbee_zcl_drlc_criticality_level
,
4262 { "Criticality Level", "zbee_zcl_se.drlc.criticality_level",
4263 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_drlc_load_control_event_criticality_level
), 0x0, NULL
, HFILL
} },
4265 { &hf_zbee_zcl_drlc_cooling_temp_offset
,
4266 { "Cooling Temperature Offset", "zbee_zcl_se.drlc.cooling_temperature_offset",
4267 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_offset
), 0x0, NULL
, HFILL
} },
4269 { &hf_zbee_zcl_drlc_heating_temp_offset
,
4270 { "Heating Temperature Offset", "zbee_zcl_se.drlc.heating_temperature_offset",
4271 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_offset
), 0x0, NULL
, HFILL
} },
4273 { &hf_zbee_zcl_drlc_cooling_temp_set_point
,
4274 { "Cooling Temperature Set Point", "zbee_zcl_se.drlc.cooling_temperature_set_point",
4275 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
4277 { &hf_zbee_zcl_drlc_heating_temp_set_point
,
4278 { "Heating Temperature Set Point", "zbee_zcl_se.drlc.heating_temperature_set_point",
4279 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
4281 { &hf_zbee_zcl_drlc_average_load_adjustment_percentage
,
4282 { "Average Load Adjustment Percentage", "zbee_zcl_se.drlc.average_load_adjustment_percentage",
4283 FT_INT8
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage
), 0x0, NULL
, HFILL
} },
4285 { &hf_zbee_zcl_drlc_duty_cycle
,
4286 { "Duty Cycle", "zbee_zcl_se.drlc.duty_cycle",
4287 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4289 { &hf_zbee_zcl_drlc_event_control
,
4290 { "Event Control", "zbee_zcl_se.drlc.event_control",
4291 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4293 { &hf_zbee_zcl_drlc_event_control_randomize_start_time
,
4294 { "Randomize Start time", "zbee_zcl_se.drlc.randomize_start_time",
4295 FT_BOOLEAN
, 8, TFS(&zbee_zcl_drlc_randomize_start_tfs
), 0x01, NULL
, HFILL
} },
4297 { &hf_zbee_zcl_drlc_event_control_randomize_duration_time
,
4298 { "Randomize Duration time", "zbee_zcl_se.drlc.randomize_duration_time",
4299 FT_BOOLEAN
, 8, TFS(&zbee_zcl_drlc_randomize_duration_tfs
), 0x02, NULL
, HFILL
} },
4301 { &hf_zbee_zcl_drlc_event_control_reserved
,
4302 { "Reserved", "zbee_zcl_se.drlc.reserved",
4303 FT_UINT8
, BASE_HEX
, NULL
, 0xFC, NULL
, HFILL
} },
4305 { &hf_zbee_zcl_drlc_cancel_control
,
4306 { "Cancel Control", "zbee_zcl_se.drlc.cancel_control",
4307 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4309 { &hf_zbee_zcl_drlc_cancel_control_event_in_process
,
4310 { "Event in process", "zbee_zcl_se.drlc.cancel_control.event_in_process",
4311 FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
} },
4313 { &hf_zbee_zcl_drlc_cancel_control_reserved
,
4314 { "Reserved", "zbee_zcl_se.drlc.cancel_control.reserved",
4315 FT_UINT8
, BASE_HEX
, NULL
, 0xFE, NULL
, HFILL
} },
4317 { &hf_zbee_zcl_drlc_effective_time
,
4318 { "Reserved", "zbee_zcl_se.drlc.effective_time",
4319 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(decode_zcl_se_utc_time
), 0xFE, NULL
, HFILL
} },
4321 { &hf_zbee_zcl_drlc_report_event_issuer_event_id
,
4322 { "Issuer Event ID", "zbee_zcl_se.drlc.report_event.issuer_id",
4323 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4325 { &hf_zbee_zcl_drlc_report_event_event_status
,
4326 { "Event Status", "zbee_zcl_se.drlc.report_event.event_status",
4327 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_drlc_report_event_status_event_status
), 0x0, NULL
, HFILL
} },
4329 { &hf_zbee_zcl_drlc_report_event_event_status_time
,
4330 { "Event Status Time", "zbee_zcl_se.drlc.report_event.event_status_time",
4331 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
, 0x0, NULL
, HFILL
} },
4333 { &hf_zbee_zcl_drlc_report_event_criticality_level_applied
,
4334 { "Criticality Level Applied", "zbee_zcl_se.drlc.report_event.criticality_level_applied",
4335 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_drlc_load_control_event_criticality_level
), 0x0, NULL
, HFILL
} },
4337 { &hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied
,
4338 { "Cooling Temperature Set Point Applied", "zbee_zcl_se.drlc.report_event.cooling_temperature_set_point_applied",
4339 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
4341 { &hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied
,
4342 { "Heating Temperature Set Point Applied", "zbee_zcl_se.drlc.report_event.heating_temperature_set_point_applied",
4343 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
4345 { &hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage
,
4346 { "Average Load Adjustment Percentage Applied", "zbee_zcl_se.drlc.report_event.average_load_adjustment_percentage_applied",
4347 FT_INT8
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage
), 0x0, NULL
, HFILL
} },
4349 { &hf_zbee_zcl_drlc_report_event_duty_cycle
,
4350 { "Duty Cycle Applied", "zbee_zcl_se.drlc.report_event.duty_cycle_applied",
4351 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4353 { &hf_zbee_zcl_drlc_report_event_event_control
,
4354 { "Event Control", "zbee_zcl_se.drlc.report_event.event_control",
4355 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4357 { &hf_zbee_zcl_drlc_report_event_signature_type
,
4358 { "Signature Type", "zbee_zcl_se.drlc.report_event.signature_type",
4359 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_drlc_report_event_signature_type
), 0x0, NULL
, HFILL
} },
4361 { &hf_zbee_zcl_drlc_report_event_signature
,
4362 { "Signature", "zbee_zcl_se.drlc.report_event.signature",
4363 FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
} },
4365 { &hf_zbee_zcl_drlc_get_scheduled_events_start_time
,
4366 { "Start Time", "zbee_zcl_se.drlc.get_scheduled_events.start_time",
4367 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(decode_zcl_se_utc_time
), 0x0, NULL
, HFILL
} },
4369 { &hf_zbee_zcl_drlc_get_scheduled_events_number_of_events
,
4370 { "Number of Events", "zbee_zcl_se.drlc.get_scheduled_events.numbers_of_events",
4371 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4373 { &hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id
,
4374 { "Minimum Issuer Event ID", "zbee_zcl_se.drlc.get_scheduled_events.issuer_event_id",
4375 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
4378 /* ZCL DRLC subtrees */
4381 &ett_zbee_zcl_drlc_device_class
,
4382 &ett_zbee_zcl_drlc_event_control
,
4383 &ett_zbee_zcl_drlc_cancel_control
4386 /* Register the ZigBee ZCL DRLC cluster protocol name and description */
4387 proto_zbee_zcl_drlc
= proto_register_protocol("ZigBee ZCL DLRC", "ZCL DLRC", ZBEE_PROTOABBREV_ZCL_DRLC
);
4388 proto_register_field_array(proto_zbee_zcl_drlc
, hf
, array_length(hf
));
4389 proto_register_subtree_array(ett
, array_length(ett
));
4391 /* Register the ZigBee ZCL DRLC dissector. */
4392 register_dissector(ZBEE_PROTOABBREV_ZCL_DRLC
, dissect_zbee_zcl_drlc
, proto_zbee_zcl_drlc
);
4393 } /*proto_register_zbee_zcl_drlc*/
4396 *Hands off the ZCL DRLC dissector.
4400 proto_reg_handoff_zbee_zcl_drlc(void)
4402 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DRLC
,
4403 proto_zbee_zcl_drlc
,
4405 ZBEE_ZCL_CID_DEMAND_RESPONSE_LOAD_CONTROL
,
4408 hf_zbee_zcl_drlc_attr_client_id
,
4409 hf_zbee_zcl_drlc_srv_rx_cmd_id
,
4410 hf_zbee_zcl_drlc_srv_tx_cmd_id
,
4411 (zbee_zcl_fn_attr_data
)dissect_zcl_drlc_attr_data
4413 } /*proto_reg_handoff_zbee_zcl_drlc*/
4415 /* ########################################################################## */
4416 /* #### (0x0702) METERING CLUSTER ########################################## */
4417 /* ########################################################################## */
4420 #define zbee_zcl_met_attr_server_names_VALUE_STRING_LIST(XXX) \
4421 /* Reading Information Set */ \
4422 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_SUM_DEL, 0x0000, "Current Summation Delivered" ) \
4423 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_SUM_RECV, 0x0001, "Current Summation Received" ) \
4424 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DE_DEL, 0x0002, "Current Max Demand Delivered" ) \
4425 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DE_RECV, 0x0003, "Current Max Demand Received" ) \
4426 XXX(ZBEE_ZCL_ATTR_ID_MET_DFT_SUM, 0x0004, "DFTSummation" ) \
4427 XXX(ZBEE_ZCL_ATTR_ID_MET_DAILY_FREEZE_TIME, 0x0005, "Daily Freeze Time" ) \
4428 XXX(ZBEE_ZCL_ATTR_ID_MET_POWER_FACTOR, 0x0006, "Power Factor" ) \
4429 XXX(ZBEE_ZCL_ATTR_ID_MET_READ_SNAP_TIME, 0x0007, "Reading Snapshot Time" ) \
4430 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_DEL_TIME, 0x0008, "Current Max Demand Delivered Time" ) \
4431 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_RECV_TIME, 0x0009, "Current Max Demand Received Time" ) \
4432 XXX(ZBEE_ZCL_ATTR_ID_MET_DEFAULT_UPDATE_PERIOD, 0x000A, "Default Update Period" ) \
4433 XXX(ZBEE_ZCL_ATTR_ID_MET_FAST_POLL_UPDATE_PERIOD, 0x000B, "Fast Poll Update Period" ) \
4434 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_BLOCK_PER_CON_DEL, 0x000C, "Current Block Period Consumption Delivered" ) \
4435 XXX(ZBEE_ZCL_ATTR_ID_MET_DAILY_CON_TARGET, 0x000D, "Daily Consumption Target" ) \
4436 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_BLOCK, 0x000E, "Current Block" ) \
4437 XXX(ZBEE_ZCL_ATTR_ID_MET_PROFILE_INTERVAL_PERIOD, 0x000F, "Profile Interval Period" ) \
4438 XXX(ZBEE_ZCL_ATTR_ID_MET_DEPRECATED, 0x0010, "Deprecated" ) \
4439 XXX(ZBEE_ZCL_ATTR_ID_MET_PRESET_READING_TIME, 0x0011, "Preset Reading Time" ) \
4440 XXX(ZBEE_ZCL_ATTR_ID_MET_VOLUME_PER_REPORT, 0x0012, "Volume Per Report" ) \
4441 XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_RESTRICTION, 0x0013, "Flow Restriction" ) \
4442 XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_STATUS, 0x0014, "Supply Status" ) \
4443 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_INLET_ENER_CAR_SUM, 0x0015, "Current Inlet Energy Carrier Summation" ) \
4444 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_OUTLET_ENER_CAR_SUM, 0x0016, "Current Outlet Energy Carrier Summation" ) \
4445 XXX(ZBEE_ZCL_ATTR_ID_MET_INLET_TEMPERATURE, 0x0017, "Inlet Temperature" ) \
4446 XXX(ZBEE_ZCL_ATTR_ID_MET_OUTLET_TEMPERATURE, 0x0018, "Outlet Temperature" ) \
4447 XXX(ZBEE_ZCL_ATTR_ID_MET_CONTROL_TEMPERATURE, 0x0019, "Control Temperature" ) \
4448 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_INLET_ENER_CAR_DEM, 0x001A, "Current Inlet Energy Carrier Demand" ) \
4449 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_OUTLET_ENER_CAR_DEM, 0x001B, "Current Outlet Energy Carrier Demand" ) \
4450 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_BLOCK_CON_DEL, 0x001C, "Previous Block Period Consumption Delivered" ) \
4451 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_BLOCL_CON_RECV, 0x001D, "Current Block Period Consumption Received" ) \
4452 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_BLOCK_RECEIVED, 0x001E, "Current Block Received" ) \
4453 XXX(ZBEE_ZCL_ATTR_ID_MET_DFT_SUMMATION_RECEIVED, 0x001F, "DFT Summation Received" ) \
4454 XXX(ZBEE_ZCL_ATTR_ID_MET_ACTIVE_REG_TIER_DEL, 0x0020, "Active Register Tier Delivered" ) \
4455 XXX(ZBEE_ZCL_ATTR_ID_MET_ACTIVE_REG_TIER_RECV, 0x0021, "Active Register Tier Received" ) \
4456 XXX(ZBEE_ZCL_ATTR_ID_MET_LAST_BLOCK_SWITCH_TIME, 0x0022, "Last Block Switch Time" ) \
4457 /* Summation TOU Information Set */ \
4458 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_1_SUM_DEL, 0x0100, "Current Tier 1 Summation Delivered" ) \
4459 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_1_SUM_RECV, 0x0101, "Current Tier 1 Summation Received" ) \
4460 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_2_SUM_DEL, 0x0102, "Current Tier 2 Summation Delivered" ) \
4461 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_2_SUM_RECV, 0x0103, "Current Tier 2 Summation Received" ) \
4462 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_3_SUM_DEL, 0x0104, "Current Tier 3 Summation Delivered" ) \
4463 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_3_SUM_RECV, 0x0105, "Current Tier 3 Summation Received" ) \
4464 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_4_SUM_DEL, 0x0106, "Current Tier 4 Summation Delivered" ) \
4465 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_4_SUM_RECV, 0x0107, "Current Tier 4 Summation Received" ) \
4466 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_5_SUM_DEL, 0x0108, "Current Tier 5 Summation Delivered" ) \
4467 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_5_SUM_RECV, 0x0109, "Current Tier 5 Summation Received" ) \
4468 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_6_SUM_DEL, 0x010A, "Current Tier 6 Summation Delivered" ) \
4469 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_6_SUM_RECV, 0x010B, "Current Tier 6 Summation Received" ) \
4470 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_7_SUM_DEL, 0x010C, "Current Tier 7 Summation Delivered" ) \
4471 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_7_SUM_RECV, 0x010D, "Current Tier 7 Summation Received" ) \
4472 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_8_SUM_DEL, 0x010E, "Current Tier 8 Summation Delivered" ) \
4473 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_8_SUM_RECV, 0x010F, "Current Tier 8 Summation Received" ) \
4474 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_9_SUM_DEL, 0x0110, "Current Tier 9 Summation Delivered" ) \
4475 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_9_SUM_RECV, 0x0111, "Current Tier 9 Summation Received" ) \
4476 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_10_SUM_DEL, 0x0112, "Current Tier 10 Summation Delivered" ) \
4477 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_10_SUM_RECV, 0x0113, "Current Tier 10 Summation Received" ) \
4478 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_11_SUM_DEL, 0x0114, "Current Tier 11 Summation Delivered" ) \
4479 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_11_SUM_RECV, 0x0115, "Current Tier 11 Summation Received" ) \
4480 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_12_SUM_DEL, 0x0116, "Current Tier 12 Summation Delivered" ) \
4481 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_12_SUM_RECV, 0x0117, "Current Tier 12 Summation Received" ) \
4482 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_13_SUM_DEL, 0x0118, "Current Tier 13 Summation Delivered" ) \
4483 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_13_SUM_RECV, 0x0119, "Current Tier 13 Summation Received" ) \
4484 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_14_SUM_DEL, 0x011A, "Current Tier 14 Summation Delivered" ) \
4485 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_14_SUM_RECV, 0x011B, "Current Tier 14 Summation Received" ) \
4486 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_15_SUM_DEL, 0x011C, "Current Tier 15 Summation Delivered" ) \
4487 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_15_SUM_RECV, 0x011D, "Current Tier 15 Summation Received" ) \
4488 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_16_SUM_DEL, 0x011E, "Current Tier 16 Summation Delivered" ) \
4489 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_16_SUM_RECV, 0x011F, "Current Tier 16 Summation Received" ) \
4490 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_17_SUM_DEL, 0x0120, "Current Tier 17 Summation Delivered" ) \
4491 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_17_SUM_RECV, 0x0121, "Current Tier 17 Summation Received" ) \
4492 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_18_SUM_DEL, 0x0122, "Current Tier 18 Summation Delivered" ) \
4493 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_18_SUM_RECV, 0x0123, "Current Tier 18 Summation Received" ) \
4494 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_19_SUM_DEL, 0x0124, "Current Tier 19 Summation Delivered" ) \
4495 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_19_SUM_RECV, 0x0125, "Current Tier 19 Summation Received" ) \
4496 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_20_SUM_DEL, 0x0126, "Current Tier 20 Summation Delivered" ) \
4497 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_20_SUM_RECV, 0x0127, "Current Tier 20 Summation Received" ) \
4498 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_21_SUM_DEL, 0x0128, "Current Tier 21 Summation Delivered" ) \
4499 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_21_SUM_RECV, 0x0129, "Current Tier 21 Summation Received" ) \
4500 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_22_SUM_DEL, 0x012A, "Current Tier 22 Summation Delivered" ) \
4501 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_22_SUM_RECV, 0x012B, "Current Tier 22 Summation Received" ) \
4502 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_23_SUM_DEL, 0x012C, "Current Tier 23 Summation Delivered" ) \
4503 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_23_SUM_RECV, 0x012D, "Current Tier 23 Summation Received" ) \
4504 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_24_SUM_DEL, 0x012E, "Current Tier 24 Summation Delivered" ) \
4505 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_24_SUM_RECV, 0x012F, "Current Tier 24 Summation Received" ) \
4506 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_25_SUM_DEL, 0x0130, "Current Tier 25 Summation Delivered" ) \
4507 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_25_SUM_RECV, 0x0131, "Current Tier 25 Summation Received" ) \
4508 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_26_SUM_DEL, 0x0132, "Current Tier 26 Summation Delivered" ) \
4509 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_26_SUM_RECV, 0x0133, "Current Tier 26 Summation Received" ) \
4510 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_27_SUM_DEL, 0x0134, "Current Tier 27 Summation Delivered" ) \
4511 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_27_SUM_RECV, 0x0135, "Current Tier 27 Summation Received" ) \
4512 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_28_SUM_DEL, 0x0136, "Current Tier 28 Summation Delivered" ) \
4513 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_28_SUM_RECV, 0x0137, "Current Tier 28 Summation Received" ) \
4514 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_29_SUM_DEL, 0x0138, "Current Tier 29 Summation Delivered" ) \
4515 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_29_SUM_RECV, 0x0139, "Current Tier 29 Summation Received" ) \
4516 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_30_SUM_DEL, 0x013A, "Current Tier 30 Summation Delivered" ) \
4517 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_30_SUM_RECV, 0x013B, "Current Tier 30 Summation Received" ) \
4518 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_31_SUM_DEL, 0x013C, "Current Tier 31 Summation Delivered" ) \
4519 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_31_SUM_RECV, 0x013D, "Current Tier 31 Summation Received" ) \
4520 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_32_SUM_DEL, 0x013E, "Current Tier 32 Summation Delivered" ) \
4521 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_32_SUM_RECV, 0x013F, "Current Tier 32 Summation Received" ) \
4522 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_33_SUM_DEL, 0x0140, "Current Tier 33 Summation Delivered" ) \
4523 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_33_SUM_RECV, 0x0141, "Current Tier 33 Summation Received" ) \
4524 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_34_SUM_DEL, 0x0142, "Current Tier 34 Summation Delivered" ) \
4525 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_34_SUM_RECV, 0x0143, "Current Tier 34 Summation Received" ) \
4526 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_35_SUM_DEL, 0x0144, "Current Tier 35 Summation Delivered" ) \
4527 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_35_SUM_RECV, 0x0145, "Current Tier 35 Summation Received" ) \
4528 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_36_SUM_DEL, 0x0146, "Current Tier 36 Summation Delivered" ) \
4529 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_36_SUM_RECV, 0x0147, "Current Tier 36 Summation Received" ) \
4530 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_37_SUM_DEL, 0x0148, "Current Tier 37 Summation Delivered" ) \
4531 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_37_SUM_RECV, 0x0149, "Current Tier 37 Summation Received" ) \
4532 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_38_SUM_DEL, 0x014A, "Current Tier 38 Summation Delivered" ) \
4533 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_38_SUM_RECV, 0x014B, "Current Tier 38 Summation Received" ) \
4534 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_39_SUM_DEL, 0x014C, "Current Tier 39 Summation Delivered" ) \
4535 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_39_SUM_RECV, 0x014D, "Current Tier 39 Summation Received" ) \
4536 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_40_SUM_DEL, 0x014E, "Current Tier 40 Summation Delivered" ) \
4537 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_40_SUM_RECV, 0x014F, "Current Tier 40 Summation Received" ) \
4538 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_41_SUM_DEL, 0x0150, "Current Tier 41 Summation Delivered" ) \
4539 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_41_SUM_RECV, 0x0151, "Current Tier 41 Summation Received" ) \
4540 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_42_SUM_DEL, 0x0152, "Current Tier 42 Summation Delivered" ) \
4541 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_42_SUM_RECV, 0x0153, "Current Tier 42 Summation Received" ) \
4542 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_43_SUM_DEL, 0x0154, "Current Tier 43 Summation Delivered" ) \
4543 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_43_SUM_RECV, 0x0155, "Current Tier 43 Summation Received" ) \
4544 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_44_SUM_DEL, 0x0156, "Current Tier 44 Summation Delivered" ) \
4545 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_44_SUM_RECV, 0x0157, "Current Tier 44 Summation Received" ) \
4546 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_45_SUM_DEL, 0x0158, "Current Tier 45 Summation Delivered" ) \
4547 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_45_SUM_RECV, 0x0159, "Current Tier 45 Summation Received" ) \
4548 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_46_SUM_DEL, 0x015A, "Current Tier 46 Summation Delivered" ) \
4549 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_46_SUM_RECV, 0x015B, "Current Tier 46 Summation Received" ) \
4550 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_47_SUM_DEL, 0x015C, "Current Tier 47 Summation Delivered" ) \
4551 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_47_SUM_RECV, 0x015D, "Current Tier 47 Summation Received" ) \
4552 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_48_SUM_DEL, 0x015E, "Current Tier 48 Summation Delivered" ) \
4553 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_48_SUM_RECV, 0x015F, "Current Tier 48 Summation Received" ) \
4554 XXX(ZBEE_ZCL_ATTR_ID_MET_CPP1_SUMMATION_DELIVERED, 0x01FC, "CPP1 Summation Delivered" ) \
4555 XXX(ZBEE_ZCL_ATTR_ID_MET_CPP2_SUMMATION_DELIVERED, 0x01FE, "CPP2 Summation Delivered" ) \
4556 /* Meter Status Attribute Set */ \
4557 XXX(ZBEE_ZCL_ATTR_ID_MET_STATUS, 0x0200, "Status" ) \
4558 XXX(ZBEE_ZCL_ATTR_ID_MET_REMAIN_BAT_LIFE, 0x0201, "Remaining Battery Life" ) \
4559 XXX(ZBEE_ZCL_ATTR_ID_MET_HOURS_IN_OPERATION, 0x0202, "Hours in Operation" ) \
4560 XXX(ZBEE_ZCL_ATTR_ID_MET_HOURS_IN_FAULT, 0x0203, "Hours in Fault" ) \
4561 XXX(ZBEE_ZCL_ATTR_ID_MET_EXTENDED_STATUS, 0x0204, "Extended Status" ) \
4562 XXX(ZBEE_ZCL_ATTR_ID_MET_REMAIN_BAT_LIFE_DAYS, 0x0205, "Remaining Battery Life in Days" ) \
4563 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_METER_ID, 0x0206, "Current Meter ID" ) \
4564 XXX(ZBEE_ZCL_ATTR_ID_MET_AMBIENT_CON_IND, 0x0207, "Ambient Consumption Indicator" ) \
4566 XXX(ZBEE_ZCL_ATTR_ID_MET_UNIT_OF_MEASURE, 0x0300, "Unit of Measure" ) \
4567 XXX(ZBEE_ZCL_ATTR_ID_MET_MULTIPLIER, 0x0301, "Multiplier" ) \
4568 XXX(ZBEE_ZCL_ATTR_ID_MET_DIVISOR, 0x0302, "Divisor" ) \
4569 XXX(ZBEE_ZCL_ATTR_ID_MET_SUMMATION_FORMATTING, 0x0303, "Summation Formatting" ) \
4570 XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_FORMATTING, 0x0304, "Demand Formatting" ) \
4571 XXX(ZBEE_ZCL_ATTR_ID_MET_HISTORICAL_CON_FORMATTING, 0x0305, "Historical Consumption Formatting" ) \
4572 XXX(ZBEE_ZCL_ATTR_ID_MET_METERING_DEVICE_TYPE, 0x0306, "Metering Device Type" ) \
4573 XXX(ZBEE_ZCL_ATTR_ID_MET_SITE_ID, 0x0307, "Site ID" ) \
4574 XXX(ZBEE_ZCL_ATTR_ID_MET_METER_SERIAL_NUMBER, 0x0308, "Meter Serial Number" ) \
4575 XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_UNIT_OF_MEASURE, 0x0309, "Energy Carrier Unit of Measure" ) \
4576 XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_SUMMATION_FORMAT, 0x030A, "Energy Carrier Summation Formatting" ) \
4577 XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_DEMAND_FORMAT, 0x030B, "Energy Carrier Demand Formatting" ) \
4578 XXX(ZBEE_ZCL_ATTR_ID_MET_TEMPERATURE_UNIT_OF_MEASURE, 0x030C, "Temperature Unit of Measure" ) \
4579 XXX(ZBEE_ZCL_ATTR_ID_MET_TEMPERATURE_FORMATTING, 0x030D, "Temperature Formatting" ) \
4580 XXX(ZBEE_ZCL_ATTR_ID_MET_MODULE_SERIAL_NUMBER, 0x030E, "Module Serial Number" ) \
4581 XXX(ZBEE_ZCL_ATTR_ID_MET_OPERATING_TARIFF_LABEL_DELIVERED, 0x030F, "Operating Tariff Label Delivered" ) \
4582 XXX(ZBEE_ZCL_ATTR_ID_MET_OPERATING_TARIFF_LABEL_RECEIVED, 0x0310, "Operating Tariff Label Received" ) \
4583 XXX(ZBEE_ZCL_ATTR_ID_MET_CUSTOMER_ID_NUMBER, 0x0311, "Customer ID Number" ) \
4584 XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_UNIT_OF_MEASURE, 0x0312, "Alternative Unit of Measure" ) \
4585 XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_DEMAND_FORMATTING, 0x0313, "Alternative Demand Formatting" ) \
4586 XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_CON_FORMATTING, 0x0314, "Alternative Consumption Formatting" ) \
4587 /* Historical Consumption Attribute */ \
4588 XXX(ZBEE_ZCL_ATTR_ID_MET_INSTANT_DEMAND, 0x0400, "Instantaneous Demand" ) \
4589 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_CON_DEL, 0x0401, "Current Day Consumption Delivered" ) \
4590 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_CON_RECV, 0x0402, "Current Day Consumption Received" ) \
4591 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_CON_DEL, 0x0403, "Previous Day Consumption Delivered" ) \
4592 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_CON_RECV, 0x0404, "Previous Day Consumption Received" ) \
4593 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_START_DEL, 0x0405, "Current Partial Profile Interval Start Time Delivered" ) \
4594 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_START_RECV, 0x0406, "Current Partial Profile Interval Start Time Received" ) \
4595 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_VALUE_DEL, 0x0407, "Current Partial Profile Interval Value Delivered" ) \
4596 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_VALUE_RECV, 0x0408, "Current Partial Profile Interval Value Received" ) \
4597 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_PRESSURE, 0x0409, "Current Day Max Pressure" ) \
4598 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MIN_PRESSURE, 0x040A, "Current Day Min Pressure" ) \
4599 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_PRESSURE, 0x040B, "Previous Day Max Pressure" ) \
4600 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MIN_PRESSURE, 0x040C, "Previous Day Min Pressure" ) \
4601 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_DEMAND, 0x040D, "Current Day Max Demand" ) \
4602 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_DEMAND, 0x040E, "Previous Day Max Demand" ) \
4603 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MAX_DEMAND, 0x040F, "Current Month Max Demand" ) \
4604 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MAX_DEMAND, 0x0410, "Current Year Max Demand" ) \
4605 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_ENERGY_CARR_DEM, 0x0411, "Current Day Max Energy Carrier Demand" ) \
4606 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_ENERGY_CARR_DEM, 0x0412, "Previous Day Max Energy Carrier Demand" ) \
4607 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MAX_ENERGY_CARR_DEM, 0x0413, "Current Month Max Energy Carrier Demand" ) \
4608 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MIN_ENERGY_CARR_DEM, 0x0414, "Current Month Min Energy Carrier Demand" ) \
4609 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MAX_ENERGY_CARR_DEM, 0x0415, "Current Year Max Energy Carrier Demand" ) \
4610 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MIN_ENERGY_CARR_DEM, 0x0416, "Current Year Min Energy Carrier Demand" ) \
4611 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_2_DAY_CON_DEL, 0x0420, "Previous Day 2 Consumption Delivered" ) \
4612 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_2_DAY_CON_RECV, 0x0421, "Previous Day 2 Consumption Received" ) \
4613 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_3_DAY_CON_DEL, 0x0422, "Previous Day 3 Consumption Delivered" ) \
4614 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_3_DAY_CON_RECV, 0x0423, "Previous Day 3 Consumption Received" ) \
4615 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_4_DAY_CON_DEL, 0x0424, "Previous Day 4 Consumption Delivered" ) \
4616 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_4_DAY_CON_RECV, 0x0425, "Previous Day 4 Consumption Received" ) \
4617 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_5_DAY_CON_DEL, 0x0426, "Previous Day 5 Consumption Delivered" ) \
4618 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_5_DAY_CON_RECV, 0x0427, "Previous Day 5 Consumption Received" ) \
4619 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_6_DAY_CON_DEL, 0x0428, "Previous Day 6 Consumption Delivered" ) \
4620 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_6_DAY_CON_RECV, 0x0429, "Previous Day 6 Consumption Received" ) \
4621 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_7_DAY_CON_DEL, 0x042A, "Previous Day 7 Consumption Delivered" ) \
4622 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_7_DAY_CON_RECV, 0x042B, "Previous Day 7 Consumption Received" ) \
4623 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_8_DAY_CON_DEL, 0x042C, "Previous Day 8 Consumption Delivered" ) \
4624 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_8_DAY_CON_RECV, 0x042D, "Previous Day 8 Consumption Received" ) \
4625 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_CON_DEL, 0x0430, "Current Week Consumption Delivered" ) \
4626 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_CON_RECV, 0x0431, "Current Week Consumption Received" ) \
4627 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_CON_DEL, 0x0432, "Previous Week Consumption Delivered" ) \
4628 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_CON_RECV, 0x0433, "Previous Week Consumption Received" ) \
4629 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_CON_DEL, 0x0434, "Previous Week 2 Consumption Delivered" ) \
4630 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_CON_RECV, 0x0435, "Previous Week 2 Consumption Received" ) \
4631 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_CON_DEL, 0x0436, "Previous Week 3 Consumption Delivered" ) \
4632 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_CON_RECV, 0x0437, "Previous Week 3 Consumption Received" ) \
4633 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_CON_DEL, 0x0438, "Previous Week 4 Consumption Delivered" ) \
4634 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_CON_RECV, 0x0439, "Previous Week 4 Consumption Received" ) \
4635 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_CON_DEL, 0x043A, "Previous Week 5 Consumption Delivered" ) \
4636 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_CON_RECV, 0x043B, "Previous Week 5 Consumption Received" ) \
4637 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_CON_DEL, 0x0440, "Current Month Consumption Delivered" ) \
4638 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_CON_RECV, 0x0441, "Current Month Consumption Received" ) \
4639 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_CON_DEL, 0x0442, "Previous Month Consumption Delivered" ) \
4640 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_CON_RECV, 0x0443, "Previous Month Consumption Received" ) \
4641 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_CON_DEL, 0x0444, "Previous Month 2 Consumption Delivered" ) \
4642 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_CON_RECV, 0x0445, "Previous Month 2 Consumption Received" ) \
4643 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_CON_DEL, 0x0446, "Previous Month 3 Consumption Delivered" ) \
4644 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_CON_RECV, 0x0447, "Previous Month 3 Consumption Received" ) \
4645 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_CON_DEL, 0x0448, "Previous Month 4 Consumption Delivered" ) \
4646 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_CON_RECV, 0x0449, "Previous Month 4 Consumption Received" ) \
4647 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_CON_DEL, 0x044A, "Previous Month 5 Consumption Delivered" ) \
4648 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_CON_RECV, 0x044B, "Previous Month 5 Consumption Received" ) \
4649 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_CON_DEL, 0x044C, "Previous Month 6 Consumption Delivered" ) \
4650 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_CON_RECV, 0x044D, "Previous Month 6 Consumption Received" ) \
4651 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_CON_DEL, 0x044E, "Previous Month 7 Consumption Delivered" ) \
4652 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_CON_RECV, 0x044F, "Previous Month 7 Consumption Received" ) \
4653 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_CON_DEL, 0x0450, "Previous Month 8 Consumption Delivered" ) \
4654 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_CON_RECV, 0x0451, "Previous Month 8 Consumption Received" ) \
4655 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_CON_DEL, 0x0452, "Previous Month 9 Consumption Delivered" ) \
4656 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_CON_RECV, 0x0453, "Previous Month 9 Consumption Received" ) \
4657 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_CON_DEL, 0x0454, "Previous Month 10 Consumption Delivered" ) \
4658 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_CON_RECV, 0x0455, "Previous Month 10 Consumption Received" ) \
4659 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_CON_DEL, 0x0456, "Previous Month 11 Consumption Delivered" ) \
4660 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_CON_RECV, 0x0457, "Previous Month 11 Consumption Received" ) \
4661 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_CON_DEL, 0x0458, "Previous Month 12 Consumption Delivered" ) \
4662 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_CON_RECV, 0x0459, "Previous Month 12 Consumption Received" ) \
4663 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_CON_DEL, 0x045A, "Previous Month 13 Consumption Delivered" ) \
4664 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_CON_RECV, 0x045B, "Previous Month 13 Consumption Received" ) \
4665 XXX(ZBEE_ZCL_ATTR_ID_MET_HISTORICAL_FREEZE_TIME, 0x045C, "Historical Freeze Time" ) \
4666 /* Load Profile Configuration */ \
4667 XXX(ZBEE_ZCL_ATTR_ID_MET_MAX_NUMBER_OF_PERIODS_DELIVERED, 0x0500, "Max Number of Periods Delivered" ) \
4668 /* Supply Limit Attributes */ \
4669 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DEMAND_DELIVERED, 0x0600, "Current Demand Delivered" ) \
4670 XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_LIMIT, 0x0601, "Demand Limit" ) \
4671 XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_INTEGRATION_PERIOD, 0x0602, "Demand Integration Period" ) \
4672 XXX(ZBEE_ZCL_ATTR_ID_MET_NUMBER_OF_DEMAND_SUBINTERVALS, 0x0603, "Number of Demand Subintervals" ) \
4673 XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_LIMIT_ARM_DURATION, 0x0604, "Demand Limit Arm Duration" ) \
4674 XXX(ZBEE_ZCL_ATTR_ID_MET_LOAD_LIMIT_SUPPLY_STATE, 0x0605, "Load Limit Supply State" ) \
4675 XXX(ZBEE_ZCL_ATTR_ID_MET_LOAD_LIMIT_COUNTER, 0x0606, "Load Limit Counter" ) \
4676 XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_TAMPER_STATE, 0x0607, "Supply Tamper State" ) \
4677 XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_DEPLETION_STATE, 0x0608, "Supply Depletion State" ) \
4678 XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_UNCONTROLLED_FLOW_STATE, 0x0609, "Supply Uncontrolled Flow State" ) \
4679 /* Block Information Attribute Set (Delivered) */ \
4680 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_1_SUM_DEL, 0x0700, "Current No Tier Block 1 Summation Delivered" ) \
4681 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_2_SUM_DEL, 0x0701, "Current No Tier Block 2 Summation Delivered" ) \
4682 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_3_SUM_DEL, 0x0702, "Current No Tier Block 3 Summation Delivered" ) \
4683 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_4_SUM_DEL, 0x0703, "Current No Tier Block 4 Summation Delivered" ) \
4684 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_5_SUM_DEL, 0x0704, "Current No Tier Block 5 Summation Delivered" ) \
4685 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_6_SUM_DEL, 0x0705, "Current No Tier Block 6 Summation Delivered" ) \
4686 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_7_SUM_DEL, 0x0706, "Current No Tier Block 7 Summation Delivered" ) \
4687 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_8_SUM_DEL, 0x0707, "Current No Tier Block 8 Summation Delivered" ) \
4688 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_9_SUM_DEL, 0x0708, "Current No Tier Block 9 Summation Delivered" ) \
4689 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_10_SUM_DEL, 0x0709, "Current No Tier Block 10 Summation Delivered" ) \
4690 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_11_SUM_DEL, 0x070A, "Current No Tier Block 11 Summation Delivered" ) \
4691 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_12_SUM_DEL, 0x070B, "Current No Tier Block 12 Summation Delivered" ) \
4692 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_13_SUM_DEL, 0x070C, "Current No Tier Block 13 Summation Delivered" ) \
4693 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_14_SUM_DEL, 0x070D, "Current No Tier Block 14 Summation Delivered" ) \
4694 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_15_SUM_DEL, 0x070E, "Current No Tier Block 15 Summation Delivered" ) \
4695 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_16_SUM_DEL, 0x070F, "Current No Tier Block 16 Summation Delivered" ) \
4696 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_1_SUM_DEL, 0x0710, "Current Tier 1 Block 1 Summation Delivered" ) \
4697 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_2_SUM_DEL, 0x0711, "Current Tier 1 Block 2 Summation Delivered" ) \
4698 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_3_SUM_DEL, 0x0712, "Current Tier 1 Block 3 Summation Delivered" ) \
4699 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_4_SUM_DEL, 0x0713, "Current Tier 1 Block 4 Summation Delivered" ) \
4700 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_5_SUM_DEL, 0x0714, "Current Tier 1 Block 5 Summation Delivered" ) \
4701 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_6_SUM_DEL, 0x0715, "Current Tier 1 Block 6 Summation Delivered" ) \
4702 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_7_SUM_DEL, 0x0716, "Current Tier 1 Block 7 Summation Delivered" ) \
4703 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_8_SUM_DEL, 0x0717, "Current Tier 1 Block 8 Summation Delivered" ) \
4704 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_9_SUM_DEL, 0x0718, "Current Tier 1 Block 9 Summation Delivered" ) \
4705 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_10_SUM_DEL, 0x0719, "Current Tier 1 Block 10 Summation Delivered" ) \
4706 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_11_SUM_DEL, 0x071A, "Current Tier 1 Block 11 Summation Delivered" ) \
4707 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_12_SUM_DEL, 0x071B, "Current Tier 1 Block 12 Summation Delivered" ) \
4708 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_13_SUM_DEL, 0x071C, "Current Tier 1 Block 13 Summation Delivered" ) \
4709 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_14_SUM_DEL, 0x071D, "Current Tier 1 Block 14 Summation Delivered" ) \
4710 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_15_SUM_DEL, 0x071E, "Current Tier 1 Block 15 Summation Delivered" ) \
4711 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_16_SUM_DEL, 0x071F, "Current Tier 1 Block 16 Summation Delivered" ) \
4712 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_1_SUM_DEL, 0x0720, "Current Tier 2 Block 1 Summation Delivered" ) \
4713 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_2_SUM_DEL, 0x0721, "Current Tier 2 Block 2 Summation Delivered" ) \
4714 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_3_SUM_DEL, 0x0722, "Current Tier 2 Block 3 Summation Delivered" ) \
4715 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_4_SUM_DEL, 0x0723, "Current Tier 2 Block 4 Summation Delivered" ) \
4716 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_5_SUM_DEL, 0x0724, "Current Tier 2 Block 5 Summation Delivered" ) \
4717 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_6_SUM_DEL, 0x0725, "Current Tier 2 Block 6 Summation Delivered" ) \
4718 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_7_SUM_DEL, 0x0726, "Current Tier 2 Block 7 Summation Delivered" ) \
4719 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_8_SUM_DEL, 0x0727, "Current Tier 2 Block 8 Summation Delivered" ) \
4720 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_9_SUM_DEL, 0x0728, "Current Tier 2 Block 9 Summation Delivered" ) \
4721 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_10_SUM_DEL, 0x0729, "Current Tier 2 Block 10 Summation Delivered" ) \
4722 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_11_SUM_DEL, 0x072A, "Current Tier 2 Block 11 Summation Delivered" ) \
4723 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_12_SUM_DEL, 0x072B, "Current Tier 2 Block 12 Summation Delivered" ) \
4724 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_13_SUM_DEL, 0x072C, "Current Tier 2 Block 13 Summation Delivered" ) \
4725 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_14_SUM_DEL, 0x072D, "Current Tier 2 Block 14 Summation Delivered" ) \
4726 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_15_SUM_DEL, 0x072E, "Current Tier 2 Block 15 Summation Delivered" ) \
4727 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_16_SUM_DEL, 0x072F, "Current Tier 2 Block 16 Summation Delivered" ) \
4728 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_1_SUM_DEL, 0x0730, "Current Tier 3 Block 1 Summation Delivered" ) \
4729 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_2_SUM_DEL, 0x0731, "Current Tier 3 Block 2 Summation Delivered" ) \
4730 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_3_SUM_DEL, 0x0732, "Current Tier 3 Block 3 Summation Delivered" ) \
4731 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_4_SUM_DEL, 0x0733, "Current Tier 3 Block 4 Summation Delivered" ) \
4732 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_5_SUM_DEL, 0x0734, "Current Tier 3 Block 5 Summation Delivered" ) \
4733 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_6_SUM_DEL, 0x0735, "Current Tier 3 Block 6 Summation Delivered" ) \
4734 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_7_SUM_DEL, 0x0736, "Current Tier 3 Block 7 Summation Delivered" ) \
4735 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_8_SUM_DEL, 0x0737, "Current Tier 3 Block 8 Summation Delivered" ) \
4736 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_9_SUM_DEL, 0x0738, "Current Tier 3 Block 9 Summation Delivered" ) \
4737 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_10_SUM_DEL, 0x0739, "Current Tier 3 Block 10 Summation Delivered" ) \
4738 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_11_SUM_DEL, 0x073A, "Current Tier 3 Block 11 Summation Delivered" ) \
4739 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_12_SUM_DEL, 0x073B, "Current Tier 3 Block 12 Summation Delivered" ) \
4740 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_13_SUM_DEL, 0x073C, "Current Tier 3 Block 13 Summation Delivered" ) \
4741 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_14_SUM_DEL, 0x073D, "Current Tier 3 Block 14 Summation Delivered" ) \
4742 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_15_SUM_DEL, 0x073E, "Current Tier 3 Block 15 Summation Delivered" ) \
4743 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_16_SUM_DEL, 0x073F, "Current Tier 3 Block 16 Summation Delivered" ) \
4744 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_1_SUM_DEL, 0x0740, "Current Tier 4 Block 1 Summation Delivered" ) \
4745 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_2_SUM_DEL, 0x0741, "Current Tier 4 Block 2 Summation Delivered" ) \
4746 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_3_SUM_DEL, 0x0742, "Current Tier 4 Block 3 Summation Delivered" ) \
4747 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_4_SUM_DEL, 0x0743, "Current Tier 4 Block 4 Summation Delivered" ) \
4748 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_5_SUM_DEL, 0x0744, "Current Tier 4 Block 5 Summation Delivered" ) \
4749 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_6_SUM_DEL, 0x0745, "Current Tier 4 Block 6 Summation Delivered" ) \
4750 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_7_SUM_DEL, 0x0746, "Current Tier 4 Block 7 Summation Delivered" ) \
4751 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_8_SUM_DEL, 0x0747, "Current Tier 4 Block 8 Summation Delivered" ) \
4752 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_9_SUM_DEL, 0x0748, "Current Tier 4 Block 9 Summation Delivered" ) \
4753 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_10_SUM_DEL, 0x0749, "Current Tier 4 Block 10 Summation Delivered" ) \
4754 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_11_SUM_DEL, 0x074A, "Current Tier 4 Block 11 Summation Delivered" ) \
4755 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_12_SUM_DEL, 0x074B, "Current Tier 4 Block 12 Summation Delivered" ) \
4756 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_13_SUM_DEL, 0x074C, "Current Tier 4 Block 13 Summation Delivered" ) \
4757 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_14_SUM_DEL, 0x074D, "Current Tier 4 Block 14 Summation Delivered" ) \
4758 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_15_SUM_DEL, 0x074E, "Current Tier 4 Block 15 Summation Delivered" ) \
4759 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_16_SUM_DEL, 0x074F, "Current Tier 4 Block 16 Summation Delivered" ) \
4760 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_1_SUM_DEL, 0x0750, "Current Tier 5 Block 1 Summation Delivered" ) \
4761 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_2_SUM_DEL, 0x0751, "Current Tier 5 Block 2 Summation Delivered" ) \
4762 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_3_SUM_DEL, 0x0752, "Current Tier 5 Block 3 Summation Delivered" ) \
4763 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_4_SUM_DEL, 0x0753, "Current Tier 5 Block 4 Summation Delivered" ) \
4764 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_5_SUM_DEL, 0x0754, "Current Tier 5 Block 5 Summation Delivered" ) \
4765 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_6_SUM_DEL, 0x0755, "Current Tier 5 Block 6 Summation Delivered" ) \
4766 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_7_SUM_DEL, 0x0756, "Current Tier 5 Block 7 Summation Delivered" ) \
4767 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_8_SUM_DEL, 0x0757, "Current Tier 5 Block 8 Summation Delivered" ) \
4768 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_9_SUM_DEL, 0x0758, "Current Tier 5 Block 9 Summation Delivered" ) \
4769 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_10_SUM_DEL, 0x0759, "Current Tier 5 Block 10 Summation Delivered" ) \
4770 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_11_SUM_DEL, 0x075A, "Current Tier 5 Block 11 Summation Delivered" ) \
4771 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_12_SUM_DEL, 0x075B, "Current Tier 5 Block 12 Summation Delivered" ) \
4772 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_13_SUM_DEL, 0x075C, "Current Tier 5 Block 13 Summation Delivered" ) \
4773 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_14_SUM_DEL, 0x075D, "Current Tier 5 Block 14 Summation Delivered" ) \
4774 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_15_SUM_DEL, 0x075E, "Current Tier 5 Block 15 Summation Delivered" ) \
4775 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_16_SUM_DEL, 0x075F, "Current Tier 5 Block 16 Summation Delivered" ) \
4776 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_1_SUM_DEL, 0x0760, "Current Tier 6 Block 1 Summation Delivered" ) \
4777 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_2_SUM_DEL, 0x0761, "Current Tier 6 Block 2 Summation Delivered" ) \
4778 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_3_SUM_DEL, 0x0762, "Current Tier 6 Block 3 Summation Delivered" ) \
4779 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_4_SUM_DEL, 0x0763, "Current Tier 6 Block 4 Summation Delivered" ) \
4780 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_5_SUM_DEL, 0x0764, "Current Tier 6 Block 5 Summation Delivered" ) \
4781 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_6_SUM_DEL, 0x0765, "Current Tier 6 Block 6 Summation Delivered" ) \
4782 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_7_SUM_DEL, 0x0766, "Current Tier 6 Block 7 Summation Delivered" ) \
4783 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_8_SUM_DEL, 0x0767, "Current Tier 6 Block 8 Summation Delivered" ) \
4784 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_9_SUM_DEL, 0x0768, "Current Tier 6 Block 9 Summation Delivered" ) \
4785 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_10_SUM_DEL, 0x0769, "Current Tier 6 Block 10 Summation Delivered" ) \
4786 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_11_SUM_DEL, 0x076A, "Current Tier 6 Block 11 Summation Delivered" ) \
4787 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_12_SUM_DEL, 0x076B, "Current Tier 6 Block 12 Summation Delivered" ) \
4788 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_13_SUM_DEL, 0x076C, "Current Tier 6 Block 13 Summation Delivered" ) \
4789 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_14_SUM_DEL, 0x076D, "Current Tier 6 Block 14 Summation Delivered" ) \
4790 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_15_SUM_DEL, 0x076E, "Current Tier 6 Block 15 Summation Delivered" ) \
4791 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_16_SUM_DEL, 0x076F, "Current Tier 6 Block 16 Summation Delivered" ) \
4792 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_1_SUM_DEL, 0x0770, "Current Tier 7 Block 1 Summation Delivered" ) \
4793 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_2_SUM_DEL, 0x0771, "Current Tier 7 Block 2 Summation Delivered" ) \
4794 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_3_SUM_DEL, 0x0772, "Current Tier 7 Block 3 Summation Delivered" ) \
4795 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_4_SUM_DEL, 0x0773, "Current Tier 7 Block 4 Summation Delivered" ) \
4796 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_5_SUM_DEL, 0x0774, "Current Tier 7 Block 5 Summation Delivered" ) \
4797 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_6_SUM_DEL, 0x0775, "Current Tier 7 Block 6 Summation Delivered" ) \
4798 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_7_SUM_DEL, 0x0776, "Current Tier 7 Block 7 Summation Delivered" ) \
4799 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_8_SUM_DEL, 0x0777, "Current Tier 7 Block 8 Summation Delivered" ) \
4800 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_9_SUM_DEL, 0x0778, "Current Tier 7 Block 9 Summation Delivered" ) \
4801 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_10_SUM_DEL, 0x0779, "Current Tier 7 Block 10 Summation Delivered" ) \
4802 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_11_SUM_DEL, 0x077A, "Current Tier 7 Block 11 Summation Delivered" ) \
4803 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_12_SUM_DEL, 0x077B, "Current Tier 7 Block 12 Summation Delivered" ) \
4804 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_13_SUM_DEL, 0x077C, "Current Tier 7 Block 13 Summation Delivered" ) \
4805 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_14_SUM_DEL, 0x077D, "Current Tier 7 Block 14 Summation Delivered" ) \
4806 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_15_SUM_DEL, 0x077E, "Current Tier 7 Block 15 Summation Delivered" ) \
4807 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_16_SUM_DEL, 0x077F, "Current Tier 7 Block 16 Summation Delivered" ) \
4808 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_1_SUM_DEL, 0x0780, "Current Tier 8 Block 1 Summation Delivered" ) \
4809 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_2_SUM_DEL, 0x0781, "Current Tier 8 Block 2 Summation Delivered" ) \
4810 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_3_SUM_DEL, 0x0782, "Current Tier 8 Block 3 Summation Delivered" ) \
4811 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_4_SUM_DEL, 0x0783, "Current Tier 8 Block 4 Summation Delivered" ) \
4812 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_5_SUM_DEL, 0x0784, "Current Tier 8 Block 5 Summation Delivered" ) \
4813 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_6_SUM_DEL, 0x0785, "Current Tier 8 Block 6 Summation Delivered" ) \
4814 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_7_SUM_DEL, 0x0786, "Current Tier 8 Block 7 Summation Delivered" ) \
4815 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_8_SUM_DEL, 0x0787, "Current Tier 8 Block 8 Summation Delivered" ) \
4816 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_9_SUM_DEL, 0x0788, "Current Tier 8 Block 9 Summation Delivered" ) \
4817 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_10_SUM_DEL, 0x0789, "Current Tier 8 Block 10 Summation Delivered" ) \
4818 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_11_SUM_DEL, 0x078A, "Current Tier 8 Block 11 Summation Delivered" ) \
4819 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_12_SUM_DEL, 0x078B, "Current Tier 8 Block 12 Summation Delivered" ) \
4820 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_13_SUM_DEL, 0x078C, "Current Tier 8 Block 13 Summation Delivered" ) \
4821 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_14_SUM_DEL, 0x078D, "Current Tier 8 Block 14 Summation Delivered" ) \
4822 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_15_SUM_DEL, 0x078E, "Current Tier 8 Block 15 Summation Delivered" ) \
4823 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_16_SUM_DEL, 0x078F, "Current Tier 8 Block 16 Summation Delivered" ) \
4824 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_1_SUM_DEL, 0x0790, "Current Tier 9 Block 1 Summation Delivered" ) \
4825 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_2_SUM_DEL, 0x0791, "Current Tier 9 Block 2 Summation Delivered" ) \
4826 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_3_SUM_DEL, 0x0792, "Current Tier 9 Block 3 Summation Delivered" ) \
4827 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_4_SUM_DEL, 0x0793, "Current Tier 9 Block 4 Summation Delivered" ) \
4828 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_5_SUM_DEL, 0x0794, "Current Tier 9 Block 5 Summation Delivered" ) \
4829 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_6_SUM_DEL, 0x0795, "Current Tier 9 Block 6 Summation Delivered" ) \
4830 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_7_SUM_DEL, 0x0796, "Current Tier 9 Block 7 Summation Delivered" ) \
4831 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_8_SUM_DEL, 0x0797, "Current Tier 9 Block 8 Summation Delivered" ) \
4832 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_9_SUM_DEL, 0x0798, "Current Tier 9 Block 9 Summation Delivered" ) \
4833 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_10_SUM_DEL, 0x0799, "Current Tier 9 Block 10 Summation Delivered" ) \
4834 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_11_SUM_DEL, 0x079A, "Current Tier 9 Block 11 Summation Delivered" ) \
4835 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_12_SUM_DEL, 0x079B, "Current Tier 9 Block 12 Summation Delivered" ) \
4836 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_13_SUM_DEL, 0x079C, "Current Tier 9 Block 13 Summation Delivered" ) \
4837 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_14_SUM_DEL, 0x079D, "Current Tier 9 Block 14 Summation Delivered" ) \
4838 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_15_SUM_DEL, 0x079E, "Current Tier 9 Block 15 Summation Delivered" ) \
4839 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_16_SUM_DEL, 0x079F, "Current Tier 9 Block 16 Summation Delivered" ) \
4840 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_1_SUM_DEL, 0x07A0, "Current Tier 10 Block 1 Summation Delivered" ) \
4841 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_2_SUM_DEL, 0x07A1, "Current Tier 10 Block 2 Summation Delivered" ) \
4842 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_3_SUM_DEL, 0x07A2, "Current Tier 10 Block 3 Summation Delivered" ) \
4843 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_4_SUM_DEL, 0x07A3, "Current Tier 10 Block 4 Summation Delivered" ) \
4844 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_5_SUM_DEL, 0x07A4, "Current Tier 10 Block 5 Summation Delivered" ) \
4845 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_6_SUM_DEL, 0x07A5, "Current Tier 10 Block 6 Summation Delivered" ) \
4846 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_7_SUM_DEL, 0x07A6, "Current Tier 10 Block 7 Summation Delivered" ) \
4847 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_8_SUM_DEL, 0x07A7, "Current Tier 10 Block 8 Summation Delivered" ) \
4848 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_9_SUM_DEL, 0x07A8, "Current Tier 10 Block 9 Summation Delivered" ) \
4849 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_10_SUM_DEL, 0x07A9, "Current Tier 10 Block 10 Summation Delivered" ) \
4850 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_11_SUM_DEL, 0x07AA, "Current Tier 10 Block 11 Summation Delivered" ) \
4851 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_12_SUM_DEL, 0x07AB, "Current Tier 10 Block 12 Summation Delivered" ) \
4852 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_13_SUM_DEL, 0x07AC, "Current Tier 10 Block 13 Summation Delivered" ) \
4853 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_14_SUM_DEL, 0x07AD, "Current Tier 10 Block 14 Summation Delivered" ) \
4854 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_15_SUM_DEL, 0x07AE, "Current Tier 10 Block 15 Summation Delivered" ) \
4855 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_16_SUM_DEL, 0x07AF, "Current Tier 10 Block 16 Summation Delivered" ) \
4856 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_1_SUM_DEL, 0x07B0, "Current Tier 11 Block 1 Summation Delivered" ) \
4857 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_2_SUM_DEL, 0x07B1, "Current Tier 11 Block 2 Summation Delivered" ) \
4858 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_3_SUM_DEL, 0x07B2, "Current Tier 11 Block 3 Summation Delivered" ) \
4859 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_4_SUM_DEL, 0x07B3, "Current Tier 11 Block 4 Summation Delivered" ) \
4860 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_5_SUM_DEL, 0x07B4, "Current Tier 11 Block 5 Summation Delivered" ) \
4861 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_6_SUM_DEL, 0x07B5, "Current Tier 11 Block 6 Summation Delivered" ) \
4862 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_7_SUM_DEL, 0x07B6, "Current Tier 11 Block 7 Summation Delivered" ) \
4863 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_8_SUM_DEL, 0x07B7, "Current Tier 11 Block 8 Summation Delivered" ) \
4864 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_9_SUM_DEL, 0x07B8, "Current Tier 11 Block 9 Summation Delivered" ) \
4865 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_10_SUM_DEL, 0x07B9, "Current Tier 11 Block 10 Summation Delivered" ) \
4866 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_11_SUM_DEL, 0x07BA, "Current Tier 11 Block 11 Summation Delivered" ) \
4867 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_12_SUM_DEL, 0x07BB, "Current Tier 11 Block 12 Summation Delivered" ) \
4868 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_13_SUM_DEL, 0x07BC, "Current Tier 11 Block 13 Summation Delivered" ) \
4869 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_14_SUM_DEL, 0x07BD, "Current Tier 11 Block 14 Summation Delivered" ) \
4870 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_15_SUM_DEL, 0x07BE, "Current Tier 11 Block 15 Summation Delivered" ) \
4871 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_16_SUM_DEL, 0x07BF, "Current Tier 11 Block 16 Summation Delivered" ) \
4872 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_1_SUM_DEL, 0x07C0, "Current Tier 12 Block 1 Summation Delivered" ) \
4873 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_2_SUM_DEL, 0x07C1, "Current Tier 12 Block 2 Summation Delivered" ) \
4874 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_3_SUM_DEL, 0x07C2, "Current Tier 12 Block 3 Summation Delivered" ) \
4875 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_4_SUM_DEL, 0x07C3, "Current Tier 12 Block 4 Summation Delivered" ) \
4876 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_5_SUM_DEL, 0x07C4, "Current Tier 12 Block 5 Summation Delivered" ) \
4877 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_6_SUM_DEL, 0x07C5, "Current Tier 12 Block 6 Summation Delivered" ) \
4878 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_7_SUM_DEL, 0x07C6, "Current Tier 12 Block 7 Summation Delivered" ) \
4879 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_8_SUM_DEL, 0x07C7, "Current Tier 12 Block 8 Summation Delivered" ) \
4880 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_9_SUM_DEL, 0x07C8, "Current Tier 12 Block 9 Summation Delivered" ) \
4881 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_10_SUM_DEL, 0x07C9, "Current Tier 12 Block 10 Summation Delivered" ) \
4882 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_11_SUM_DEL, 0x07CA, "Current Tier 12 Block 11 Summation Delivered" ) \
4883 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_12_SUM_DEL, 0x07CB, "Current Tier 12 Block 12 Summation Delivered" ) \
4884 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_13_SUM_DEL, 0x07CC, "Current Tier 12 Block 13 Summation Delivered" ) \
4885 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_14_SUM_DEL, 0x07CD, "Current Tier 12 Block 14 Summation Delivered" ) \
4886 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_15_SUM_DEL, 0x07CE, "Current Tier 12 Block 15 Summation Delivered" ) \
4887 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_16_SUM_DEL, 0x07CF, "Current Tier 12 Block 16 Summation Delivered" ) \
4888 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_1_SUM_DEL, 0x07D0, "Current Tier 13 Block 1 Summation Delivered" ) \
4889 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_2_SUM_DEL, 0x07D1, "Current Tier 13 Block 2 Summation Delivered" ) \
4890 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_3_SUM_DEL, 0x07D2, "Current Tier 13 Block 3 Summation Delivered" ) \
4891 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_4_SUM_DEL, 0x07D3, "Current Tier 13 Block 4 Summation Delivered" ) \
4892 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_5_SUM_DEL, 0x07D4, "Current Tier 13 Block 5 Summation Delivered" ) \
4893 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_6_SUM_DEL, 0x07D5, "Current Tier 13 Block 6 Summation Delivered" ) \
4894 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_7_SUM_DEL, 0x07D6, "Current Tier 13 Block 7 Summation Delivered" ) \
4895 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_8_SUM_DEL, 0x07D7, "Current Tier 13 Block 8 Summation Delivered" ) \
4896 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_9_SUM_DEL, 0x07D8, "Current Tier 13 Block 9 Summation Delivered" ) \
4897 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_10_SUM_DEL, 0x07D9, "Current Tier 13 Block 10 Summation Delivered" ) \
4898 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_11_SUM_DEL, 0x07DA, "Current Tier 13 Block 11 Summation Delivered" ) \
4899 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_12_SUM_DEL, 0x07DB, "Current Tier 13 Block 12 Summation Delivered" ) \
4900 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_13_SUM_DEL, 0x07DC, "Current Tier 13 Block 13 Summation Delivered" ) \
4901 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_14_SUM_DEL, 0x07DD, "Current Tier 13 Block 14 Summation Delivered" ) \
4902 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_15_SUM_DEL, 0x07DE, "Current Tier 13 Block 15 Summation Delivered" ) \
4903 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_16_SUM_DEL, 0x07DF, "Current Tier 13 Block 16 Summation Delivered" ) \
4904 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_1_SUM_DEL, 0x07E0, "Current Tier 14 Block 1 Summation Delivered" ) \
4905 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_2_SUM_DEL, 0x07E1, "Current Tier 14 Block 2 Summation Delivered" ) \
4906 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_3_SUM_DEL, 0x07E2, "Current Tier 14 Block 3 Summation Delivered" ) \
4907 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_4_SUM_DEL, 0x07E3, "Current Tier 14 Block 4 Summation Delivered" ) \
4908 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_5_SUM_DEL, 0x07E4, "Current Tier 14 Block 5 Summation Delivered" ) \
4909 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_6_SUM_DEL, 0x07E5, "Current Tier 14 Block 6 Summation Delivered" ) \
4910 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_7_SUM_DEL, 0x07E6, "Current Tier 14 Block 7 Summation Delivered" ) \
4911 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_8_SUM_DEL, 0x07E7, "Current Tier 14 Block 8 Summation Delivered" ) \
4912 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_9_SUM_DEL, 0x07E8, "Current Tier 14 Block 9 Summation Delivered" ) \
4913 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_10_SUM_DEL, 0x07E9, "Current Tier 14 Block 10 Summation Delivered" ) \
4914 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_11_SUM_DEL, 0x07EA, "Current Tier 14 Block 11 Summation Delivered" ) \
4915 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_12_SUM_DEL, 0x07EB, "Current Tier 14 Block 12 Summation Delivered" ) \
4916 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_13_SUM_DEL, 0x07EC, "Current Tier 14 Block 13 Summation Delivered" ) \
4917 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_14_SUM_DEL, 0x07ED, "Current Tier 14 Block 14 Summation Delivered" ) \
4918 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_15_SUM_DEL, 0x07EE, "Current Tier 14 Block 15 Summation Delivered" ) \
4919 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_16_SUM_DEL, 0x07EF, "Current Tier 14 Block 16 Summation Delivered" ) \
4920 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_1_SUM_DEL, 0x07F0, "Current Tier 15 Block 1 Summation Delivered" ) \
4921 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_2_SUM_DEL, 0x07F1, "Current Tier 15 Block 2 Summation Delivered" ) \
4922 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_3_SUM_DEL, 0x07F2, "Current Tier 15 Block 3 Summation Delivered" ) \
4923 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_4_SUM_DEL, 0x07F3, "Current Tier 15 Block 4 Summation Delivered" ) \
4924 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_5_SUM_DEL, 0x07F4, "Current Tier 15 Block 5 Summation Delivered" ) \
4925 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_6_SUM_DEL, 0x07F5, "Current Tier 15 Block 6 Summation Delivered" ) \
4926 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_7_SUM_DEL, 0x07F6, "Current Tier 15 Block 7 Summation Delivered" ) \
4927 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_8_SUM_DEL, 0x07F7, "Current Tier 15 Block 8 Summation Delivered" ) \
4928 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_9_SUM_DEL, 0x07F8, "Current Tier 15 Block 9 Summation Delivered" ) \
4929 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_10_SUM_DEL, 0x07F9, "Current Tier 15 Block 10 Summation Delivered" ) \
4930 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_11_SUM_DEL, 0x07FA, "Current Tier 15 Block 11 Summation Delivered" ) \
4931 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_12_SUM_DEL, 0x07FB, "Current Tier 15 Block 12 Summation Delivered" ) \
4932 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_13_SUM_DEL, 0x07FC, "Current Tier 15 Block 13 Summation Delivered" ) \
4933 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_14_SUM_DEL, 0x07FD, "Current Tier 15 Block 14 Summation Delivered" ) \
4934 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_15_SUM_DEL, 0x07FE, "Current Tier 15 Block 15 Summation Delivered" ) \
4935 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_16_SUM_DEL, 0x07FF, "Current Tier 15 Block 16 Summation Delivered" ) \
4937 XXX(ZBEE_ZCL_ATTR_ID_MET_GENERIC_ALARM_MASK, 0x0800, "Generic Alarm Mask" ) \
4938 XXX(ZBEE_ZCL_ATTR_ID_MET_ELECTRICITY_ALARM_MASK, 0x0801, "Electricity Alarm Mask" ) \
4939 XXX(ZBEE_ZCL_ATTR_ID_MET_GENERIC_FLOW_PRESS_ALARM_MASK, 0x0802, "Generic Flow/Pressure Alarm Mask" ) \
4940 XXX(ZBEE_ZCL_ATTR_ID_MET_WATER_SPECIFIC_ALARM_MASK, 0x0803, "Water Specific Alarm Mask" ) \
4941 XXX(ZBEE_ZCL_ATTR_ID_MET_HEAT_COOLING_SPECIFIC_ALARM_MASK, 0x0804, "Heat and Cooling Specific Alarm Mask" ) \
4942 XXX(ZBEE_ZCL_ATTR_ID_MET_GAS_SPECIFIC_ALARM_MASK, 0x0805, "Gas Specific Alarm Mask" ) \
4943 XXX(ZBEE_ZCL_ATTR_ID_MET_EXTENDED_GENERIC_ALARM_MASK, 0x0806, "Extended Generic Alarm Mask" ) \
4944 XXX(ZBEE_ZCL_ATTR_ID_MET_MANUFACTURER_ALARM_MASK, 0x0807, "Manufacturer Alarm Mask" ) \
4945 /* Block Information Attribute Set (Received) */ \
4946 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_1_SUM_RECV, 0x0900, "Current No Tier Block 1 Summation Received" ) \
4947 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_2_SUM_RECV, 0x0901, "Current No Tier Block 2 Summation Received" ) \
4948 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_3_SUM_RECV, 0x0902, "Current No Tier Block 3 Summation Received" ) \
4949 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_4_SUM_RECV, 0x0903, "Current No Tier Block 4 Summation Received" ) \
4950 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_5_SUM_RECV, 0x0904, "Current No Tier Block 5 Summation Received" ) \
4951 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_6_SUM_RECV, 0x0905, "Current No Tier Block 6 Summation Received" ) \
4952 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_7_SUM_RECV, 0x0906, "Current No Tier Block 7 Summation Received" ) \
4953 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_8_SUM_RECV, 0x0907, "Current No Tier Block 8 Summation Received" ) \
4954 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_9_SUM_RECV, 0x0908, "Current No Tier Block 9 Summation Received" ) \
4955 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_10_SUM_RECV, 0x0909, "Current No Tier Block 10 Summation Received" ) \
4956 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_11_SUM_RECV, 0x090A, "Current No Tier Block 11 Summation Received" ) \
4957 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_12_SUM_RECV, 0x090B, "Current No Tier Block 12 Summation Received" ) \
4958 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_13_SUM_RECV, 0x090C, "Current No Tier Block 13 Summation Received" ) \
4959 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_14_SUM_RECV, 0x090D, "Current No Tier Block 14 Summation Received" ) \
4960 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_15_SUM_RECV, 0x090E, "Current No Tier Block 15 Summation Received" ) \
4961 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_16_SUM_RECV, 0x090F, "Current No Tier Block 16 Summation Received" ) \
4962 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_1_SUM_RECV, 0x0910, "Current Tier 1 Block 1 Summation Received" ) \
4963 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_2_SUM_RECV, 0x0911, "Current Tier 1 Block 2 Summation Received" ) \
4964 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_3_SUM_RECV, 0x0912, "Current Tier 1 Block 3 Summation Received" ) \
4965 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_4_SUM_RECV, 0x0913, "Current Tier 1 Block 4 Summation Received" ) \
4966 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_5_SUM_RECV, 0x0914, "Current Tier 1 Block 5 Summation Received" ) \
4967 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_6_SUM_RECV, 0x0915, "Current Tier 1 Block 6 Summation Received" ) \
4968 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_7_SUM_RECV, 0x0916, "Current Tier 1 Block 7 Summation Received" ) \
4969 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_8_SUM_RECV, 0x0917, "Current Tier 1 Block 8 Summation Received" ) \
4970 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_9_SUM_RECV, 0x0918, "Current Tier 1 Block 9 Summation Received" ) \
4971 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_10_SUM_RECV, 0x0919, "Current Tier 1 Block 10 Summation Received" ) \
4972 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_11_SUM_RECV, 0x091A, "Current Tier 1 Block 11 Summation Received" ) \
4973 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_12_SUM_RECV, 0x091B, "Current Tier 1 Block 12 Summation Received" ) \
4974 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_13_SUM_RECV, 0x091C, "Current Tier 1 Block 13 Summation Received" ) \
4975 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_14_SUM_RECV, 0x091D, "Current Tier 1 Block 14 Summation Received" ) \
4976 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_15_SUM_RECV, 0x091E, "Current Tier 1 Block 15 Summation Received" ) \
4977 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_16_SUM_RECV, 0x091F, "Current Tier 1 Block 16 Summation Received" ) \
4978 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_1_SUM_RECV, 0x0920, "Current Tier 2 Block 1 Summation Received" ) \
4979 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_2_SUM_RECV, 0x0921, "Current Tier 2 Block 2 Summation Received" ) \
4980 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_3_SUM_RECV, 0x0922, "Current Tier 2 Block 3 Summation Received" ) \
4981 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_4_SUM_RECV, 0x0923, "Current Tier 2 Block 4 Summation Received" ) \
4982 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_5_SUM_RECV, 0x0924, "Current Tier 2 Block 5 Summation Received" ) \
4983 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_6_SUM_RECV, 0x0925, "Current Tier 2 Block 6 Summation Received" ) \
4984 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_7_SUM_RECV, 0x0926, "Current Tier 2 Block 7 Summation Received" ) \
4985 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_8_SUM_RECV, 0x0927, "Current Tier 2 Block 8 Summation Received" ) \
4986 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_9_SUM_RECV, 0x0928, "Current Tier 2 Block 9 Summation Received" ) \
4987 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_10_SUM_RECV, 0x0929, "Current Tier 2 Block 10 Summation Received" ) \
4988 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_11_SUM_RECV, 0x092A, "Current Tier 2 Block 11 Summation Received" ) \
4989 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_12_SUM_RECV, 0x092B, "Current Tier 2 Block 12 Summation Received" ) \
4990 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_13_SUM_RECV, 0x092C, "Current Tier 2 Block 13 Summation Received" ) \
4991 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_14_SUM_RECV, 0x092D, "Current Tier 2 Block 14 Summation Received" ) \
4992 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_15_SUM_RECV, 0x092E, "Current Tier 2 Block 15 Summation Received" ) \
4993 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_16_SUM_RECV, 0x092F, "Current Tier 2 Block 16 Summation Received" ) \
4994 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_1_SUM_RECV, 0x0930, "Current Tier 3 Block 1 Summation Received" ) \
4995 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_2_SUM_RECV, 0x0931, "Current Tier 3 Block 2 Summation Received" ) \
4996 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_3_SUM_RECV, 0x0932, "Current Tier 3 Block 3 Summation Received" ) \
4997 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_4_SUM_RECV, 0x0933, "Current Tier 3 Block 4 Summation Received" ) \
4998 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_5_SUM_RECV, 0x0934, "Current Tier 3 Block 5 Summation Received" ) \
4999 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_6_SUM_RECV, 0x0935, "Current Tier 3 Block 6 Summation Received" ) \
5000 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_7_SUM_RECV, 0x0936, "Current Tier 3 Block 7 Summation Received" ) \
5001 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_8_SUM_RECV, 0x0937, "Current Tier 3 Block 8 Summation Received" ) \
5002 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_9_SUM_RECV, 0x0938, "Current Tier 3 Block 9 Summation Received" ) \
5003 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_10_SUM_RECV, 0x0939, "Current Tier 3 Block 10 Summation Received" ) \
5004 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_11_SUM_RECV, 0x093A, "Current Tier 3 Block 11 Summation Received" ) \
5005 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_12_SUM_RECV, 0x093B, "Current Tier 3 Block 12 Summation Received" ) \
5006 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_13_SUM_RECV, 0x093C, "Current Tier 3 Block 13 Summation Received" ) \
5007 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_14_SUM_RECV, 0x093D, "Current Tier 3 Block 14 Summation Received" ) \
5008 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_15_SUM_RECV, 0x093E, "Current Tier 3 Block 15 Summation Received" ) \
5009 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_16_SUM_RECV, 0x093F, "Current Tier 3 Block 16 Summation Received" ) \
5010 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_1_SUM_RECV, 0x0940, "Current Tier 4 Block 1 Summation Received" ) \
5011 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_2_SUM_RECV, 0x0941, "Current Tier 4 Block 2 Summation Received" ) \
5012 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_3_SUM_RECV, 0x0942, "Current Tier 4 Block 3 Summation Received" ) \
5013 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_4_SUM_RECV, 0x0943, "Current Tier 4 Block 4 Summation Received" ) \
5014 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_5_SUM_RECV, 0x0944, "Current Tier 4 Block 5 Summation Received" ) \
5015 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_6_SUM_RECV, 0x0945, "Current Tier 4 Block 6 Summation Received" ) \
5016 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_7_SUM_RECV, 0x0946, "Current Tier 4 Block 7 Summation Received" ) \
5017 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_8_SUM_RECV, 0x0947, "Current Tier 4 Block 8 Summation Received" ) \
5018 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_9_SUM_RECV, 0x0948, "Current Tier 4 Block 9 Summation Received" ) \
5019 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_10_SUM_RECV, 0x0949, "Current Tier 4 Block 10 Summation Received" ) \
5020 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_11_SUM_RECV, 0x094A, "Current Tier 4 Block 11 Summation Received" ) \
5021 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_12_SUM_RECV, 0x094B, "Current Tier 4 Block 12 Summation Received" ) \
5022 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_13_SUM_RECV, 0x094C, "Current Tier 4 Block 13 Summation Received" ) \
5023 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_14_SUM_RECV, 0x094D, "Current Tier 4 Block 14 Summation Received" ) \
5024 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_15_SUM_RECV, 0x094E, "Current Tier 4 Block 15 Summation Received" ) \
5025 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_16_SUM_RECV, 0x094F, "Current Tier 4 Block 16 Summation Received" ) \
5026 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_1_SUM_RECV, 0x0950, "Current Tier 5 Block 1 Summation Received" ) \
5027 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_2_SUM_RECV, 0x0951, "Current Tier 5 Block 2 Summation Received" ) \
5028 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_3_SUM_RECV, 0x0952, "Current Tier 5 Block 3 Summation Received" ) \
5029 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_4_SUM_RECV, 0x0953, "Current Tier 5 Block 4 Summation Received" ) \
5030 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_5_SUM_RECV, 0x0954, "Current Tier 5 Block 5 Summation Received" ) \
5031 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_6_SUM_RECV, 0x0955, "Current Tier 5 Block 6 Summation Received" ) \
5032 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_7_SUM_RECV, 0x0956, "Current Tier 5 Block 7 Summation Received" ) \
5033 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_8_SUM_RECV, 0x0957, "Current Tier 5 Block 8 Summation Received" ) \
5034 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_9_SUM_RECV, 0x0958, "Current Tier 5 Block 9 Summation Received" ) \
5035 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_10_SUM_RECV, 0x0959, "Current Tier 5 Block 10 Summation Received" ) \
5036 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_11_SUM_RECV, 0x095A, "Current Tier 5 Block 11 Summation Received" ) \
5037 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_12_SUM_RECV, 0x095B, "Current Tier 5 Block 12 Summation Received" ) \
5038 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_13_SUM_RECV, 0x095C, "Current Tier 5 Block 13 Summation Received" ) \
5039 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_14_SUM_RECV, 0x095D, "Current Tier 5 Block 14 Summation Received" ) \
5040 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_15_SUM_RECV, 0x095E, "Current Tier 5 Block 15 Summation Received" ) \
5041 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_16_SUM_RECV, 0x095F, "Current Tier 5 Block 16 Summation Received" ) \
5042 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_1_SUM_RECV, 0x0960, "Current Tier 6 Block 1 Summation Received" ) \
5043 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_2_SUM_RECV, 0x0961, "Current Tier 6 Block 2 Summation Received" ) \
5044 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_3_SUM_RECV, 0x0962, "Current Tier 6 Block 3 Summation Received" ) \
5045 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_4_SUM_RECV, 0x0963, "Current Tier 6 Block 4 Summation Received" ) \
5046 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_5_SUM_RECV, 0x0964, "Current Tier 6 Block 5 Summation Received" ) \
5047 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_6_SUM_RECV, 0x0965, "Current Tier 6 Block 6 Summation Received" ) \
5048 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_7_SUM_RECV, 0x0966, "Current Tier 6 Block 7 Summation Received" ) \
5049 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_8_SUM_RECV, 0x0967, "Current Tier 6 Block 8 Summation Received" ) \
5050 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_9_SUM_RECV, 0x0968, "Current Tier 6 Block 9 Summation Received" ) \
5051 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_10_SUM_RECV, 0x0969, "Current Tier 6 Block 10 Summation Received" ) \
5052 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_11_SUM_RECV, 0x096A, "Current Tier 6 Block 11 Summation Received" ) \
5053 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_12_SUM_RECV, 0x096B, "Current Tier 6 Block 12 Summation Received" ) \
5054 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_13_SUM_RECV, 0x096C, "Current Tier 6 Block 13 Summation Received" ) \
5055 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_14_SUM_RECV, 0x096D, "Current Tier 6 Block 14 Summation Received" ) \
5056 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_15_SUM_RECV, 0x096E, "Current Tier 6 Block 15 Summation Received" ) \
5057 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_16_SUM_RECV, 0x096F, "Current Tier 6 Block 16 Summation Received" ) \
5058 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_1_SUM_RECV, 0x0970, "Current Tier 7 Block 1 Summation Received" ) \
5059 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_2_SUM_RECV, 0x0971, "Current Tier 7 Block 2 Summation Received" ) \
5060 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_3_SUM_RECV, 0x0972, "Current Tier 7 Block 3 Summation Received" ) \
5061 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_4_SUM_RECV, 0x0973, "Current Tier 7 Block 4 Summation Received" ) \
5062 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_5_SUM_RECV, 0x0974, "Current Tier 7 Block 5 Summation Received" ) \
5063 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_6_SUM_RECV, 0x0975, "Current Tier 7 Block 6 Summation Received" ) \
5064 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_7_SUM_RECV, 0x0976, "Current Tier 7 Block 7 Summation Received" ) \
5065 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_8_SUM_RECV, 0x0977, "Current Tier 7 Block 8 Summation Received" ) \
5066 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_9_SUM_RECV, 0x0978, "Current Tier 7 Block 9 Summation Received" ) \
5067 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_10_SUM_RECV, 0x0979, "Current Tier 7 Block 10 Summation Received" ) \
5068 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_11_SUM_RECV, 0x097A, "Current Tier 7 Block 11 Summation Received" ) \
5069 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_12_SUM_RECV, 0x097B, "Current Tier 7 Block 12 Summation Received" ) \
5070 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_13_SUM_RECV, 0x097C, "Current Tier 7 Block 13 Summation Received" ) \
5071 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_14_SUM_RECV, 0x097D, "Current Tier 7 Block 14 Summation Received" ) \
5072 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_15_SUM_RECV, 0x097E, "Current Tier 7 Block 15 Summation Received" ) \
5073 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_16_SUM_RECV, 0x097F, "Current Tier 7 Block 16 Summation Received" ) \
5074 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_1_SUM_RECV, 0x0980, "Current Tier 8 Block 1 Summation Received" ) \
5075 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_2_SUM_RECV, 0x0981, "Current Tier 8 Block 2 Summation Received" ) \
5076 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_3_SUM_RECV, 0x0982, "Current Tier 8 Block 3 Summation Received" ) \
5077 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_4_SUM_RECV, 0x0983, "Current Tier 8 Block 4 Summation Received" ) \
5078 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_5_SUM_RECV, 0x0984, "Current Tier 8 Block 5 Summation Received" ) \
5079 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_6_SUM_RECV, 0x0985, "Current Tier 8 Block 6 Summation Received" ) \
5080 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_7_SUM_RECV, 0x0986, "Current Tier 8 Block 7 Summation Received" ) \
5081 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_8_SUM_RECV, 0x0987, "Current Tier 8 Block 8 Summation Received" ) \
5082 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_9_SUM_RECV, 0x0988, "Current Tier 8 Block 9 Summation Received" ) \
5083 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_10_SUM_RECV, 0x0989, "Current Tier 8 Block 10 Summation Received" ) \
5084 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_11_SUM_RECV, 0x098A, "Current Tier 8 Block 11 Summation Received" ) \
5085 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_12_SUM_RECV, 0x098B, "Current Tier 8 Block 12 Summation Received" ) \
5086 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_13_SUM_RECV, 0x098C, "Current Tier 8 Block 13 Summation Received" ) \
5087 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_14_SUM_RECV, 0x098D, "Current Tier 8 Block 14 Summation Received" ) \
5088 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_15_SUM_RECV, 0x098E, "Current Tier 8 Block 15 Summation Received" ) \
5089 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_16_SUM_RECV, 0x098F, "Current Tier 8 Block 16 Summation Received" ) \
5090 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_1_SUM_RECV, 0x0990, "Current Tier 9 Block 1 Summation Received" ) \
5091 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_2_SUM_RECV, 0x0991, "Current Tier 9 Block 2 Summation Received" ) \
5092 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_3_SUM_RECV, 0x0992, "Current Tier 9 Block 3 Summation Received" ) \
5093 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_4_SUM_RECV, 0x0993, "Current Tier 9 Block 4 Summation Received" ) \
5094 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_5_SUM_RECV, 0x0994, "Current Tier 9 Block 5 Summation Received" ) \
5095 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_6_SUM_RECV, 0x0995, "Current Tier 9 Block 6 Summation Received" ) \
5096 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_7_SUM_RECV, 0x0996, "Current Tier 9 Block 7 Summation Received" ) \
5097 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_8_SUM_RECV, 0x0997, "Current Tier 9 Block 8 Summation Received" ) \
5098 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_9_SUM_RECV, 0x0998, "Current Tier 9 Block 9 Summation Received" ) \
5099 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_10_SUM_RECV, 0x0999, "Current Tier 9 Block 10 Summation Received" ) \
5100 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_11_SUM_RECV, 0x099A, "Current Tier 9 Block 11 Summation Received" ) \
5101 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_12_SUM_RECV, 0x099B, "Current Tier 9 Block 12 Summation Received" ) \
5102 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_13_SUM_RECV, 0x099C, "Current Tier 9 Block 13 Summation Received" ) \
5103 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_14_SUM_RECV, 0x099D, "Current Tier 9 Block 14 Summation Received" ) \
5104 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_15_SUM_RECV, 0x099E, "Current Tier 9 Block 15 Summation Received" ) \
5105 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_16_SUM_RECV, 0x099F, "Current Tier 9 Block 16 Summation Received" ) \
5106 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_1_SUM_RECV, 0x09A0, "Current Tier 10 Block 1 Summation Received" ) \
5107 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_2_SUM_RECV, 0x09A1, "Current Tier 10 Block 2 Summation Received" ) \
5108 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_3_SUM_RECV, 0x09A2, "Current Tier 10 Block 3 Summation Received" ) \
5109 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_4_SUM_RECV, 0x09A3, "Current Tier 10 Block 4 Summation Received" ) \
5110 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_5_SUM_RECV, 0x09A4, "Current Tier 10 Block 5 Summation Received" ) \
5111 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_6_SUM_RECV, 0x09A5, "Current Tier 10 Block 6 Summation Received" ) \
5112 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_7_SUM_RECV, 0x09A6, "Current Tier 10 Block 7 Summation Received" ) \
5113 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_8_SUM_RECV, 0x09A7, "Current Tier 10 Block 8 Summation Received" ) \
5114 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_9_SUM_RECV, 0x09A8, "Current Tier 10 Block 9 Summation Received" ) \
5115 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_10_SUM_RECV, 0x09A9, "Current Tier 10 Block 10 Summation Received" ) \
5116 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_11_SUM_RECV, 0x09AA, "Current Tier 10 Block 11 Summation Received" ) \
5117 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_12_SUM_RECV, 0x09AB, "Current Tier 10 Block 12 Summation Received" ) \
5118 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_13_SUM_RECV, 0x09AC, "Current Tier 10 Block 13 Summation Received" ) \
5119 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_14_SUM_RECV, 0x09AD, "Current Tier 10 Block 14 Summation Received" ) \
5120 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_15_SUM_RECV, 0x09AE, "Current Tier 10 Block 15 Summation Received" ) \
5121 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_16_SUM_RECV, 0x09AF, "Current Tier 10 Block 16 Summation Received" ) \
5122 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_1_SUM_RECV, 0x09B0, "Current Tier 11 Block 1 Summation Received" ) \
5123 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_2_SUM_RECV, 0x09B1, "Current Tier 11 Block 2 Summation Received" ) \
5124 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_3_SUM_RECV, 0x09B2, "Current Tier 11 Block 3 Summation Received" ) \
5125 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_4_SUM_RECV, 0x09B3, "Current Tier 11 Block 4 Summation Received" ) \
5126 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_5_SUM_RECV, 0x09B4, "Current Tier 11 Block 5 Summation Received" ) \
5127 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_6_SUM_RECV, 0x09B5, "Current Tier 11 Block 6 Summation Received" ) \
5128 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_7_SUM_RECV, 0x09B6, "Current Tier 11 Block 7 Summation Received" ) \
5129 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_8_SUM_RECV, 0x09B7, "Current Tier 11 Block 8 Summation Received" ) \
5130 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_9_SUM_RECV, 0x09B8, "Current Tier 11 Block 9 Summation Received" ) \
5131 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_10_SUM_RECV, 0x09B9, "Current Tier 11 Block 10 Summation Received" ) \
5132 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_11_SUM_RECV, 0x09BA, "Current Tier 11 Block 11 Summation Received" ) \
5133 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_12_SUM_RECV, 0x09BB, "Current Tier 11 Block 12 Summation Received" ) \
5134 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_13_SUM_RECV, 0x09BC, "Current Tier 11 Block 13 Summation Received" ) \
5135 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_14_SUM_RECV, 0x09BD, "Current Tier 11 Block 14 Summation Received" ) \
5136 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_15_SUM_RECV, 0x09BE, "Current Tier 11 Block 15 Summation Received" ) \
5137 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_16_SUM_RECV, 0x09BF, "Current Tier 11 Block 16 Summation Received" ) \
5138 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_1_SUM_RECV, 0x09C0, "Current Tier 12 Block 1 Summation Received" ) \
5139 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_2_SUM_RECV, 0x09C1, "Current Tier 12 Block 2 Summation Received" ) \
5140 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_3_SUM_RECV, 0x09C2, "Current Tier 12 Block 3 Summation Received" ) \
5141 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_4_SUM_RECV, 0x09C3, "Current Tier 12 Block 4 Summation Received" ) \
5142 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_5_SUM_RECV, 0x09C4, "Current Tier 12 Block 5 Summation Received" ) \
5143 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_6_SUM_RECV, 0x09C5, "Current Tier 12 Block 6 Summation Received" ) \
5144 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_7_SUM_RECV, 0x09C6, "Current Tier 12 Block 7 Summation Received" ) \
5145 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_8_SUM_RECV, 0x09C7, "Current Tier 12 Block 8 Summation Received" ) \
5146 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_9_SUM_RECV, 0x09C8, "Current Tier 12 Block 9 Summation Received" ) \
5147 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_10_SUM_RECV, 0x09C9, "Current Tier 12 Block 10 Summation Received" ) \
5148 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_11_SUM_RECV, 0x09CA, "Current Tier 12 Block 11 Summation Received" ) \
5149 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_12_SUM_RECV, 0x09CB, "Current Tier 12 Block 12 Summation Received" ) \
5150 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_13_SUM_RECV, 0x09CC, "Current Tier 12 Block 13 Summation Received" ) \
5151 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_14_SUM_RECV, 0x09CD, "Current Tier 12 Block 14 Summation Received" ) \
5152 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_15_SUM_RECV, 0x09CE, "Current Tier 12 Block 15 Summation Received" ) \
5153 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_16_SUM_RECV, 0x09CF, "Current Tier 12 Block 16 Summation Received" ) \
5154 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_1_SUM_RECV, 0x09D0, "Current Tier 13 Block 1 Summation Received" ) \
5155 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_2_SUM_RECV, 0x09D1, "Current Tier 13 Block 2 Summation Received" ) \
5156 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_3_SUM_RECV, 0x09D2, "Current Tier 13 Block 3 Summation Received" ) \
5157 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_4_SUM_RECV, 0x09D3, "Current Tier 13 Block 4 Summation Received" ) \
5158 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_5_SUM_RECV, 0x09D4, "Current Tier 13 Block 5 Summation Received" ) \
5159 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_6_SUM_RECV, 0x09D5, "Current Tier 13 Block 6 Summation Received" ) \
5160 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_7_SUM_RECV, 0x09D6, "Current Tier 13 Block 7 Summation Received" ) \
5161 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_8_SUM_RECV, 0x09D7, "Current Tier 13 Block 8 Summation Received" ) \
5162 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_9_SUM_RECV, 0x09D8, "Current Tier 13 Block 9 Summation Received" ) \
5163 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_10_SUM_RECV, 0x09D9, "Current Tier 13 Block 10 Summation Received" ) \
5164 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_11_SUM_RECV, 0x09DA, "Current Tier 13 Block 11 Summation Received" ) \
5165 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_12_SUM_RECV, 0x09DB, "Current Tier 13 Block 12 Summation Received" ) \
5166 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_13_SUM_RECV, 0x09DC, "Current Tier 13 Block 13 Summation Received" ) \
5167 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_14_SUM_RECV, 0x09DD, "Current Tier 13 Block 14 Summation Received" ) \
5168 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_15_SUM_RECV, 0x09DE, "Current Tier 13 Block 15 Summation Received" ) \
5169 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_16_SUM_RECV, 0x09DF, "Current Tier 13 Block 16 Summation Received" ) \
5170 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_1_SUM_RECV, 0x09E0, "Current Tier 14 Block 1 Summation Received" ) \
5171 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_2_SUM_RECV, 0x09E1, "Current Tier 14 Block 2 Summation Received" ) \
5172 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_3_SUM_RECV, 0x09E2, "Current Tier 14 Block 3 Summation Received" ) \
5173 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_4_SUM_RECV, 0x09E3, "Current Tier 14 Block 4 Summation Received" ) \
5174 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_5_SUM_RECV, 0x09E4, "Current Tier 14 Block 5 Summation Received" ) \
5175 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_6_SUM_RECV, 0x09E5, "Current Tier 14 Block 6 Summation Received" ) \
5176 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_7_SUM_RECV, 0x09E6, "Current Tier 14 Block 7 Summation Received" ) \
5177 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_8_SUM_RECV, 0x09E7, "Current Tier 14 Block 8 Summation Received" ) \
5178 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_9_SUM_RECV, 0x09E8, "Current Tier 14 Block 9 Summation Received" ) \
5179 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_10_SUM_RECV, 0x09E9, "Current Tier 14 Block 10 Summation Received" ) \
5180 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_11_SUM_RECV, 0x09EA, "Current Tier 14 Block 11 Summation Received" ) \
5181 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_12_SUM_RECV, 0x09EB, "Current Tier 14 Block 12 Summation Received" ) \
5182 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_13_SUM_RECV, 0x09EC, "Current Tier 14 Block 13 Summation Received" ) \
5183 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_14_SUM_RECV, 0x09ED, "Current Tier 14 Block 14 Summation Received" ) \
5184 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_15_SUM_RECV, 0x09EE, "Current Tier 14 Block 15 Summation Received" ) \
5185 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_16_SUM_RECV, 0x09EF, "Current Tier 14 Block 16 Summation Received" ) \
5186 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_1_SUM_RECV, 0x09F0, "Current Tier 15 Block 1 Summation Received" ) \
5187 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_2_SUM_RECV, 0x09F1, "Current Tier 15 Block 2 Summation Received" ) \
5188 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_3_SUM_RECV, 0x09F2, "Current Tier 15 Block 3 Summation Received" ) \
5189 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_4_SUM_RECV, 0x09F3, "Current Tier 15 Block 4 Summation Received" ) \
5190 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_5_SUM_RECV, 0x09F4, "Current Tier 15 Block 5 Summation Received" ) \
5191 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_6_SUM_RECV, 0x09F5, "Current Tier 15 Block 6 Summation Received" ) \
5192 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_7_SUM_RECV, 0x09F6, "Current Tier 15 Block 7 Summation Received" ) \
5193 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_8_SUM_RECV, 0x09F7, "Current Tier 15 Block 8 Summation Received" ) \
5194 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_9_SUM_RECV, 0x09F8, "Current Tier 15 Block 9 Summation Received" ) \
5195 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_10_SUM_RECV, 0x09F9, "Current Tier 15 Block 10 Summation Received" ) \
5196 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_11_SUM_RECV, 0x09FA, "Current Tier 15 Block 11 Summation Received" ) \
5197 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_12_SUM_RECV, 0x09FB, "Current Tier 15 Block 12 Summation Received" ) \
5198 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_13_SUM_RECV, 0x09FC, "Current Tier 15 Block 13 Summation Received" ) \
5199 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_14_SUM_RECV, 0x09FD, "Current Tier 15 Block 14 Summation Received" ) \
5200 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_15_SUM_RECV, 0x09FE, "Current Tier 15 Block 15 Summation Received" ) \
5201 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_16_SUM_RECV, 0x09FF, "Current Tier 15 Block 16 Summation Received" ) \
5202 /* Meter Billing Attribute Set */ \
5203 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_DELIVERED, 0x0A00, "Bill to Date Delivered" ) \
5204 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_TIMESTAMP_DEL, 0x0A01, "Bill to Date Time Stamp Delivered" ) \
5205 XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_DELIVERED, 0x0A02, "Projected Bill Delivered" ) \
5206 XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_TIME_STAMP_DEL, 0x0A03, "Projected Bill Time Stamp Delivered" ) \
5207 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_DELIVERED_TRAILING_DIGIT, 0x0A04, "Bill Delivered Trailing Digit" ) \
5208 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_RECEIVED, 0x0A10, "Bill to Date Received" ) \
5209 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_TIMESTAMP_RECEIVED, 0x0A11, "Bill to Date Time Stamp Received" ) \
5210 XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_RECEIVED, 0x0A12, "Projected Bill Received" ) \
5211 XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_TIME_STAMP_RECV, 0x0A13, "Projected Bill Time Stamp Received" ) \
5212 XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_RECEIVED_TRAILING_DIGIT, 0x0A14, "Bill Received Trailing Digit" ) \
5213 /* Supply Control Attribute Set */ \
5214 XXX(ZBEE_ZCL_ATTR_ID_MET_PROPOSED_CHANGE_SUPPLY_IMP_TIME, 0x0B00, "Proposed Change Supply Implementation Time" ) \
5215 XXX(ZBEE_ZCL_ATTR_ID_MET_PROPOSED_CHANGE_SUPPLY_STATUS, 0x0B01, "Proposed Change Supply Status" ) \
5216 XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_THRESHOLD, 0x0B10, "Uncontrolled Flow Threshold" ) \
5217 XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_UNIT_OF_MEAS, 0x0B11, "Uncontrolled Flow Unit of Measure" ) \
5218 XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_MULTIPLIER, 0x0B12, "Uncontrolled Flow Multiplier" ) \
5219 XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_DIVISOR, 0x0B13, "Uncontrolled Flow Divisor" ) \
5220 XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_STABILISATION_PERIOD, 0x0B14, "Flow Stabilisation Period" ) \
5221 XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_MEASUREMENT_PERIOD, 0x0B15, "Flow Measurement Period" ) \
5222 /* Alternative Historical Consumption Attribute Set */ \
5223 XXX(ZBEE_ZCL_ATTR_ID_MET_ALTERNATIVE_INSTANT_DEMAND, 0x0C00, "Alternative Instantaneous Demand" ) \
5224 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_ALT_CON_DEL, 0x0C01, "Current Day Alternative Consumption Delivered" ) \
5225 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_ALT_CON_RECV, 0x0C02, "Current Day Alternative Consumption Received" ) \
5226 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_ALT_CON_DEL, 0x0C03, "Previous Day Alternative Consumption Delivered" ) \
5227 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_ALT_CON_RECV, 0x0C04, "Previous Day Alternative Consumption Received" ) \
5228 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_DEL, 0x0C05, "Current Alternative Partial Profile Interval Start Time Delivered" ) \
5229 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_RECV, 0x0C06, "Current Alternative Partial Profile Interval Start Time Received" ) \
5230 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_VAL_DEL, 0x0C07, "Current Alternative Partial Profile Interval Value Delivered" ) \
5231 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_VAL_RECV, 0x0C08, "Current Alternative Partial Profile Interval Value Received" ) \
5232 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MAX_PRESS, 0x0C09, "Current Day Alternative Max Pressure" ) \
5233 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MIN_PRESS, 0x0C0A, "Current Day Alternative Min Pressure" ) \
5234 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MAX_PRESS, 0x0C0B, "Previous Day Alternative Max Pressure" ) \
5235 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MIN_PRESS, 0x0C0C, "Previous Day Alternative Min Pressure" ) \
5236 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MAX_DEMAND, 0x0C0D, "Current Day Alternative Max Demand" ) \
5237 XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MAX_DEMAND, 0x0C0E, "Previous Day Alternative Max Demand" ) \
5238 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_ALT_MAX_DEMAND, 0x0C0F, "Current Month Alternative Max Demand" ) \
5239 XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_ALT_MAX_DEMAND, 0x0C10, "Current Year Alternative Max Demand" ) \
5240 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_2_ALT_CON_DEL, 0x0C20, "Previous Day 2 Alternative Consumption Delivered" ) \
5241 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_2_ALT_CON_RECV, 0x0C21, "Previous Day 2 Alternative Consumption Received" ) \
5242 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_3_ALT_CON_DEL, 0x0C22, "Previous Day 3 Alternative Consumption Delivered" ) \
5243 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_3_ALT_CON_RECV, 0x0C23, "Previous Day 3 Alternative Consumption Received" ) \
5244 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_4_ALT_CON_DEL, 0x0C24, "Previous Day 4 Alternative Consumption Delivered" ) \
5245 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_4_ALT_CON_RECV, 0x0C25, "Previous Day 4 Alternative Consumption Received" ) \
5246 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_5_ALT_CON_DEL, 0x0C26, "Previous Day 5 Alternative Consumption Delivered" ) \
5247 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_5_ALT_CON_RECV, 0x0C27, "Previous Day 5 Alternative Consumption Received" ) \
5248 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_6_ALT_CON_DEL, 0x0C28, "Previous Day 6 Alternative Consumption Delivered" ) \
5249 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_6_ALT_CON_RECV, 0x0C29, "Previous Day 6 Alternative Consumption Received" ) \
5250 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_7_ALT_CON_DEL, 0x0C2A, "Previous Day 7 Alternative Consumption Delivered" ) \
5251 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_7_ALT_CON_RECV, 0x0C2B, "Previous Day 7 Alternative Consumption Received" ) \
5252 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_8_ALT_CON_DEL, 0x0C2C, "Previous Day 8 Alternative Consumption Delivered" ) \
5253 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_8_ALT_CON_RECV, 0x0C2D, "Previous Day 8 Alternative Consumption Received" ) \
5254 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_ALT_CON_DEL, 0x0C30, "Current Week Alternative Consumption Delivered" ) \
5255 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_ALT_CON_RECV, 0x0C31, "Current Week Alternative Consumption Received" ) \
5256 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_ALT_CON_DEL, 0x0C32, "Previous Week Alternative Consumption Delivered" ) \
5257 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_ALT_CON_RECV, 0x0C33, "Previous Week Alternative Consumption Received" ) \
5258 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_ALT_CON_DEL, 0x0C34, "Previous Week 2 Alternative Consumption Delivered" ) \
5259 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_ALT_CON_RECV, 0x0C35, "Previous Week 2 Alternative Consumption Received" ) \
5260 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_ALT_CON_DEL, 0x0C36, "Previous Week 3 Alternative Consumption Delivered" ) \
5261 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_ALT_CON_RECV, 0x0C37, "Previous Week 3 Alternative Consumption Received" ) \
5262 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_ALT_CON_DEL, 0x0C38, "Previous Week 4 Alternative Consumption Delivered" ) \
5263 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_ALT_CON_RECV, 0x0C39, "Previous Week 4 Alternative Consumption Received" ) \
5264 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_ALT_CON_DEL, 0x0C3A, "Previous Week 5 Alternative Consumption Delivered" ) \
5265 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_ALT_CON_RECV, 0x0C3B, "Previous Week 5 Alternative Consumption Received" ) \
5266 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_ALT_CON_DEL, 0x0C40, "Current Month Alternative Consumption Delivered" ) \
5267 XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_ALT_CON_RECV, 0x0C41, "Current Month Alternative Consumption Received" ) \
5268 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_ALT_CON_DEL, 0x0C42, "Previous Month Alternative Consumption Delivered" ) \
5269 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_ALT_CON_RECV, 0x0C43, "Previous Month Alternative Consumption Received" ) \
5270 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_ALT_CON_DEL, 0x0C44, "Previous Month 2 Alternative Consumption Delivered" ) \
5271 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_ALT_CON_RECV, 0x0C45, "Previous Month 2 Alternative Consumption Received" ) \
5272 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_ALT_CON_DEL, 0x0C46, "Previous Month 3 Alternative Consumption Delivered" ) \
5273 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_ALT_CON_RECV, 0x0C47, "Previous Month 3 Alternative Consumption Received" ) \
5274 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_ALT_CON_DEL, 0x0C48, "Previous Month 4 Alternative Consumption Delivered" ) \
5275 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_ALT_CON_RECV, 0x0C49, "Previous Month 4 Alternative Consumption Received" ) \
5276 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_ALT_CON_DEL, 0x0C4A, "Previous Month 5 Alternative Consumption Delivered" ) \
5277 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_ALT_CON_RECV, 0x0C4B, "Previous Month 5 Alternative Consumption Received" ) \
5278 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_ALT_CON_DEL, 0x0C4C, "Previous Month 6 Alternative Consumption Delivered" ) \
5279 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_ALT_CON_RECV, 0x0C4D, "Previous Month 6 Alternative Consumption Received" ) \
5280 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_ALT_CON_DEL, 0x0C4E, "Previous Month 7 Alternative Consumption Delivered" ) \
5281 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_ALT_CON_RECV, 0x0C4F, "Previous Month 7 Alternative Consumption Received" ) \
5282 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_ALT_CON_DEL, 0x0C50, "Previous Month 8 Alternative Consumption Delivered" ) \
5283 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_ALT_CON_RECV, 0x0C51, "Previous Month 8 Alternative Consumption Received" ) \
5284 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_ALT_CON_DEL, 0x0C52, "Previous Month 9 Alternative Consumption Delivered" ) \
5285 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_ALT_CON_RECV, 0x0C53, "Previous Month 9 Alternative Consumption Received" ) \
5286 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_ALT_CON_DEL, 0x0C54, "Previous Month 10 Alternative Consumption Delivered" ) \
5287 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_ALT_CON_RECV, 0x0C55, "Previous Month 10 Alternative Consumption Received" ) \
5288 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_ALT_CON_DEL, 0x0C56, "Previous Month 11 Alternative Consumption Delivered" ) \
5289 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_ALT_CON_RECV, 0x0C57, "Previous Month 11 Alternative Consumption Received" ) \
5290 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_ALT_CON_DEL, 0x0C58, "Previous Month 12 Alternative Consumption Delivered" ) \
5291 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_ALT_CON_RECV, 0x0C59, "Previous Month 12 Alternative Consumption Received" ) \
5292 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_ALT_CON_DEL, 0x0C5A, "Previous Month 13 Alternative Consumption Delivered" ) \
5293 XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_ALT_CON_RECV, 0x0C5B, "Previous Month 13 Alternative Consumption Received" ) \
5294 /* Smart Energy */ \
5295 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET, 0xFFFE, "Attribute Reporting Status" )
5297 VALUE_STRING_ENUM(zbee_zcl_met_attr_server_names
);
5298 VALUE_STRING_ARRAY(zbee_zcl_met_attr_server_names
);
5299 static value_string_ext zbee_zcl_met_attr_server_names_ext
= VALUE_STRING_EXT_INIT(zbee_zcl_met_attr_server_names
);
5301 #define zbee_zcl_met_attr_client_names_VALUE_STRING_LIST(XXX) \
5302 /* Notification AttributeSet*/ \
5303 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS, 0x0000, "Functional Notification Flags" ) \
5304 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2, 0x0001, "Notification Flags 2" ) \
5305 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3, 0x0002, "Notification Flags 3" ) \
5306 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4, 0x0003, "Notification Flags 4" ) \
5307 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5, 0x0004, "Notification Flags 5" ) \
5308 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_6, 0x0005, "Notification Flags 6" ) \
5309 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_7, 0x0006, "Notification Flags 7" ) \
5310 XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_8, 0x0007, "Notification Flags 8" ) \
5311 /* Smart Energy */ \
5312 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET_CLNT, 0xFFFE, "Attribute Reporting Status" )
5314 VALUE_STRING_ENUM(zbee_zcl_met_attr_client_names
);
5315 VALUE_STRING_ARRAY(zbee_zcl_met_attr_client_names
);
5317 /* Server Commands Received */
5318 #define zbee_zcl_met_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
5319 XXX(ZBEE_ZCL_CMD_ID_MET_GET_PROFILE, 0x00, "Get Profile" ) \
5320 XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR_RSP, 0x01, "Request Mirror Response" ) \
5321 XXX(ZBEE_ZCL_CMD_ID_MET_MIRROR_REMOVED, 0x02, "Mirror Removed" ) \
5322 XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE, 0x03, "Request Fast Poll Mode" ) \
5323 XXX(ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT, 0x04, "Schedule Snapshot" ) \
5324 XXX(ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT, 0x05, "Take Snapshot" ) \
5325 XXX(ZBEE_ZCL_CMD_ID_MET_GET_SNAPSHOT, 0x06, "Get Snapshot" ) \
5326 XXX(ZBEE_ZCL_CMD_ID_MET_START_SAMPLING, 0x07, "Start Sampling" ) \
5327 XXX(ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA, 0x08, "Get Sampled Data" ) \
5328 XXX(ZBEE_ZCL_CMD_ID_MET_MIRROR_REPORT_ATTRIBUTE_RESPONSE, 0x09, "Mirror Report Attribute Response" ) \
5329 XXX(ZBEE_ZCL_CMD_ID_MET_RESET_LOAD_LIMIT_COUNTER, 0x0A, "Reset Load Limit Counter" ) \
5330 XXX(ZBEE_ZCL_CMD_ID_MET_CHANGE_SUPPLY, 0x0B, "Change Supply" ) \
5331 XXX(ZBEE_ZCL_CMD_ID_MET_LOCAL_CHANGE_SUPPLY, 0x0C, "Local Change Supply" ) \
5332 XXX(ZBEE_ZCL_CMD_ID_MET_SET_SUPPLY_STATUS, 0x0D, "Set Supply Status" ) \
5333 XXX(ZBEE_ZCL_CMD_ID_MET_SET_UNCONTROLLED_FLOW_THRESHOLD, 0x0E, "Set Uncontrolled Flow Threshold" )
5335 VALUE_STRING_ENUM(zbee_zcl_met_srv_rx_cmd_names
);
5336 VALUE_STRING_ARRAY(zbee_zcl_met_srv_rx_cmd_names
);
5338 /* Server Commands Generated */
5339 #define zbee_zcl_met_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
5340 XXX(ZBEE_ZCL_CMD_ID_MET_GET_PROFILE_RESPONSE, 0x00, "Get Profile Response" ) \
5341 XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR, 0x01, "Request Mirror" ) \
5342 XXX(ZBEE_ZCL_CMD_ID_MET_REMOVE_MIRROR, 0x02, "Remove Mirror" ) \
5343 XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE_RESPONSE, 0x03, "Request Fast Poll Mode Response" ) \
5344 XXX(ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT_RESPONSE, 0x04, "Schedule Snapshot Response" ) \
5345 XXX(ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT_RESPONSE, 0x05, "Take Snapshot Response" ) \
5346 XXX(ZBEE_ZCL_CMD_ID_MET_PUBLISH_SNAPSHOT, 0x06, "Publish Snapshot" ) \
5347 XXX(ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA_RSP, 0x07, "Get Sampled Data Response" ) \
5348 XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_MIRROR, 0x08, "Configure Mirror" ) \
5349 XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_SCHEME, 0x09, "Configure Notification Scheme" ) \
5350 XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_FLAGS, 0x0A, "Configure Notification Flags" ) \
5351 XXX(ZBEE_ZCL_CMD_ID_MET_GET_NOTIFIED_MESSAGE, 0x0B, "Get Notified Message" ) \
5352 XXX(ZBEE_ZCL_CMD_ID_MET_SUPPLY_STATUS_RESPONSE, 0x0C, "Supply Status Response" ) \
5353 XXX(ZBEE_ZCL_CMD_ID_MET_START_SAMPLING_RESPONSE, 0x0D, "Start Sampling Response" )
5355 VALUE_STRING_ENUM(zbee_zcl_met_srv_tx_cmd_names
);
5356 VALUE_STRING_ARRAY(zbee_zcl_met_srv_tx_cmd_names
);
5358 #define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A 0x1
5359 #define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B 0x2
5361 static const range_string zbee_zcl_met_notification_scheme
[] = {
5362 { 0x0, 0x0, "No Notification Scheme Defined" },
5363 { ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A
, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A
, "Predefined Notification Scheme A" },
5364 { ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B
, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B
, "Predefined Notification Scheme B" },
5365 { 0x3, 0x80, "Reserved" },
5366 { 0x81, 0xFE, "For MSP Requirements" },
5367 { 0xFF, 0xFF, "Reserved" },
5371 /* Snapshot Schedule Confirmation */
5372 #define zbee_zcl_met_snapshot_schedule_confirmation_VALUE_STRING_LIST(XXX) \
5373 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_ACCEPTED, 0x00, "Accepted" ) \
5374 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_TYPE_NOT_SUPPORTED, 0x01, "Snapshot Type not supported") \
5375 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CAUSE_NOT_SUPPORTED, 0x02, "Snapshot Cause not supported") \
5376 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CURRENTLY_NOT_AVAILABLE, 0x03, "Snapshot Cause not supported") \
5377 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_NOT_SUPPORTED_BY_DEVICE, 0x04, "Snapshot Schedules not supported by device") \
5378 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_INSUFFICIENT_SPACE, 0x05, "Insufficient space for snapshot schedule")
5380 VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_confirmation
);
5381 VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_confirmation
);
5383 /* Snapshot Schedule Frequency Type*/
5384 #define zbee_zcl_met_snapshot_schedule_frequency_type_VALUE_STRING_LIST(XXX) \
5385 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_DAY, 0x0, "Day" ) \
5386 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_WEEK, 0x1, "Week" ) \
5387 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_MONTH, 0x2, "Month" ) \
5388 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_RESERVED, 0x3, "Reserved" )
5390 VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_type
);
5391 VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_type
);
5393 /* Snapshot Schedule Wild-Card Frequency*/
5394 #define zbee_zcl_met_snapshot_schedule_frequency_wild_card_VALUE_STRING_LIST(XXX) \
5395 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_START_OF, 0x0, "Start of" ) \
5396 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_END_OF, 0x1, "End of" ) \
5397 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_NOT_USED, 0x2, "Wild-card not used" ) \
5398 XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_RESERVED, 0x3, "Reserved" )
5400 VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_wild_card
);
5401 VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_wild_card
);
5403 /* Snapshot Payload Type */
5404 #define zbee_zcl_met_snapshot_payload_type_VALUE_STRING_LIST(XXX) \
5405 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_REGISTERS, 0, "TOU Information Set Delivered Registers" ) \
5406 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_REGISTERS, 1, "TOU Information Set Received Registers") \
5407 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED, 2, "Block Tier Information Set Delivered") \
5408 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED, 3, "Block Tier Information Set Received") \
5409 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_NO_BILLING, 4, "TOU Information Set Delivered (No Billing)") \
5410 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_NO_BILLING, 5, "TOU Information Set Received (No Billing)") \
5411 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED_NO_BILLING, 6, "Block Tier Information Set Delivered (No Billing)") \
5412 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED_NO_BILLING, 7, "Block Tier Information Set Received (No Billing)") \
5413 XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE, 128, "Data Unavailable")
5415 VALUE_STRING_ENUM(zbee_zcl_met_snapshot_payload_type
);
5416 VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_payload_type
);
5418 /* Functional Notification Flags */
5419 #define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE 0x00000001
5420 #define ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED 0x00000002
5421 #define ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC 0x00000004
5422 #define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1 0x00000008
5423 #define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN 0x00000010
5424 #define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN 0x00000020
5425 #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET 0x000001C0
5426 #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET 0x00000E00
5427 #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER 0x00001000
5428 #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER 0x00002000
5429 #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER 0x00004000
5430 #define ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE 0x00008000
5431 #define ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE 0x00010000
5432 #define ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES 0x00020000
5433 #define ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY 0x00040000
5434 #define ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY 0x00080000
5435 #define ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD 0x00100000
5436 #define ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING 0x00200000
5437 #define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT 0x00400000
5438 #define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA 0x00800000
5439 #define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE 0x01000000
5440 #define ZBEE_ZCL_FUNC_NOTI_FLAG_ENERGY_SCAN_PENDING 0x02000000
5441 #define ZBEE_ZCL_FUNC_NOTI_FLAG_CHANNEL_CHANGE_PENDING 0x04000000
5442 #define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2 0xF8000000
5444 /* Notification Flags 2 */
5445 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE 0x00000001
5446 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD 0x00000002
5447 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION 0x00000004
5448 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR 0x00000008
5449 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE 0x00000010
5450 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE 0x00000020
5451 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD 0x00000040
5452 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL 0x00000080
5453 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX 0x00000100
5454 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS 0x00000200
5455 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION 0x00000400
5456 #define ZBEE_ZCL_NOTI_FLAG_2_RESERVED 0x00000800
5457 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO 0x00001000
5458 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT 0x00002000
5459 #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS 0x00004000
5460 #define ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF 0x00008000
5461 #define ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE 0xFFFF0000
5463 /* Notification Flags 3 */
5464 #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR 0x00000001
5465 #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS 0x00000002
5466 #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS 0x00000004
5467 #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK 0x00000008
5468 #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY 0x00000010
5469 #define ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY 0x00000020
5470 #define ZBEE_ZCL_NOTI_FLAG_3_RESERVED 0xFFFFFFC0
5472 /* Notification Flags 4 */
5473 #define ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT 0x00000001
5474 #define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT 0x00000002
5475 #define ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP 0x00000004
5476 #define ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP 0x00000008
5477 #define ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT 0x00000010
5478 #define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE 0x00000020
5479 #define ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT 0x00000040
5480 #define ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG 0x00000080
5481 #define ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL 0x00000100
5482 #define ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG 0x00000200
5483 #define ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT 0x00000400
5484 #define ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP 0x00000800
5485 #define ZBEE_ZCL_NOTI_FLAG_4_RESERVED 0xFFFFF000
5487 /* Notification Flags 5 */
5488 #define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY 0x00000001
5489 #define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER 0x00000002
5490 #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE 0x00000004
5491 #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE 0x00000008
5492 #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE 0x00000010
5493 #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE 0x00000020
5494 #define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID 0x00000040
5495 #define ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER 0x00000080
5496 #define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN 0x00000100
5497 #define ZBEE_ZCL_NOTI_FLAG_5_RESERVED 0XFFFFFE00
5499 /*************************/
5500 /* Function Declarations */
5501 /*************************/
5502 void proto_register_zbee_zcl_met(void);
5503 void proto_reg_handoff_zbee_zcl_met(void);
5505 /* Attribute Dissector Helpers */
5506 static void dissect_zcl_met_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
5508 /* Command Dissector Helpers */
5509 static void dissect_zcl_met_get_profile (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5510 static void dissect_zcl_met_request_mirror_rsp (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5511 static void dissect_zcl_met_mirror_removed (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5512 static void dissect_zcl_met_request_fast_poll_mode (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5513 static void dissect_zcl_met_schedule_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5514 static void dissect_zcl_met_take_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5515 static void dissect_zcl_met_get_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5516 static void dissect_zcl_met_start_sampling (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5517 static void dissect_zcl_met_get_sampled_data (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5518 static void dissect_zcl_met_mirror_report_attribute_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5519 static void dissect_zcl_met_reset_load_limit_counter (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5520 static void dissect_zcl_met_change_supply (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5521 static void dissect_zcl_met_local_change_supply (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5522 static void dissect_zcl_met_set_supply_status (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5523 static void dissect_zcl_met_set_uncontrolled_flow_threshold (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5524 static void dissect_zcl_met_get_profile_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5525 static void dissect_zcl_met_request_fast_poll_mode_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5526 static void dissect_zcl_met_schedule_snapshot_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5527 static void dissect_zcl_met_take_snapshot_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5528 static void dissect_zcl_met_publish_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5529 static void dissect_zcl_met_get_sampled_data_rsp (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5530 static void dissect_zcl_met_configure_mirror (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5531 static void dissect_zcl_met_configure_notification_scheme (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5532 static void dissect_zcl_met_configure_notification_flags (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5533 static void dissect_zcl_met_get_notified_msg (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5534 static void dissect_zcl_met_supply_status_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5535 static void dissect_zcl_met_start_sampling_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
5536 static void dissect_zcl_met_notification_flags (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
, uint16_t noti_flags_number
);
5538 /*************************/
5539 /* Global Variables */
5540 /*************************/
5542 /* Initialize the protocol and registered fields */
5543 static int proto_zbee_zcl_met
;
5545 static int hf_zbee_zcl_met_srv_tx_cmd_id
;
5546 static int hf_zbee_zcl_met_srv_rx_cmd_id
;
5547 static int hf_zbee_zcl_met_attr_server_id
;
5548 static int hf_zbee_zcl_met_attr_client_id
;
5549 static int hf_zbee_zcl_met_attr_reporting_status
;
5550 static int hf_zbee_zcl_met_func_noti_flags
;
5551 static int hf_zbee_zcl_met_func_noti_flag_new_ota_firmware
;
5552 static int hf_zbee_zcl_met_func_noti_flag_cbke_update_request
;
5553 static int hf_zbee_zcl_met_func_noti_flag_time_sync
;
5554 static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han
;
5555 static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan
;
5556 static int hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set
;
5557 static int hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set
;
5558 static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster
;
5559 static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster
;
5560 static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster
;
5561 static int hf_zbee_zcl_met_func_noti_flag_network_key_active
;
5562 static int hf_zbee_zcl_met_func_noti_flag_display_message
;
5563 static int hf_zbee_zcl_met_func_noti_flag_cancel_all_messages
;
5564 static int hf_zbee_zcl_met_func_noti_flag_change_supply
;
5565 static int hf_zbee_zcl_met_func_noti_flag_local_change_supply
;
5566 static int hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold
;
5567 static int hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending
;
5568 static int hf_zbee_zcl_met_func_noti_flag_get_snapshot
;
5569 static int hf_zbee_zcl_met_func_noti_flag_get_sampled_data
;
5570 static int hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available
;
5571 static int hf_zbee_zcl_met_func_noti_flag_energy_scan_pending
;
5572 static int hf_zbee_zcl_met_func_noti_flag_channel_change_pending
;
5573 static int hf_zbee_zcl_met_func_noti_flag_reserved
;
5574 static int hf_zbee_zcl_met_noti_flags_2
;
5575 static int hf_zbee_zcl_met_noti_flag_2_publish_price
;
5576 static int hf_zbee_zcl_met_noti_flag_2_publish_block_period
;
5577 static int hf_zbee_zcl_met_noti_flag_2_publish_tariff_info
;
5578 static int hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor
;
5579 static int hf_zbee_zcl_met_noti_flag_2_publish_calorific_value
;
5580 static int hf_zbee_zcl_met_noti_flag_2_publish_co2_value
;
5581 static int hf_zbee_zcl_met_noti_flag_2_publish_billing_period
;
5582 static int hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill
;
5583 static int hf_zbee_zcl_met_noti_flag_2_publish_price_matrix
;
5584 static int hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds
;
5585 static int hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion
;
5586 static int hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info
;
5587 static int hf_zbee_zcl_met_noti_flag_2_publish_cpp_event
;
5588 static int hf_zbee_zcl_met_noti_flag_2_publish_tier_labels
;
5589 static int hf_zbee_zcl_met_noti_flag_2_cancel_tariff
;
5590 static int hf_zbee_zcl_met_noti_flag_2_reserved
;
5591 static int hf_zbee_zcl_met_noti_flags_3
;
5592 static int hf_zbee_zcl_met_noti_flag_3_publish_calendar
;
5593 static int hf_zbee_zcl_met_noti_flag_3_publish_special_days
;
5594 static int hf_zbee_zcl_met_noti_flag_3_publish_seasons
;
5595 static int hf_zbee_zcl_met_noti_flag_3_publish_week
;
5596 static int hf_zbee_zcl_met_noti_flag_3_publish_day
;
5597 static int hf_zbee_zcl_met_noti_flag_3_cancel_calendar
;
5598 static int hf_zbee_zcl_met_noti_flag_3_reserved
;
5599 static int hf_zbee_zcl_met_noti_flags_4
;
5600 static int hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit
;
5601 static int hf_zbee_zcl_met_noti_flag_4_change_debt
;
5602 static int hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup
;
5603 static int hf_zbee_zcl_met_noti_flag_4_consumer_top_up
;
5604 static int hf_zbee_zcl_met_noti_flag_4_credit_adjustment
;
5605 static int hf_zbee_zcl_met_noti_flag_4_change_payment_mode
;
5606 static int hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot
;
5607 static int hf_zbee_zcl_met_noti_flag_4_get_top_up_log
;
5608 static int hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level
;
5609 static int hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log
;
5610 static int hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit
;
5611 static int hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap
;
5612 static int hf_zbee_zcl_met_noti_flag_4_reserved
;
5613 static int hf_zbee_zcl_met_noti_flags_5
;
5614 static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy
;
5615 static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier
;
5616 static int hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response
;
5617 static int hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response
;
5618 static int hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response
;
5619 static int hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response
;
5620 static int hf_zbee_zcl_met_noti_flag_5_update_site_id
;
5621 static int hf_zbee_zcl_met_noti_flag_5_reset_battery_counter
;
5622 static int hf_zbee_zcl_met_noti_flag_5_update_cin
;
5623 static int hf_zbee_zcl_met_noti_flag_5_reserved
;
5624 static int hf_zbee_zcl_met_get_profile_interval_channel
;
5625 static int hf_zbee_zcl_met_get_profile_end_time
;
5626 static int hf_zbee_zcl_met_get_profile_number_of_periods
;
5627 static int hf_zbee_zcl_met_request_mirror_rsp_endpoint_id
;
5628 static int hf_zbee_zcl_met_mirror_removed_removed_endpoint_id
;
5629 static int hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period
;
5630 static int hf_zbee_zcl_met_request_fast_poll_mode_duration
;
5631 static int hf_zbee_zcl_met_schedule_snapshot_issuer_event_id
;
5632 static int hf_zbee_zcl_met_schedule_snapshot_command_index
;
5633 static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id
;
5634 static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time
;
5635 static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule
;
5636 static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type
;
5637 static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause
;
5638 static int hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands
;
5639 static int hf_zbee_zcl_met_take_snapshot_snapshot_cause
;
5640 static int hf_zbee_zcl_met_get_snapshot_start_time
;
5641 static int hf_zbee_zcl_met_get_snapshot_end_time
;
5642 static int hf_zbee_zcl_met_get_snapshot_snapshot_offset
;
5643 static int hf_zbee_zcl_met_get_snapshot_snapshot_cause
;
5644 static int hf_zbee_zcl_met_start_sampling_issuer_event_id
;
5645 static int hf_zbee_zcl_met_start_sampling_start_sampling_time
;
5646 static int hf_zbee_zcl_met_start_sampling_sample_type
;
5647 static int hf_zbee_zcl_met_start_sampling_sample_request_interval
;
5648 static int hf_zbee_zcl_met_start_sampling_max_number_of_samples
;
5649 static int hf_zbee_zcl_met_get_sampled_data_sample_id
;
5650 static int hf_zbee_zcl_met_get_sampled_data_sample_start_time
;
5651 static int hf_zbee_zcl_met_get_sampled_data_sample_type
;
5652 static int hf_zbee_zcl_met_get_sampled_data_number_of_samples
;
5653 static int hf_zbee_zcl_met_start_sampling_response_sample_id
;
5654 static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme
;
5655 static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n
;
5656 static int hf_zbee_zcl_met_reset_load_limit_counter_provider_id
;
5657 static int hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id
;
5658 static int hf_zbee_zcl_met_change_supply_provider_id
;
5659 static int hf_zbee_zcl_met_change_supply_issuer_event_id
;
5660 static int hf_zbee_zcl_met_change_supply_request_date_time
;
5661 static int hf_zbee_zcl_met_change_supply_implementation_date_time
;
5662 static int hf_zbee_zcl_met_change_supply_proposed_supply_status
;
5663 static int hf_zbee_zcl_met_change_supply_supply_control_bits
;
5664 static int hf_zbee_zcl_met_local_change_supply_proposed_supply_status
;
5665 static int hf_zbee_zcl_met_set_supply_status_issuer_event_id
;
5666 static int hf_zbee_zcl_met_set_supply_status_supply_tamper_state
;
5667 static int hf_zbee_zcl_met_set_supply_status_supply_depletion_state
;
5668 static int hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state
;
5669 static int hf_zbee_zcl_met_set_supply_status_load_limit_supply_state
;
5670 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id
;
5671 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id
;
5672 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold
;
5673 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure
;
5674 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier
;
5675 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor
;
5676 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period
;
5677 static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period
;
5678 static int hf_zbee_zcl_met_get_profile_response_end_time
;
5679 static int hf_zbee_zcl_met_get_profile_response_status
;
5680 static int hf_zbee_zcl_met_get_profile_response_profile_interval_period
;
5681 static int hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered
;
5682 static int hf_zbee_zcl_met_get_profile_response_intervals
;
5683 static int hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period
;
5684 static int hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time
;
5685 static int hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id
;
5686 static int hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id
;
5687 static int hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation
;
5688 static int hf_zbee_zcl_met_take_snapshot_response_snapshot_id
;
5689 static int hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation
;
5690 static int hf_zbee_zcl_met_publish_snapshot_snapshot_id
;
5691 static int hf_zbee_zcl_met_publish_snapshot_snapshot_time
;
5692 static int hf_zbee_zcl_met_publish_snapshot_snapshots_found
;
5693 static int hf_zbee_zcl_met_publish_snapshot_cmd_index
;
5694 static int hf_zbee_zcl_met_publish_snapshot_total_commands
;
5695 static int hf_zbee_zcl_met_publish_snapshot_snapshot_cause
;
5696 static int hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type
;
5697 static int hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload
;
5698 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_id
;
5699 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_start_time
;
5700 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_type
;
5701 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval
;
5702 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples
;
5703 static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples
;
5704 static int hf_zbee_zcl_met_configure_mirror_issuer_event_id
;
5705 static int hf_zbee_zcl_met_configure_mirror_reporting_interval
;
5706 static int hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting
;
5707 static int hf_zbee_zcl_met_configure_mirror_notification_scheme
;
5708 static int hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id
;
5709 static int hf_zbee_zcl_met_configure_notification_scheme_notification_scheme
;
5710 static int hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order
;
5711 static int hf_zbee_zcl_met_configure_notification_flags_issuer_event_id
;
5712 static int hf_zbee_zcl_met_configure_notification_flags_notification_scheme
;
5713 static int hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id
;
5714 static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_cluster_id
;
5715 static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_manufacturer_code
;
5716 static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_no_of_commands
;
5717 static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_command_identifier
;
5718 static int hf_zbee_zcl_met_get_notified_msg_notification_scheme
;
5719 static int hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id
;
5720 static int hf_zbee_zcl_met_get_notified_msg_notification_flags
;
5721 static int hf_zbee_zcl_met_supply_status_response_provider_id
;
5722 static int hf_zbee_zcl_met_supply_status_response_issuer_event_id
;
5723 static int hf_zbee_zcl_met_supply_status_response_implementation_date_time
;
5724 static int hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation
;
5725 static int hf_zbee_zcl_met_snapshot_cause_general
;
5726 static int hf_zbee_zcl_met_snapshot_cause_end_of_billing_period
;
5727 static int hf_zbee_zcl_met_snapshot_cause_end_of_block_period
;
5728 static int hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information
;
5729 static int hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix
;
5730 static int hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds
;
5731 static int hf_zbee_zcl_met_snapshot_cause_change_of_cv
;
5732 static int hf_zbee_zcl_met_snapshot_cause_change_of_cf
;
5733 static int hf_zbee_zcl_met_snapshot_cause_change_of_calendar
;
5734 static int hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing
;
5735 static int hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client
;
5736 static int hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period
;
5737 static int hf_zbee_zcl_met_snapshot_cause_change_of_tenancy
;
5738 static int hf_zbee_zcl_met_snapshot_cause_change_of_supplier
;
5739 static int hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode
;
5740 static int hf_zbee_zcl_met_snapshot_cause_debt_payment
;
5741 static int hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot
;
5742 static int hf_zbee_zcl_met_snapshot_cause_ota_firmware_download
;
5743 static int hf_zbee_zcl_met_snapshot_cause_reserved
;
5744 static int hf_zbee_zcl_met_snapshot_schedule_frequency
;
5745 static int hf_zbee_zcl_met_snapshot_schedule_frequency_type
;
5746 static int hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card
;
5748 static int* const zbee_zcl_met_snapshot_schedule_bits
[] = {
5749 &hf_zbee_zcl_met_snapshot_schedule_frequency
,
5750 &hf_zbee_zcl_met_snapshot_schedule_frequency_type
,
5751 &hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card
,
5755 static int* const zbee_zcl_met_func_noti_flags
[] = {
5756 &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware
,
5757 &hf_zbee_zcl_met_func_noti_flag_cbke_update_request
,
5758 &hf_zbee_zcl_met_func_noti_flag_time_sync
,
5759 &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han
,
5760 &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan
,
5761 &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set
,
5762 &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set
,
5763 &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster
,
5764 &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster
,
5765 &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster
,
5766 &hf_zbee_zcl_met_func_noti_flag_network_key_active
,
5767 &hf_zbee_zcl_met_func_noti_flag_display_message
,
5768 &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages
,
5769 &hf_zbee_zcl_met_func_noti_flag_change_supply
,
5770 &hf_zbee_zcl_met_func_noti_flag_local_change_supply
,
5771 &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold
,
5772 &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending
,
5773 &hf_zbee_zcl_met_func_noti_flag_get_snapshot
,
5774 &hf_zbee_zcl_met_func_noti_flag_get_sampled_data
,
5775 &hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available
,
5776 &hf_zbee_zcl_met_func_noti_flag_energy_scan_pending
,
5777 &hf_zbee_zcl_met_func_noti_flag_channel_change_pending
,
5778 &hf_zbee_zcl_met_func_noti_flag_reserved
,
5782 static int* const zbee_zcl_met_noti_flags_2
[] = {
5783 &hf_zbee_zcl_met_noti_flag_2_publish_price
,
5784 &hf_zbee_zcl_met_noti_flag_2_publish_block_period
,
5785 &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info
,
5786 &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor
,
5787 &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value
,
5788 &hf_zbee_zcl_met_noti_flag_2_publish_co2_value
,
5789 &hf_zbee_zcl_met_noti_flag_2_publish_billing_period
,
5790 &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill
,
5791 &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix
,
5792 &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds
,
5793 &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion
,
5794 &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info
,
5795 &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event
,
5796 &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels
,
5797 &hf_zbee_zcl_met_noti_flag_2_cancel_tariff
,
5798 &hf_zbee_zcl_met_noti_flag_2_reserved
,
5802 static int* const zbee_zcl_met_noti_flags_3
[] = {
5803 &hf_zbee_zcl_met_noti_flag_3_publish_calendar
,
5804 &hf_zbee_zcl_met_noti_flag_3_publish_special_days
,
5805 &hf_zbee_zcl_met_noti_flag_3_publish_seasons
,
5806 &hf_zbee_zcl_met_noti_flag_3_publish_week
,
5807 &hf_zbee_zcl_met_noti_flag_3_publish_day
,
5808 &hf_zbee_zcl_met_noti_flag_3_cancel_calendar
,
5809 &hf_zbee_zcl_met_noti_flag_3_reserved
,
5813 static int* const zbee_zcl_met_noti_flags_4
[] = {
5814 &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit
,
5815 &hf_zbee_zcl_met_noti_flag_4_change_debt
,
5816 &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup
,
5817 &hf_zbee_zcl_met_noti_flag_4_consumer_top_up
,
5818 &hf_zbee_zcl_met_noti_flag_4_credit_adjustment
,
5819 &hf_zbee_zcl_met_noti_flag_4_change_payment_mode
,
5820 &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot
,
5821 &hf_zbee_zcl_met_noti_flag_4_get_top_up_log
,
5822 &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level
,
5823 &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log
,
5824 &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit
,
5825 &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap
,
5826 &hf_zbee_zcl_met_noti_flag_4_reserved
,
5830 static int* const zbee_zcl_met_noti_flags_5
[] = {
5831 &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy
,
5832 &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier
,
5833 &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response
,
5834 &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response
,
5835 &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response
,
5836 &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response
,
5837 &hf_zbee_zcl_met_noti_flag_5_update_site_id
,
5838 &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter
,
5839 &hf_zbee_zcl_met_noti_flag_5_update_cin
,
5840 &hf_zbee_zcl_met_noti_flag_5_reserved
,
5844 static int* const zbee_zcl_met_snapshot_cause_flags
[] = {
5845 &hf_zbee_zcl_met_snapshot_cause_general
,
5846 &hf_zbee_zcl_met_snapshot_cause_end_of_billing_period
,
5847 &hf_zbee_zcl_met_snapshot_cause_end_of_block_period
,
5848 &hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information
,
5849 &hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix
,
5850 &hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds
,
5851 &hf_zbee_zcl_met_snapshot_cause_change_of_cv
,
5852 &hf_zbee_zcl_met_snapshot_cause_change_of_cf
,
5853 &hf_zbee_zcl_met_snapshot_cause_change_of_calendar
,
5854 &hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing
,
5855 &hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client
,
5856 &hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period
,
5857 &hf_zbee_zcl_met_snapshot_cause_change_of_tenancy
,
5858 &hf_zbee_zcl_met_snapshot_cause_change_of_supplier
,
5859 &hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode
,
5860 &hf_zbee_zcl_met_snapshot_cause_debt_payment
,
5861 &hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot
,
5862 &hf_zbee_zcl_met_snapshot_cause_ota_firmware_download
,
5863 &hf_zbee_zcl_met_snapshot_cause_reserved
,
5867 /* Initialize the subtree pointers */
5868 static int ett_zbee_zcl_met
;
5869 static int ett_zbee_zcl_met_func_noti_flags
;
5870 static int ett_zbee_zcl_met_noti_flags_2
;
5871 static int ett_zbee_zcl_met_noti_flags_3
;
5872 static int ett_zbee_zcl_met_noti_flags_4
;
5873 static int ett_zbee_zcl_met_noti_flags_5
;
5874 static int ett_zbee_zcl_met_snapshot_cause_flags
;
5875 static int ett_zbee_zcl_met_snapshot_schedule
;
5876 static int ett_zbee_zcl_met_schedule_snapshot_response_payload
;
5877 static int ett_zbee_zcl_met_schedule_snapshot_payload
;
5878 static int ett_zbee_zcl_met_mirror_noti_flag
;
5879 static int ett_zbee_zcl_met_bit_field_allocation
;
5881 /*************************/
5882 /* Function Bodies */
5883 /*************************/
5886 *This function is called by ZCL foundation dissector in order to decode
5888 *@param tree pointer to data tree Wireshark uses to display packet.
5889 *@param tvb pointer to buffer containing raw packet.
5890 *@param offset pointer to buffer offset
5891 *@param attr_id attribute identifier
5892 *@param data_type attribute data type
5893 *@param client_attr ZCL client
5896 dissect_zcl_met_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
5900 /* applies to all SE clusters */
5901 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET_CLNT
:
5902 proto_tree_add_item(tree
, hf_zbee_zcl_met_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
5906 case ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS
:
5907 proto_item_append_text(tree
, ", Functional Notification Flags");
5908 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_func_noti_flags
, ett_zbee_zcl_met_func_noti_flags
, zbee_zcl_met_func_noti_flags
, ENC_LITTLE_ENDIAN
);
5912 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2
:
5913 proto_item_append_text(tree
, ", Notification Flags 2");
5914 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_2
, ett_zbee_zcl_met_noti_flags_2
, zbee_zcl_met_noti_flags_2
, ENC_LITTLE_ENDIAN
);
5918 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3
:
5919 proto_item_append_text(tree
, ", Notification Flags 3");
5920 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_3
, ett_zbee_zcl_met_noti_flags_3
, zbee_zcl_met_noti_flags_3
, ENC_LITTLE_ENDIAN
);
5924 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4
:
5925 proto_item_append_text(tree
, ", Notification Flags 4");
5926 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_4
, ett_zbee_zcl_met_noti_flags_4
, zbee_zcl_met_noti_flags_4
, ENC_LITTLE_ENDIAN
);
5930 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5
:
5931 proto_item_append_text(tree
, ", Notification Flags 5");
5932 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_5
, ett_zbee_zcl_met_noti_flags_5
, zbee_zcl_met_noti_flags_5
, ENC_LITTLE_ENDIAN
);
5936 default: /* Catch all */
5937 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
5943 /* applies to all SE clusters */
5944 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET
:
5945 proto_tree_add_item(tree
, hf_zbee_zcl_met_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
5949 default: /* Catch all */
5950 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
5954 } /*dissect_zcl_met_attr_data*/
5957 *This function manages the Start Sampling Response payload.
5959 *@param tvb pointer to buffer containing raw packet.
5960 *@param tree pointer to data tree Wireshark uses to display packet.
5961 *@param offset pointer to offset from caller
5963 static void dissect_zcl_met_start_sampling_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
5966 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_response_sample_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
5968 } /*dissect_zcl_met_start_sampling_response*/
5971 *ZigBee ZCL Metering cluster dissector for wireshark.
5973 *@param tvb pointer to buffer containing raw packet.
5974 *@param pinfo pointer to packet information fields
5975 *@param tree pointer to data tree Wireshark uses to display packet.
5978 dissect_zbee_zcl_met(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
5980 proto_tree
*payload_tree
;
5981 zbee_zcl_packet
*zcl
;
5982 unsigned offset
= 0;
5986 /* Reject the packet if data is NULL */
5989 zcl
= (zbee_zcl_packet
*)data
;
5990 cmd_id
= zcl
->cmd_id
;
5992 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
5993 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
5994 /* Append the command name to the info column. */
5995 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
5996 val_to_str_const(cmd_id
, zbee_zcl_met_srv_rx_cmd_names
, "Unknown Command"),
5999 /* Add the command ID. */
6000 proto_tree_add_uint(tree
, hf_zbee_zcl_met_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
6002 /* Check is this command has a payload, than add the payload tree */
6003 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
6005 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_met
, NULL
, "Payload");
6007 /* Call the appropriate command dissector */
6010 case ZBEE_ZCL_CMD_ID_MET_GET_PROFILE
:
6011 dissect_zcl_met_get_profile(tvb
, payload_tree
, &offset
);
6014 case ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR_RSP
:
6015 dissect_zcl_met_request_mirror_rsp(tvb
, payload_tree
, &offset
);
6018 case ZBEE_ZCL_CMD_ID_MET_MIRROR_REMOVED
:
6019 dissect_zcl_met_mirror_removed(tvb
, payload_tree
, &offset
);
6022 case ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE
:
6023 dissect_zcl_met_request_fast_poll_mode(tvb
, payload_tree
, &offset
);
6026 case ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT
:
6027 dissect_zcl_met_schedule_snapshot(tvb
, payload_tree
, &offset
);
6030 case ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT
:
6031 dissect_zcl_met_take_snapshot(tvb
, payload_tree
, &offset
);
6034 case ZBEE_ZCL_CMD_ID_MET_GET_SNAPSHOT
:
6035 dissect_zcl_met_get_snapshot(tvb
, payload_tree
, &offset
);
6038 case ZBEE_ZCL_CMD_ID_MET_START_SAMPLING
:
6039 dissect_zcl_met_start_sampling(tvb
, payload_tree
, &offset
);
6042 case ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA
:
6043 dissect_zcl_met_get_sampled_data(tvb
, payload_tree
, &offset
);
6046 case ZBEE_ZCL_CMD_ID_MET_MIRROR_REPORT_ATTRIBUTE_RESPONSE
:
6047 dissect_zcl_met_mirror_report_attribute_response(tvb
, payload_tree
, &offset
);
6050 case ZBEE_ZCL_CMD_ID_MET_RESET_LOAD_LIMIT_COUNTER
:
6051 dissect_zcl_met_reset_load_limit_counter(tvb
, payload_tree
, &offset
);
6054 case ZBEE_ZCL_CMD_ID_MET_CHANGE_SUPPLY
:
6055 dissect_zcl_met_change_supply(tvb
, payload_tree
, &offset
);
6058 case ZBEE_ZCL_CMD_ID_MET_LOCAL_CHANGE_SUPPLY
:
6059 dissect_zcl_met_local_change_supply(tvb
, payload_tree
, &offset
);
6062 case ZBEE_ZCL_CMD_ID_MET_SET_SUPPLY_STATUS
:
6063 dissect_zcl_met_set_supply_status(tvb
, payload_tree
, &offset
);
6066 case ZBEE_ZCL_CMD_ID_MET_SET_UNCONTROLLED_FLOW_THRESHOLD
:
6067 dissect_zcl_met_set_uncontrolled_flow_threshold(tvb
, payload_tree
, &offset
);
6075 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
6076 /* Append the command name to the info column. */
6077 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
6078 val_to_str_const(cmd_id
, zbee_zcl_met_srv_tx_cmd_names
, "Unknown Command"),
6081 /* Add the command ID. */
6082 proto_tree_add_uint(tree
, hf_zbee_zcl_met_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
6084 /* Check is this command has a payload, than add the payload tree */
6085 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
6087 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_met
, NULL
, "Payload");
6089 /* Call the appropriate command dissector */
6092 case ZBEE_ZCL_CMD_ID_MET_GET_PROFILE_RESPONSE
:
6093 dissect_zcl_met_get_profile_response(tvb
, payload_tree
, &offset
);
6096 case ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR
:
6100 case ZBEE_ZCL_CMD_ID_MET_REMOVE_MIRROR
:
6104 case ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE_RESPONSE
:
6105 dissect_zcl_met_request_fast_poll_mode_response(tvb
, payload_tree
, &offset
);
6108 case ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT_RESPONSE
:
6109 dissect_zcl_met_schedule_snapshot_response(tvb
, payload_tree
, &offset
);
6112 case ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT_RESPONSE
:
6113 dissect_zcl_met_take_snapshot_response(tvb
, payload_tree
, &offset
);
6116 case ZBEE_ZCL_CMD_ID_MET_PUBLISH_SNAPSHOT
:
6117 dissect_zcl_met_publish_snapshot(tvb
, payload_tree
, &offset
);
6120 case ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA_RSP
:
6121 dissect_zcl_met_get_sampled_data_rsp(tvb
, payload_tree
, &offset
);
6124 case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_MIRROR
:
6125 dissect_zcl_met_configure_mirror(tvb
, payload_tree
, &offset
);
6128 case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_SCHEME
:
6129 dissect_zcl_met_configure_notification_scheme(tvb
, payload_tree
, &offset
);
6132 case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_FLAGS
:
6133 dissect_zcl_met_configure_notification_flags(tvb
, payload_tree
, &offset
);
6136 case ZBEE_ZCL_CMD_ID_MET_GET_NOTIFIED_MESSAGE
:
6137 dissect_zcl_met_get_notified_msg(tvb
, payload_tree
, &offset
);
6140 case ZBEE_ZCL_CMD_ID_MET_SUPPLY_STATUS_RESPONSE
:
6141 dissect_zcl_met_supply_status_response(tvb
, payload_tree
, &offset
);
6144 case ZBEE_ZCL_CMD_ID_MET_START_SAMPLING_RESPONSE
:
6145 dissect_zcl_met_start_sampling_response(tvb
, payload_tree
, &offset
);
6154 return tvb_captured_length(tvb
);
6155 } /*dissect_zbee_zcl_met*/
6158 *This function manages the Get Profile payload
6160 *@param tvb pointer to buffer containing raw packet.
6161 *@param tree pointer to data tree Wireshark uses to display packet.
6162 *@param offset pointer to offset from caller
6165 dissect_zcl_met_get_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6167 /* Interval Channel */
6168 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_interval_channel
, tvb
, *offset
, 1, ENC_NA
);
6172 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6175 /* Number of Periods */
6176 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_number_of_periods
, tvb
, *offset
, 1, ENC_NA
);
6178 } /*dissect_zcl_met_get_profile*/
6181 *This function manages the Request Mirror Response payload
6183 *@param tvb pointer to buffer containing raw packet.
6184 *@param tree pointer to data tree Wireshark uses to display packet.
6185 *@param offset pointer to offset from caller
6188 dissect_zcl_met_request_mirror_rsp(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6191 proto_tree_add_item(tree
, hf_zbee_zcl_met_request_mirror_rsp_endpoint_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6193 } /*dissect_zcl_met_request_mirror_rsp*/
6196 *This function manages the Mirror Removed payload
6198 *@param tvb pointer to buffer containing raw packet.
6199 *@param tree pointer to data tree Wireshark uses to display packet.
6200 *@param offset pointer to offset from caller
6203 dissect_zcl_met_mirror_removed(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6205 /* Removed EndPoint ID */
6206 proto_tree_add_item(tree
, hf_zbee_zcl_met_mirror_removed_removed_endpoint_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6208 } /*dissect_zcl_met_mirror_removed*/
6211 *This function manages the Request Fast Poll Mode payload
6213 *@param tvb pointer to buffer containing raw packet.
6214 *@param tree pointer to data tree Wireshark uses to display packet.
6215 *@param offset pointer to offset from caller
6218 dissect_zcl_met_request_fast_poll_mode(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6220 /* Fast Poll Update Period */
6221 proto_tree_add_item(tree
, hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period
, tvb
, *offset
, 1, ENC_NA
);
6225 proto_tree_add_item(tree
, hf_zbee_zcl_met_request_fast_poll_mode_duration
, tvb
, *offset
, 1, ENC_NA
);
6227 } /*dissect_zcl_met_request_fast_poll_mode*/
6230 *This function manages the Schedule Snapshot payload
6232 *@param tvb pointer to buffer containing raw packet.
6233 *@param tree pointer to data tree Wireshark uses to display packet.
6234 *@param offset pointer to offset from caller
6237 dissect_zcl_met_schedule_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6239 /* Issue Event ID */
6240 proto_tree_add_item(tree
, hf_zbee_zcl_met_schedule_snapshot_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6244 proto_tree_add_item(tree
, hf_zbee_zcl_met_schedule_snapshot_command_index
, tvb
, *offset
, 1, ENC_NA
);
6247 /* Total Number of Commands */
6248 proto_tree_add_item(tree
, hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
6251 /* Snapshot Schedule Payload */
6252 proto_tree
*payload_tree
;
6254 payload_tree
= proto_tree_add_subtree(tree
, tvb
, *offset
, 13,
6255 ett_zbee_zcl_met_schedule_snapshot_payload
, NULL
, "Snapshot Schedule Payload");
6257 /* Snapshot Schedule ID */
6258 proto_tree_add_item(payload_tree
, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id
,
6259 tvb
, *offset
, 1, ENC_NA
);
6262 /* Snapshot Start Time */
6263 proto_tree_add_item(tree
, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6266 /* Snapshot Schedule */
6267 proto_tree_add_bitmask(payload_tree
, tvb
, *offset
, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule
,
6268 ett_zbee_zcl_met_snapshot_schedule
,
6269 zbee_zcl_met_snapshot_schedule_bits
, ENC_LITTLE_ENDIAN
);
6272 /* Snapshot Payload Type */
6273 proto_tree_add_item(payload_tree
, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type
,
6274 tvb
, *offset
, 1, ENC_NA
);
6277 /* Snapshot Cause */
6278 proto_tree_add_bitmask(payload_tree
, tvb
, *offset
, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause
,
6279 ett_zbee_zcl_met_snapshot_cause_flags
, zbee_zcl_met_snapshot_cause_flags
, ENC_LITTLE_ENDIAN
);
6282 } /*dissect_zcl_met_schedule_snapshot*/
6285 *This function manages the Take Snapshot payload
6287 *@param tvb pointer to buffer containing raw packet.
6288 *@param tree pointer to data tree Wireshark uses to display packet.
6289 *@param offset pointer to offset from caller
6292 dissect_zcl_met_take_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6294 /* Snapshot Cause */
6295 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_take_snapshot_snapshot_cause
,
6296 ett_zbee_zcl_met_snapshot_cause_flags
, zbee_zcl_met_snapshot_cause_flags
, ENC_LITTLE_ENDIAN
);
6298 } /*dissect_zcl_met_take_snapshot*/
6301 *This function manages the Get Snapshot payload
6303 *@param tvb pointer to buffer containing raw packet.
6304 *@param tree pointer to data tree Wireshark uses to display packet.
6305 *@param offset pointer to offset from caller
6308 dissect_zcl_met_get_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6311 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_snapshot_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6314 if (gPREF_zbee_se_protocol_version
>= ZBEE_SE_VERSION_1_2
) {
6315 /* End Time - Introduced from ZCL version 1.2 */
6316 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_snapshot_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6320 /* Snapshot Offset */
6321 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_snapshot_snapshot_offset
, tvb
, *offset
, 1, ENC_NA
);
6324 /* Snapshot Cause */
6325 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_get_snapshot_snapshot_cause
,
6326 ett_zbee_zcl_met_snapshot_cause_flags
, zbee_zcl_met_snapshot_cause_flags
, ENC_LITTLE_ENDIAN
);
6328 } /*dissect_zcl_met_get_snapshot*/
6331 *This function manages the Start Sampling payload
6333 *@param tvb pointer to buffer containing raw packet.
6334 *@param tree pointer to data tree Wireshark uses to display packet.
6335 *@param offset pointer to offset from caller
6338 dissect_zcl_met_start_sampling(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6340 /* Issuer Event ID */
6341 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6344 /* Start Sampling Time */
6345 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_start_sampling_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6349 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_sample_type
, tvb
, *offset
, 1, ENC_NA
);
6352 /* Sample Request Interval */
6353 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_sample_request_interval
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6356 /* Max Number of Samples */
6357 proto_tree_add_item(tree
, hf_zbee_zcl_met_start_sampling_max_number_of_samples
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6359 } /*dissect_zcl_met_start_sampling*/
6362 *This function manages the Get Sampled Data payload
6364 *@param tvb pointer to buffer containing raw packet.
6365 *@param tree pointer to data tree Wireshark uses to display packet.
6366 *@param offset pointer to offset from caller
6369 dissect_zcl_met_get_sampled_data(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6372 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_sample_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6375 /* Sample Start Time */
6376 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_sample_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6380 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_sample_type
, tvb
, *offset
, 1, ENC_NA
);
6383 /* Number of Samples */
6384 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_number_of_samples
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6386 } /*dissect_zcl_met_get_sampled_data*/
6389 *This function manages the Mirror Report Attribute Response payload
6391 *@param tvb pointer to buffer containing raw packet.
6392 *@param tree pointer to data tree Wireshark uses to display packet.
6393 *@param offset pointer to offset from caller
6396 dissect_zcl_met_mirror_report_attribute_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6398 uint8_t notif_scheme_type
;
6399 int noti_flags_count
;
6401 notif_scheme_type
= tvb_get_uint8(tvb
, *offset
);
6402 /* Notification Scheme */
6403 proto_tree_add_item(tree
, hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme
, tvb
, *offset
, 1, ENC_NA
);
6406 switch(notif_scheme_type
) {
6407 case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A
:
6408 noti_flags_count
= 1;
6410 case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B
:
6411 noti_flags_count
= 5;
6414 noti_flags_count
= -1;
6417 if (noti_flags_count
> 0) {
6418 for (uint16_t noti_flags_number
= 0; noti_flags_number
< noti_flags_count
; noti_flags_number
++) {
6419 dissect_zcl_met_notification_flags(tvb
, tree
, offset
, noti_flags_number
);
6422 /* Notification Flag */
6423 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
6424 proto_tree
*notification_flag_tree
;
6425 notification_flag_tree
= proto_tree_add_subtree(tree
, tvb
, *offset
, 4, ett_zbee_zcl_met_mirror_noti_flag
, NULL
, "Notification Flags");
6426 proto_tree_add_item(notification_flag_tree
, hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n
,
6427 tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6431 } /*dissect_zcl_met_mirror_report_attribute_response*/
6434 *This function manages the Reset Load Limit Counter payload
6436 *@param tvb pointer to buffer containing raw packet.
6437 *@param tree pointer to data tree Wireshark uses to display packet.
6438 *@param offset pointer to offset from caller
6441 dissect_zcl_met_reset_load_limit_counter(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6444 proto_tree_add_item(tree
, hf_zbee_zcl_met_reset_load_limit_counter_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6447 /* Issuer Event ID */
6448 proto_tree_add_item(tree
, hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6450 } /*dissect_zcl_met_reset_load_limit_counter*/
6453 *This function manages the Change Supply payload
6455 *@param tvb pointer to buffer containing raw packet.
6456 *@param tree pointer to data tree Wireshark uses to display packet.
6457 *@param offset pointer to offset from caller
6460 dissect_zcl_met_change_supply(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6463 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6466 /* Issuer Event ID */
6467 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6470 /* Request Date/Time */
6471 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_request_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6474 /* Implementation Date/Time */
6475 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_implementation_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6478 /* Proposed Supple Status */
6479 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_proposed_supply_status
, tvb
, *offset
, 1, ENC_NA
);
6482 /* Supple Control Bits */
6483 proto_tree_add_item(tree
, hf_zbee_zcl_met_change_supply_supply_control_bits
, tvb
, *offset
, 1, ENC_NA
);
6485 } /*dissect_zcl_met_change_supply*/
6488 *This function manages the Local Change Supply payload
6490 *@param tvb pointer to buffer containing raw packet.
6491 *@param tree pointer to data tree Wireshark uses to display packet.
6492 *@param offset pointer to offset from caller
6495 dissect_zcl_met_local_change_supply(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6497 /* Proposed Supply Status */
6498 proto_tree_add_item(tree
, hf_zbee_zcl_met_local_change_supply_proposed_supply_status
, tvb
, *offset
, 1, ENC_NA
);
6500 } /*dissect_zcl_met_local_change_supply*/
6503 *This function manages the Set Supply Status payload
6505 *@param tvb pointer to buffer containing raw packet.
6506 *@param tree pointer to data tree Wireshark uses to display packet.
6507 *@param offset pointer to offset from caller
6510 dissect_zcl_met_set_supply_status(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6512 /* Issuer Event ID */
6513 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_supply_status_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6516 /* Supply Tamper State */
6517 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_supply_status_supply_tamper_state
, tvb
, *offset
, 1, ENC_NA
);
6520 /* Supply Depletion State */
6521 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_supply_status_supply_depletion_state
, tvb
, *offset
, 1, ENC_NA
);
6524 /* Supply Uncontrolled Flow State */
6525 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state
, tvb
, *offset
, 1, ENC_NA
);
6528 /* Load Limit Supply State */
6529 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_supply_status_load_limit_supply_state
, tvb
, *offset
, 1, ENC_NA
);
6531 } /*dissect_zcl_met_set_supply_status*/
6534 *This function manages the Set Uncontrolled Flow Threshold payload
6536 *@param tvb pointer to buffer containing raw packet.
6537 *@param tree pointer to data tree Wireshark uses to display packet.
6538 *@param offset pointer to offset from caller
6541 dissect_zcl_met_set_uncontrolled_flow_threshold(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6544 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6547 /* Issuer Event ID */
6548 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6551 /* Uncontrolled Flow Threshold */
6552 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6555 /* Unit of Measure */
6556 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure
, tvb
, *offset
, 1, ENC_NA
);
6560 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6564 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6567 /* Stabilisation Period */
6568 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period
, tvb
, *offset
, 1, ENC_NA
);
6571 /* Measurement Period */
6572 proto_tree_add_item(tree
, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6574 } /*dissect_zcl_met_set_uncontrolled_flow_threshold*/
6577 *This function manages the Get Profile Response payload
6579 *@param tvb pointer to buffer containing raw packet.
6580 *@param tree pointer to data tree Wireshark uses to display packet.
6581 *@param offset pointer to offset from caller
6584 dissect_zcl_met_get_profile_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6588 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_response_end_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6592 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_response_status
, tvb
, *offset
, 1, ENC_NA
);
6595 /* Profile Interval Period */
6596 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_response_profile_interval_period
, tvb
, *offset
, 1, ENC_NA
);
6599 /* Number of Periods Delivered */
6600 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered
, tvb
, *offset
, 1, ENC_NA
);
6604 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
6605 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_profile_response_intervals
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
6608 } /*dissect_zcl_met_get_profile_response*/
6611 *This function manages the Request Fast Poll Mode Response payload
6613 *@param tvb pointer to buffer containing raw packet.
6614 *@param tree pointer to data tree Wireshark uses to display packet.
6615 *@param offset pointer to offset from caller
6618 dissect_zcl_met_request_fast_poll_mode_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6620 uint32_t end_time_utc
;
6622 const uint8_t *end_time_string
;
6624 /* Applied Update Period */
6625 proto_tree_add_item(tree
, hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period
, tvb
, *offset
, 1, ENC_NA
);
6628 /* Fast Poll End Time */
6629 end_time_utc
= (uint32_t)tvb_get_letohl(tvb
, *offset
);
6630 end_time
.secs
= end_time_utc
+ EPOCH_DELTA_2000_01_01_00_00_00_UTC
;
6632 end_time_string
= (const uint8_t *)abs_time_to_str(wmem_packet_scope(), &end_time
, ABSOLUTE_TIME_UTC
, true);
6633 proto_tree_add_time_format(tree
, hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time
, tvb
, *offset
, 4, &end_time
,
6634 "Fast Poll Mode End Time: %s (%u)", end_time_string
, end_time_utc
);
6636 } /*dissect_zcl_met_request_fast_poll_mode_response*/
6639 *This function manages the Schedule Snapshot Response payload
6641 *@param tvb pointer to buffer containing raw packet.
6642 *@param tree pointer to data tree Wireshark uses to display packet.
6643 *@param offset pointer to offset from caller
6646 dissect_zcl_met_schedule_snapshot_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6648 /* Issuer Event ID */
6649 proto_tree_add_item(tree
, hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6652 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
6653 proto_tree
*payload_tree
;
6655 payload_tree
= proto_tree_add_subtree(tree
, tvb
, *offset
, 2,
6656 ett_zbee_zcl_met_schedule_snapshot_response_payload
, NULL
, "Snapshot Response Payload");
6658 /* Snapshot Schedule ID */
6659 proto_tree_add_item(payload_tree
, hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id
, tvb
, *offset
, 1, ENC_NA
);
6662 /* Snapshot Schedule Confirmation */
6663 proto_tree_add_item(payload_tree
, hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation
, tvb
, *offset
, 1, ENC_NA
);
6666 } /*dissect_zcl_met_schedule_snapshot_response*/
6669 *This function manages the Take Snapshot Response payload
6671 *@param tvb pointer to buffer containing raw packet.
6672 *@param tree pointer to data tree Wireshark uses to display packet.
6673 *@param offset pointer to offset from caller
6676 dissect_zcl_met_take_snapshot_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6679 proto_tree_add_item(tree
, hf_zbee_zcl_met_take_snapshot_response_snapshot_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6682 /* Snapshot Confirmation */
6683 proto_tree_add_item(tree
, hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation
, tvb
, *offset
, 1, ENC_NA
);
6685 } /*dissect_zcl_met_take_snapshot_response*/
6688 *This function manages the Publish Snapshot payload
6690 *@param tvb pointer to buffer containing raw packet.
6691 *@param tree pointer to data tree Wireshark uses to display packet.
6692 *@param offset pointer to offset from caller
6695 dissect_zcl_met_publish_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6700 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_snapshot_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6704 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_snapshot_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6707 /* Total Snapshots Found */
6708 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_snapshots_found
, tvb
, *offset
, 1, ENC_NA
);
6712 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_cmd_index
, tvb
, *offset
, 1, ENC_NA
);
6715 /* Total Number of Commands */
6716 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_total_commands
, tvb
, *offset
, 1, ENC_NA
);
6719 /* Snapshot Cause */
6720 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_publish_snapshot_snapshot_cause
,
6721 ett_zbee_zcl_met_snapshot_cause_flags
, zbee_zcl_met_snapshot_cause_flags
, ENC_LITTLE_ENDIAN
);
6724 /* Snapshot Payload Type */
6725 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type
, tvb
, *offset
, 1, ENC_NA
);
6728 /* Snapshot Sub-Payload */
6729 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
6730 proto_tree_add_item(tree
, hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload
, tvb
, *offset
, rem_len
, ENC_NA
);
6732 } /*dissect_zcl_met_publish_snapshot*/
6735 *This function manages the Get Sampled Data Response payload
6737 *@param tvb pointer to buffer containing raw packet.
6738 *@param tree pointer to data tree Wireshark uses to display packet.
6739 *@param offset pointer to offset from caller
6742 dissect_zcl_met_get_sampled_data_rsp(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6747 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6750 /* Sample Start Time */
6751 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6755 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_type
, tvb
, *offset
, 1, ENC_NA
);
6758 /* Sample Request Interval */
6759 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6762 /* Number of Samples */
6763 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6767 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
6768 while (rem_len
>= 3) {
6769 uint32_t val
= tvb_get_uint24(tvb
, *offset
, ENC_LITTLE_ENDIAN
);
6770 proto_tree_add_uint(tree
, hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples
, tvb
, *offset
, 3, val
);
6774 } /*dissect_zcl_met_get_sampled_data_rsp*/
6777 *This function manages the Configure Mirror payload
6779 *@param tvb pointer to buffer containing raw packet.
6780 *@param tree pointer to data tree Wireshark uses to display packet.
6781 *@param offset pointer to offset from caller
6784 dissect_zcl_met_configure_mirror(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6786 /* Issuer Event ID */
6787 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_mirror_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6790 /* Reporting Interval */
6791 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_mirror_reporting_interval
, tvb
, *offset
, 3, ENC_LITTLE_ENDIAN
);
6794 /* Mirror Notification Reporting */
6795 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting
, tvb
, *offset
, 1, ENC_NA
);
6798 /* Notification Scheme */
6799 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_mirror_notification_scheme
, tvb
, *offset
, 1, ENC_NA
);
6801 } /*dissect_zcl_met_configure_mirror*/
6804 *This function manages the Configure Notification Scheme payload
6806 *@param tvb pointer to buffer containing raw packet.
6807 *@param tree pointer to data tree Wireshark uses to display packet.
6808 *@param offset pointer to offset from caller
6811 dissect_zcl_met_configure_notification_scheme(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6813 /* Issuer Event ID */
6814 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6817 /* Notification Scheme */
6818 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_scheme_notification_scheme
, tvb
, *offset
, 1, ENC_NA
);
6821 /* Notification Flag Order */
6822 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6824 } /*dissect_zcl_met_configure_notification_scheme*/
6827 *This function manages the Configure Notification Flags payload
6829 *@param tvb pointer to buffer containing raw packet.
6830 *@param tree pointer to data tree Wireshark uses to display packet.
6831 *@param offset pointer to offset from caller
6834 dissect_zcl_met_configure_notification_flags(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6836 proto_tree
*bit_field_allocation_tree
;
6839 /* Issuer Event ID */
6840 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_flags_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6843 /* Notification Scheme */
6844 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_flags_notification_scheme
, tvb
, *offset
, 1, ENC_NA
);
6847 /* Notification Attribute ID */
6848 proto_tree_add_item(tree
, hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6851 bit_field_allocation_tree
= proto_tree_add_subtree(tree
, tvb
, *offset
, -1, ett_zbee_zcl_met_bit_field_allocation
, NULL
, "Bit Field Allocation");
6854 proto_tree_add_item(bit_field_allocation_tree
, hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_cluster_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6857 /* Manufacturer Code */
6858 proto_tree_add_item(bit_field_allocation_tree
, hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_manufacturer_code
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6861 /* No. of Commands */
6862 proto_tree_add_item(bit_field_allocation_tree
, hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_no_of_commands
, tvb
, *offset
, 1, ENC_NA
);
6865 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
6866 while (rem_len
>= 1) {
6867 /* Command Identifier */
6868 proto_tree_add_item(bit_field_allocation_tree
, hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_command_identifier
, tvb
, *offset
, 1, ENC_NA
);
6872 } /*dissect_zcl_met_configure_notification_flags*/
6875 dissect_zcl_met_notification_flags(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
, uint16_t noti_flags_number
)
6877 /* Notification Flags #N */
6878 switch (noti_flags_number
) {
6879 case ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS
:
6880 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_func_noti_flags
, ett_zbee_zcl_met_func_noti_flags
, zbee_zcl_met_func_noti_flags
, ENC_LITTLE_ENDIAN
);
6882 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2
:
6883 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_2
, ett_zbee_zcl_met_noti_flags_2
, zbee_zcl_met_noti_flags_2
, ENC_LITTLE_ENDIAN
);
6885 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3
:
6886 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_3
, ett_zbee_zcl_met_noti_flags_3
, zbee_zcl_met_noti_flags_3
, ENC_LITTLE_ENDIAN
);
6888 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4
:
6889 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_4
, ett_zbee_zcl_met_noti_flags_4
, zbee_zcl_met_noti_flags_4
, ENC_LITTLE_ENDIAN
);
6891 case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5
:
6892 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_met_noti_flags_5
, ett_zbee_zcl_met_noti_flags_5
, zbee_zcl_met_noti_flags_5
, ENC_LITTLE_ENDIAN
);
6895 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_notified_msg_notification_flags
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6903 *This function manages the Get Notified Message payload
6905 *@param tvb pointer to buffer containing raw packet.
6906 *@param tree pointer to data tree Wireshark uses to display packet.
6907 *@param offset pointer to offset from caller
6910 dissect_zcl_met_get_notified_msg(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6912 uint16_t noti_flags_number
;
6914 /* Notification Scheme */
6915 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_notified_msg_notification_scheme
, tvb
, *offset
, 1, ENC_NA
);
6918 /* Notification Flag attribute ID */
6919 noti_flags_number
= tvb_get_uint16(tvb
, *offset
, ENC_LITTLE_ENDIAN
);
6920 proto_tree_add_item(tree
, hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
6923 dissect_zcl_met_notification_flags(tvb
, tree
, offset
, noti_flags_number
);
6924 } /*dissect_zcl_met_get_notified_msg*/
6927 *This function manages the Supply Status Response payload
6929 *@param tvb pointer to buffer containing raw packet.
6930 *@param tree pointer to data tree Wireshark uses to display packet.
6931 *@param offset pointer to offset from caller
6934 dissect_zcl_met_supply_status_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
6937 proto_tree_add_item(tree
, hf_zbee_zcl_met_supply_status_response_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6940 /* Issuer Event ID */
6941 proto_tree_add_item(tree
, hf_zbee_zcl_met_supply_status_response_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
6944 /* Implementation Date/Time */
6945 proto_tree_add_item(tree
, hf_zbee_zcl_met_supply_status_response_implementation_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
6948 /* Supply Status After Implementation */
6949 proto_tree_add_item(tree
, hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation
, tvb
, *offset
, 1, ENC_NA
);
6951 } /*dissect_zcl_met_supply_status_response*/
6954 *This function registers the ZCL Metering dissector
6958 proto_register_zbee_zcl_met(void)
6960 static hf_register_info hf
[] = {
6962 { &hf_zbee_zcl_met_attr_server_id
,
6963 { "Attribute", "zbee_zcl_se.met.attr_id", FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &zbee_zcl_met_attr_server_names_ext
,
6964 0x0, NULL
, HFILL
} },
6966 { &hf_zbee_zcl_met_attr_client_id
,
6967 { "Attribute", "zbee_zcl_se.met.attr_client_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_met_attr_client_names
),
6968 0x0, NULL
, HFILL
} },
6970 { &hf_zbee_zcl_met_attr_reporting_status
, /* common to all SE clusters */
6971 { "Attribute Reporting Status", "zbee_zcl_se.met.attr.attr_reporting_status",
6972 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
6974 /* Functional Notification Flags */
6975 { &hf_zbee_zcl_met_func_noti_flags
,
6976 { "Functional Notification Flags", "zbee_zcl_se.met.attr.func_noti_flag", FT_UINT32
, BASE_HEX
, NULL
,
6977 0x00, NULL
, HFILL
} },
6979 { &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware
,
6980 { "New OTA Firmware", "zbee_zcl_se.met.attr.func_noti_flag.new_ota_firmware", FT_BOOLEAN
, 32, NULL
,
6981 ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE
, NULL
, HFILL
} },
6983 { &hf_zbee_zcl_met_func_noti_flag_cbke_update_request
,
6984 { "CBKE Update Request", "zbee_zcl_se.met.attr.func_noti_flag.cbke_update_request", FT_BOOLEAN
, 32, NULL
,
6985 ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED
, NULL
, HFILL
} },
6987 { &hf_zbee_zcl_met_func_noti_flag_time_sync
,
6988 { "Time Sync", "zbee_zcl_se.met.attr.func_noti_flag.time_sync", FT_BOOLEAN
, 32, NULL
,
6989 ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC
, NULL
, HFILL
} },
6991 { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han
,
6992 { "Stay Awake Request HAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_han", FT_BOOLEAN
, 32, NULL
,
6993 ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN
, NULL
, HFILL
} },
6995 { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan
,
6996 { "Stay Awake Request WAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_wan", FT_BOOLEAN
, 32, NULL
,
6997 ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN
, NULL
, HFILL
} },
6999 { &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set
,
7000 { "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
,
7001 ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET
, NULL
, HFILL
} },
7003 { &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set
,
7004 { "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
,
7005 ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET
, NULL
, HFILL
} },
7007 { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster
,
7008 { "Push All Static Data - Basic Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_basic_cluster", FT_BOOLEAN
, 32, NULL
,
7009 ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER
, NULL
, HFILL
} },
7011 { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster
,
7012 { "Push All Static Data - Metering Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_metering_cluster", FT_BOOLEAN
, 32, NULL
,
7013 ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER
, NULL
, HFILL
} },
7015 { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster
,
7016 { "Push All Static Data - Prepayment Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_prepayment_cluster", FT_BOOLEAN
, 32, NULL
,
7017 ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER
, NULL
, HFILL
} },
7019 { &hf_zbee_zcl_met_func_noti_flag_network_key_active
,
7020 { "Network Key Active", "zbee_zcl_se.met.attr.func_noti_flag.network_key_active", FT_BOOLEAN
, 32, NULL
,
7021 ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE
, NULL
, HFILL
} },
7023 { &hf_zbee_zcl_met_func_noti_flag_display_message
,
7024 { "Display Message", "zbee_zcl_se.met.attr.func_noti_flag.display_message", FT_BOOLEAN
, 32, NULL
,
7025 ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE
, NULL
, HFILL
} },
7027 { &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages
,
7028 { "Cancel All Messages", "zbee_zcl_se.met.attr.func_noti_flag.cancel_all_messages", FT_BOOLEAN
, 32, NULL
,
7029 ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES
, NULL
, HFILL
} },
7031 { &hf_zbee_zcl_met_func_noti_flag_change_supply
,
7032 { "Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.change_supply", FT_BOOLEAN
, 32, NULL
,
7033 ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY
, NULL
, HFILL
} },
7035 { &hf_zbee_zcl_met_func_noti_flag_local_change_supply
,
7036 { "Local Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.local_change_supply", FT_BOOLEAN
, 32, NULL
,
7037 ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY
, NULL
, HFILL
} },
7039 { &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold
,
7040 { "Set Uncontrolled Flow Threshold", "zbee_zcl_se.met.attr.func_noti_flag.set_uncontrolled_flow_threshold", FT_BOOLEAN
, 32, NULL
,
7041 ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD
, NULL
, HFILL
} },
7043 { &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending
,
7044 { "Tunnel Message Pending", "zbee_zcl_se.met.attr.func_noti_flag.tunnel_message_pending", FT_BOOLEAN
, 32, NULL
,
7045 ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING
, NULL
, HFILL
} },
7047 { &hf_zbee_zcl_met_func_noti_flag_get_snapshot
,
7048 { "Get Snapshot", "zbee_zcl_se.met.attr.func_noti_flag.get_snapshot", FT_BOOLEAN
, 32, NULL
,
7049 ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT
, NULL
, HFILL
} },
7051 { &hf_zbee_zcl_met_func_noti_flag_get_sampled_data
,
7052 { "Get Sampled Data", "zbee_zcl_se.met.attr.func_noti_flag.get_sampled_data", FT_BOOLEAN
, 32, NULL
,
7053 ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA
, NULL
, HFILL
} },
7055 { &hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available
,
7056 { "New Sub-GHz Channel Masks Available", "zbee_zcl_se.met.attr.func_noti_flag.new_sub_ghz_channel_masks_available", FT_BOOLEAN
, 32, NULL
,
7057 ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE
, NULL
, HFILL
} },
7059 { &hf_zbee_zcl_met_func_noti_flag_energy_scan_pending
,
7060 { "Energy Scan Pending", "zbee_zcl_se.met.attr.func_noti_flag.energy_scan_pending", FT_BOOLEAN
, 32, NULL
,
7061 ZBEE_ZCL_FUNC_NOTI_FLAG_ENERGY_SCAN_PENDING
, NULL
, HFILL
} },
7063 { &hf_zbee_zcl_met_func_noti_flag_channel_change_pending
,
7064 { "Channel Change Pending", "zbee_zcl_se.met.attr.func_noti_flag.channel_change_pending", FT_BOOLEAN
, 32, NULL
,
7065 ZBEE_ZCL_FUNC_NOTI_FLAG_CHANNEL_CHANGE_PENDING
, NULL
, HFILL
} },
7067 { &hf_zbee_zcl_met_func_noti_flag_reserved
,
7068 { "Reserved", "zbee_zcl_se.met.attr.func_noti_flag.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7069 ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1
| ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2
, NULL
, HFILL
} },
7071 /* Notification Flags 2 */
7072 { &hf_zbee_zcl_met_noti_flags_2
,
7073 { "Notification Flags 2", "zbee_zcl_se.met.attr.noti_flag_2", FT_UINT32
, BASE_HEX
, NULL
,
7074 0x00, NULL
, HFILL
} },
7076 { &hf_zbee_zcl_met_noti_flag_2_publish_price
,
7077 { "Publish Price", "zbee_zcl_se.met.attr.noti_flag_2.publish_price", FT_BOOLEAN
, 32, NULL
,
7078 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE
, NULL
, HFILL
} },
7080 { &hf_zbee_zcl_met_noti_flag_2_publish_block_period
,
7081 { "Publish Block Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_period", FT_BOOLEAN
, 32, NULL
,
7082 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD
, NULL
, HFILL
} },
7084 { &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info
,
7085 { "Publish Tariff Information", "zbee_zcl_se.met.attr.noti_flag_2.publish_tariff_info", FT_BOOLEAN
, 32, NULL
,
7086 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION
, NULL
, HFILL
} },
7088 { &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor
,
7089 { "Publish Conversion Factor", "zbee_zcl_se.met.attr.noti_flag_2.publish_conversion_factor", FT_BOOLEAN
, 32, NULL
,
7090 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR
, NULL
, HFILL
} },
7092 { &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value
,
7093 { "Publish Calorific Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_calorific_value", FT_BOOLEAN
, 32, NULL
,
7094 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE
, NULL
, HFILL
} },
7096 { &hf_zbee_zcl_met_noti_flag_2_publish_co2_value
,
7097 { "Publish CO2 Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_co2_value", FT_BOOLEAN
, 32, NULL
,
7098 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE
, NULL
, HFILL
} },
7100 { &hf_zbee_zcl_met_noti_flag_2_publish_billing_period
,
7101 { "Publish Billing Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_billing_period", FT_BOOLEAN
, 32, NULL
,
7102 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD
, NULL
, HFILL
} },
7104 { &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill
,
7105 { "Publish Consolidated Bill", "zbee_zcl_se.met.attr.noti_flag_2.publish_consolidated_bill", FT_BOOLEAN
, 32, NULL
,
7106 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL
, NULL
, HFILL
} },
7108 { &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix
,
7109 { "Publish Price Matrix", "zbee_zcl_se.met.attr.noti_flag_2.publish_price_matrix", FT_BOOLEAN
, 32, NULL
,
7110 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX
, NULL
, HFILL
} },
7112 { &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds
,
7113 { "Publish Block Thresholds", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_thresholds", FT_BOOLEAN
, 32, NULL
,
7114 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS
, NULL
, HFILL
} },
7116 { &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion
,
7117 { "Publish Currency Conversion", "zbee_zcl_se.met.attr.noti_flag_2.publish_currency_conversion", FT_BOOLEAN
, 32, NULL
,
7118 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION
, NULL
, HFILL
} },
7120 { &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info
,
7121 { "Publish Credit Payment Info", "zbee_zcl_se.met.attr.noti_flag_2.publish_credit_payment_info", FT_BOOLEAN
, 32, NULL
,
7122 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO
, NULL
, HFILL
} },
7124 { &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event
,
7125 { "Publish CPP Event", "zbee_zcl_se.met.attr.noti_flag_2.publish_cpp_event", FT_BOOLEAN
, 32, NULL
,
7126 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT
, NULL
, HFILL
} },
7128 { &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels
,
7129 { "Publish Tier Labels", "zbee_zcl_se.met.attr.noti_flag_2.publish_tier_labels", FT_BOOLEAN
, 32, NULL
,
7130 ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS
, NULL
, HFILL
} },
7132 { &hf_zbee_zcl_met_noti_flag_2_cancel_tariff
,
7133 { "Cancel Tariff", "zbee_zcl_se.met.attr.noti_flag_2.cancel_tariff", FT_BOOLEAN
, 32, NULL
,
7134 ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF
, NULL
, HFILL
} },
7136 { &hf_zbee_zcl_met_noti_flag_2_reserved
,
7137 { "Reserved", "zbee_zcl_se.met.attr.noti_flag_2.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7138 ZBEE_ZCL_NOTI_FLAG_2_RESERVED
| ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE
, NULL
, HFILL
} },
7140 /* Notification Flags 3 */
7141 { &hf_zbee_zcl_met_noti_flags_3
,
7142 { "Notification Flags 3", "zbee_zcl_se.met.attr.noti_flag_3", FT_UINT32
, BASE_HEX
, NULL
,
7143 0x00, NULL
, HFILL
} },
7145 { &hf_zbee_zcl_met_noti_flag_3_publish_calendar
,
7146 { "Publish Calendar", "zbee_zcl_se.met.attr.noti_flag_3.publish_calendar", FT_BOOLEAN
, 32, NULL
,
7147 ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR
, NULL
, HFILL
} },
7149 { &hf_zbee_zcl_met_noti_flag_3_publish_special_days
,
7150 { "Publish Special Days", "zbee_zcl_se.met.attr.noti_flag_3.publish_special_days", FT_BOOLEAN
, 32, NULL
,
7151 ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS
, NULL
, HFILL
} },
7153 { &hf_zbee_zcl_met_noti_flag_3_publish_seasons
,
7154 { "Publish Seasons", "zbee_zcl_se.met.attr.noti_flag_3.publish_seasons", FT_BOOLEAN
, 32, NULL
,
7155 ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS
, NULL
, HFILL
} },
7157 { &hf_zbee_zcl_met_noti_flag_3_publish_week
,
7158 { "Publish Week", "zbee_zcl_se.met.attr.noti_flag_3.publish_week", FT_BOOLEAN
, 32, NULL
,
7159 ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK
, NULL
, HFILL
} },
7161 { &hf_zbee_zcl_met_noti_flag_3_publish_day
,
7162 { "Publish Day", "zbee_zcl_se.met.attr.noti_flag_3.publish_day", FT_BOOLEAN
, 32, NULL
,
7163 ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY
, NULL
, HFILL
} },
7165 { &hf_zbee_zcl_met_noti_flag_3_cancel_calendar
,
7166 { "Cancel Calendar", "zbee_zcl_se.met.attr.noti_flag_3.cancel_calendar", FT_BOOLEAN
, 32, NULL
,
7167 ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY
, NULL
, HFILL
} },
7169 { &hf_zbee_zcl_met_noti_flag_3_reserved
,
7170 { "Reserved", "zbee_zcl_se.met.attr.noti_flag_3.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7171 ZBEE_ZCL_NOTI_FLAG_3_RESERVED
, NULL
, HFILL
} },
7173 /* Notification Flags 4 */
7174 { &hf_zbee_zcl_met_noti_flags_4
,
7175 { "Notification Flags 4", "zbee_zcl_se.met.attr.noti_flag_4", FT_UINT32
, BASE_HEX
, NULL
,
7176 0x00, NULL
, HFILL
} },
7178 { &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit
,
7179 { "Select Available Emergency Credit", "zbee_zcl_se.met.attr.noti_flag_4.select_available_emergency_credit", FT_BOOLEAN
, 32, NULL
,
7180 ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT
, NULL
, HFILL
} },
7182 { &hf_zbee_zcl_met_noti_flag_4_change_debt
,
7183 { "Change Debt", "zbee_zcl_se.met.attr.noti_flag_4.change_debt", FT_BOOLEAN
, 32, NULL
,
7184 ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT
, NULL
, HFILL
} },
7186 { &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup
,
7187 { "Emergency Credit Setup", "zbee_zcl_se.met.attr.noti_flag_4.emergency_credit_setup", FT_BOOLEAN
, 32, NULL
,
7188 ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP
, NULL
, HFILL
} },
7190 { &hf_zbee_zcl_met_noti_flag_4_consumer_top_up
,
7191 { "Consumer Top Up", "zbee_zcl_se.met.attr.noti_flag_4.consumer_top_up", FT_BOOLEAN
, 32, NULL
,
7192 ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP
, NULL
, HFILL
} },
7194 { &hf_zbee_zcl_met_noti_flag_4_credit_adjustment
,
7195 { "Credit Adjustment", "zbee_zcl_se.met.attr.noti_flag_4.credit_adjustment", FT_BOOLEAN
, 32, NULL
,
7196 ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT
, NULL
, HFILL
} },
7198 { &hf_zbee_zcl_met_noti_flag_4_change_payment_mode
,
7199 { "Change Payment Mode", "zbee_zcl_se.met.attr.noti_flag_4.change_payment_mode", FT_BOOLEAN
, 32, NULL
,
7200 ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE
, NULL
, HFILL
} },
7202 { &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot
,
7203 { "Get Prepay Snapshot", "zbee_zcl_se.met.attr.noti_flag_4.get_prepay_snapshot", FT_BOOLEAN
, 32, NULL
,
7204 ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT
, NULL
, HFILL
} },
7206 { &hf_zbee_zcl_met_noti_flag_4_get_top_up_log
,
7207 { "Get Top Up Log", "zbee_zcl_se.met.attr.noti_flag_4.get_top_up_log", FT_BOOLEAN
, 32, NULL
,
7208 ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG
, NULL
, HFILL
} },
7210 { &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level
,
7211 { "Set Low Credit Warning Level", "zbee_zcl_se.met.attr.noti_flag_4.set_low_credit_warning_level", FT_BOOLEAN
, 32, NULL
,
7212 ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL
, NULL
, HFILL
} },
7214 { &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log
,
7215 { "Get Debt Repayment Log", "zbee_zcl_se.met.attr.noti_flag_4.get_debt_repayment_log", FT_BOOLEAN
, 32, NULL
,
7216 ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG
, NULL
, HFILL
} },
7218 { &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit
,
7219 { "Set Maximum Credit Limit", "zbee_zcl_se.met.attr.noti_flag_4.set_maximum_credit_limit", FT_BOOLEAN
, 32, NULL
,
7220 ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT
, NULL
, HFILL
} },
7222 { &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap
,
7223 { "Set Overall Debt Cap", "zbee_zcl_se.met.attr.noti_flag_4.set_overall_debt_cap", FT_BOOLEAN
, 32, NULL
,
7224 ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP
, NULL
, HFILL
} },
7226 { &hf_zbee_zcl_met_noti_flag_4_reserved
,
7227 { "Reserved", "zbee_zcl_se.met.attr.noti_flag_4.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7228 ZBEE_ZCL_NOTI_FLAG_4_RESERVED
, NULL
, HFILL
} },
7230 /* Notification Flags 5 */
7231 { &hf_zbee_zcl_met_noti_flags_5
,
7232 { "Notification Flags 5", "zbee_zcl_se.met.attr.noti_flag_5", FT_UINT32
, BASE_HEX
, NULL
,
7233 0x00, NULL
, HFILL
} },
7235 { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy
,
7236 { "Publish Change of Tenancy", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_tenancy", FT_BOOLEAN
, 32, NULL
,
7237 ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY
, NULL
, HFILL
} },
7239 { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier
,
7240 { "Publish Change of Supplier", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_supplier", FT_BOOLEAN
, 32, NULL
,
7241 ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER
, NULL
, HFILL
} },
7243 { &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response
,
7244 { "Request New Password 1 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_1_response", FT_BOOLEAN
, 32, NULL
,
7245 ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE
, NULL
, HFILL
} },
7247 { &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response
,
7248 { "Request New Password 2 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_2_response", FT_BOOLEAN
, 32, NULL
,
7249 ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE
, NULL
, HFILL
} },
7251 { &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response
,
7252 { "Request New Password 3 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_3_response", FT_BOOLEAN
, 32, NULL
,
7253 ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE
, NULL
, HFILL
} },
7255 { &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response
,
7256 { "Request New Password 4 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_4_response", FT_BOOLEAN
, 32, NULL
,
7257 ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE
, NULL
, HFILL
} },
7259 { &hf_zbee_zcl_met_noti_flag_5_update_site_id
,
7260 { "Update Site ID", "zbee_zcl_se.met.attr.noti_flag_5.update_site_id", FT_BOOLEAN
, 32, NULL
,
7261 ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID
, NULL
, HFILL
} },
7263 { &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter
,
7264 { "Reset Battery Counter", "zbee_zcl_se.met.attr.noti_flag_5.reset_battery_counter", FT_BOOLEAN
, 32, NULL
,
7265 ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER
, NULL
, HFILL
} },
7267 { &hf_zbee_zcl_met_noti_flag_5_update_cin
,
7268 { "Update CIN", "zbee_zcl_se.met.attr.noti_flag_5.update_cin", FT_BOOLEAN
, 32, NULL
,
7269 ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN
, NULL
, HFILL
} },
7271 { &hf_zbee_zcl_met_noti_flag_5_reserved
,
7272 { "Reserved", "zbee_zcl_se.met.attr.noti_flag_5.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7273 ZBEE_ZCL_NOTI_FLAG_5_RESERVED
, NULL
, HFILL
} },
7275 { &hf_zbee_zcl_met_srv_tx_cmd_id
,
7276 { "Command", "zbee_zcl_se.met.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_met_srv_tx_cmd_names
),
7277 0x00, NULL
, HFILL
} },
7279 { &hf_zbee_zcl_met_srv_rx_cmd_id
,
7280 { "Command", "zbee_zcl_se.met.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_met_srv_rx_cmd_names
),
7281 0x00, NULL
, HFILL
} },
7283 { &hf_zbee_zcl_met_get_profile_interval_channel
,
7284 { "Interval Channel", "zbee_zcl_se.met.get_profile.interval_channel", FT_UINT8
, BASE_DEC
, NULL
,
7285 0x00, NULL
, HFILL
} },
7287 { &hf_zbee_zcl_met_get_profile_end_time
,
7288 { "End Time", "zbee_zcl_se.met.get_profile.end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7289 0x00, NULL
, HFILL
} },
7291 { &hf_zbee_zcl_met_get_profile_number_of_periods
,
7292 { "Number of Periods", "zbee_zcl_se.met.get_profile.number_of_periods", FT_UINT8
, BASE_DEC
, NULL
,
7293 0x00, NULL
, HFILL
} },
7295 { &hf_zbee_zcl_met_request_mirror_rsp_endpoint_id
,
7296 { "EndPoint ID", "zbee_zcl_se.met.request_mirror_rsp.endpoint_id", FT_UINT16
, BASE_DEC
, NULL
,
7297 0x00, NULL
, HFILL
} },
7299 { &hf_zbee_zcl_met_mirror_removed_removed_endpoint_id
,
7300 { "Removed EndPoint ID", "zbee_zcl_se.met.mirror_removed.removed_endpoint_id", FT_UINT16
, BASE_DEC
, NULL
,
7301 0x00, NULL
, HFILL
} },
7303 { &hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period
,
7304 { "Fast Poll Update Period", "zbee_zcl_se.met.request_fast_poll_mode.fast_poll_update_period", FT_UINT8
, BASE_DEC
, NULL
,
7305 0x00, NULL
, HFILL
} },
7307 { &hf_zbee_zcl_met_request_fast_poll_mode_duration
,
7308 { "Duration", "zbee_zcl_se.met.request_fast_poll_mode.duration", FT_UINT8
, BASE_DEC
, NULL
,
7309 0x00, NULL
, HFILL
} },
7311 { &hf_zbee_zcl_met_schedule_snapshot_issuer_event_id
,
7312 { "Issuer Event ID", "zbee_zcl_se.met.schedule_snapshot.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7313 0x00, NULL
, HFILL
} },
7315 { &hf_zbee_zcl_met_schedule_snapshot_command_index
,
7316 { "Command Index", "zbee_zcl_se.met.schedule_snapshot.command_index", FT_UINT8
, BASE_DEC
, NULL
,
7317 0x00, NULL
, HFILL
} },
7319 { &hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands
,
7320 { "Total Number of Commands", "zbee_zcl_se.met.schedule_snapshot.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
7321 0x00, NULL
, HFILL
} },
7323 { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id
,
7324 { "Snapshot Schedule ID", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule_id", FT_UINT8
, BASE_DEC
, NULL
,
7325 0x00, NULL
, HFILL
} },
7327 { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time
,
7328 { "Snapshot Start Time", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7329 0x00, NULL
, HFILL
} },
7331 { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule
,
7332 { "Snapshot Schedule", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule", FT_UINT24
, BASE_HEX
, NULL
,
7333 0x00, NULL
, HFILL
} },
7335 { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type
,
7336 { "Snapshot Payload Type", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_payload_type",
7337 FT_UINT8
, BASE_DEC
, VALS(zbee_zcl_met_snapshot_payload_type
),
7338 0x00, NULL
, HFILL
} },
7340 { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause
,
7341 { "Snapshot Cause", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
7342 0x00, NULL
, HFILL
} },
7344 { &hf_zbee_zcl_met_snapshot_schedule_frequency
,
7345 { "Snapshot Schedule Frequency", "zbee_zcl_se.met.snapshot_schedule.frequency",
7346 FT_UINT24
, BASE_DEC
, NULL
,
7347 0x0FFFFF, NULL
, HFILL
} },
7349 { &hf_zbee_zcl_met_snapshot_schedule_frequency_type
,
7350 { "Snapshot Schedule Frequency Type", "zbee_zcl_se.met.snapshot_schedule.frequency_type",
7351 FT_UINT24
, BASE_HEX
, VALS(zbee_zcl_met_snapshot_schedule_frequency_type
),
7352 0x300000, NULL
, HFILL
} },
7354 { &hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card
,
7355 { "Snapshot Schedule Frequency Wild Card", "zbee_zcl_se.met.snapshot_schedule.frequency_wild_card",
7356 FT_UINT24
, BASE_HEX
,VALS(zbee_zcl_met_snapshot_schedule_frequency_wild_card
),
7357 0xC00000, NULL
, HFILL
} },
7359 { &hf_zbee_zcl_met_take_snapshot_snapshot_cause
,
7360 { "Snapshot Cause", "zbee_zcl_se.met.take_snapshot.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
7361 0x00, NULL
, HFILL
} },
7363 { &hf_zbee_zcl_met_get_snapshot_start_time
,
7364 { "Start Time", "zbee_zcl_se.met.get_snapshot.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7365 0x00, NULL
, HFILL
} },
7367 { &hf_zbee_zcl_met_get_snapshot_end_time
,
7368 { "End Time", "zbee_zcl_se.met.get_snapshot.end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7369 0x00, NULL
, HFILL
} },
7371 { &hf_zbee_zcl_met_get_snapshot_snapshot_offset
,
7372 { "Snapshot Offset", "zbee_zcl_se.met.get_snapshot.snapshot_offset", FT_UINT8
, BASE_DEC
, NULL
,
7373 0x00, NULL
, HFILL
} },
7375 { &hf_zbee_zcl_met_get_snapshot_snapshot_cause
,
7376 { "Snapshot Cause", "zbee_zcl_se.met.get_snapshot.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
7377 0x00, NULL
, HFILL
} },
7379 { &hf_zbee_zcl_met_start_sampling_issuer_event_id
,
7380 { "Issuer Event ID", "zbee_zcl_se.met.start_sampling.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7381 0x00, NULL
, HFILL
} },
7383 { &hf_zbee_zcl_met_start_sampling_start_sampling_time
,
7384 { "Start Sampling Time", "zbee_zcl_se.met.start_sampling.start_sampling_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7385 0x00, NULL
, HFILL
} },
7387 { &hf_zbee_zcl_met_start_sampling_sample_type
,
7388 { "Sample Type", "zbee_zcl_se.met.start_sampling.sample_type", FT_UINT8
, BASE_DEC
, NULL
,
7389 0x00, NULL
, HFILL
} },
7391 { &hf_zbee_zcl_met_start_sampling_sample_request_interval
,
7392 { "Sample Request Interval", "zbee_zcl_se.met.start_sampling.sample_request_interval", FT_UINT16
, BASE_DEC
, NULL
,
7393 0x00, NULL
, HFILL
} },
7395 { &hf_zbee_zcl_met_start_sampling_max_number_of_samples
,
7396 { "Max Number of Samples", "zbee_zcl_se.met.start_sampling.max_number_of_samples", FT_UINT16
, BASE_DEC
, NULL
,
7397 0x00, NULL
, HFILL
} },
7399 { &hf_zbee_zcl_met_get_sampled_data_sample_id
,
7400 { "Sample ID", "zbee_zcl_se.met.get_sampled_data.sample_id", FT_UINT16
, BASE_DEC
, NULL
,
7401 0x00, NULL
, HFILL
} },
7403 { &hf_zbee_zcl_met_get_sampled_data_sample_start_time
,
7404 { "Sample Start Time", "zbee_zcl_se.met.get_sampled_data.sample_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7405 0x00, NULL
, HFILL
} },
7407 { &hf_zbee_zcl_met_get_sampled_data_sample_type
,
7408 { "Sample Type", "zbee_zcl_se.met.get_sampled_data.sample_type", FT_UINT8
, BASE_DEC
, NULL
,
7409 0x00, NULL
, HFILL
} },
7411 { &hf_zbee_zcl_met_get_sampled_data_number_of_samples
,
7412 { "Number of Samples", "zbee_zcl_se.met.get_sampled_data.number_of_samples", FT_UINT16
, BASE_DEC
, NULL
,
7413 0x00, NULL
, HFILL
} },
7415 { &hf_zbee_zcl_met_start_sampling_response_sample_id
,
7416 { "Sample ID", "zbee_zcl_se.met.start_sampling_response.sample_id", FT_UINT16
, BASE_DEC
, NULL
,
7417 0x00, NULL
, HFILL
} },
7419 { &hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme
,
7420 { "Notification Scheme", "zbee_zcl_se.met.mirror_report_attribute_response.notification_scheme", FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_met_notification_scheme
),
7421 0x00, NULL
, HFILL
} },
7423 { &hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n
,
7424 { "Notification Flag", "zbee_zcl_se.met.mirror_report_attribute_response.notification_flags_n", FT_UINT32
, BASE_HEX
, NULL
,
7425 0x00, NULL
, HFILL
} },
7427 { &hf_zbee_zcl_met_reset_load_limit_counter_provider_id
,
7428 { "Provider ID", "zbee_zcl_se.met.reset_load_limit_counter.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
7429 0x00, NULL
, HFILL
} },
7431 { &hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id
,
7432 { "Issuer Event ID", "zbee_zcl_se.met.reset_load_limit_counter.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7433 0x00, NULL
, HFILL
} },
7435 { &hf_zbee_zcl_met_change_supply_provider_id
,
7436 { "Provider ID", "zbee_zcl_se.met.change_supply.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
7437 0x00, NULL
, HFILL
} },
7439 { &hf_zbee_zcl_met_change_supply_issuer_event_id
,
7440 { "Issuer Event ID", "zbee_zcl_se.met.change_supply.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7441 0x00, NULL
, HFILL
} },
7443 { &hf_zbee_zcl_met_change_supply_request_date_time
,
7444 { "Request Date/Time", "zbee_zcl_se.met.change_supply.request_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7445 0x00, NULL
, HFILL
} },
7447 { &hf_zbee_zcl_met_change_supply_implementation_date_time
,
7448 { "Implementation Date/Time", "zbee_zcl_se.met.change_supply.implementation_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7449 0x00, NULL
, HFILL
} },
7451 { &hf_zbee_zcl_met_change_supply_proposed_supply_status
,
7452 { "Proposed Supply Status", "zbee_zcl_se.met.change_supply.proposed_supply_status", FT_UINT8
, BASE_DEC
, NULL
,
7453 0x00, NULL
, HFILL
} },
7455 { &hf_zbee_zcl_met_change_supply_supply_control_bits
,
7456 { "Supply Control bits", "zbee_zcl_se.met.change_supply.supply_control_bits", FT_UINT8
, BASE_HEX
, NULL
,
7457 0x00, NULL
, HFILL
} },
7459 { &hf_zbee_zcl_met_local_change_supply_proposed_supply_status
,
7460 { "Proposed Supply Status", "zbee_zcl_se.met.local_change_supply.proposed_supply_status", FT_UINT8
, BASE_DEC
, NULL
,
7461 0x00, NULL
, HFILL
} },
7463 { &hf_zbee_zcl_met_set_supply_status_issuer_event_id
,
7464 { "Issuer Event ID", "zbee_zcl_se.met.set_supply_status.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7465 0x00, NULL
, HFILL
} },
7467 { &hf_zbee_zcl_met_set_supply_status_supply_tamper_state
,
7468 { "Supply Tamper State", "zbee_zcl_se.met.set_supply_status.supply_tamper_state", FT_UINT8
, BASE_DEC
, NULL
,
7469 0x00, NULL
, HFILL
} },
7471 { &hf_zbee_zcl_met_set_supply_status_supply_depletion_state
,
7472 { "Supply Depletion State", "zbee_zcl_se.met.set_supply_status.supply_depletion_state", FT_UINT8
, BASE_DEC
, NULL
,
7473 0x00, NULL
, HFILL
} },
7475 { &hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state
,
7476 { "Supply Uncontrolled Flow State", "zbee_zcl_se.met.set_supply_status.supply_uncontrolled_flow_state", FT_UINT8
, BASE_DEC
, NULL
,
7477 0x00, NULL
, HFILL
} },
7479 { &hf_zbee_zcl_met_set_supply_status_load_limit_supply_state
,
7480 { "Load Limit Supply State", "zbee_zcl_se.met.set_supply_status.load_limit_supply_state", FT_UINT8
, BASE_DEC
, NULL
,
7481 0x00, NULL
, HFILL
} },
7483 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id
,
7484 { "Provider ID", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
7485 0x00, NULL
, HFILL
} },
7487 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id
,
7488 { "Issuer Event ID", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7489 0x00, NULL
, HFILL
} },
7491 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold
,
7492 { "Uncontrolled Flow Threshold", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.uncontrolled_flow_threshold", FT_UINT16
, BASE_DEC
, NULL
,
7493 0x00, NULL
, HFILL
} },
7495 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure
,
7496 { "Unit of Measure", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.unit_of_measure", FT_UINT8
, BASE_DEC
, NULL
,
7497 0x00, NULL
, HFILL
} },
7499 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier
,
7500 { "Multiplier", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.multiplier", FT_UINT16
, BASE_DEC
, NULL
,
7501 0x00, NULL
, HFILL
} },
7503 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor
,
7504 { "Divisor", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.divisor", FT_UINT16
, BASE_DEC
, NULL
,
7505 0x00, NULL
, HFILL
} },
7507 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period
,
7508 { "Stabilisation Period", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.stabilisation_period", FT_UINT8
, BASE_DEC
, NULL
,
7509 0x00, NULL
, HFILL
} },
7511 { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period
,
7512 { "Measurement Period", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.measurement_period", FT_UINT16
, BASE_DEC
, NULL
,
7513 0x00, NULL
, HFILL
} },
7515 { &hf_zbee_zcl_met_get_profile_response_end_time
,
7516 { "End Time", "zbee_zcl_se.met.get_profile_response.end_time",
7517 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(decode_zcl_se_utc_time
), 0x00, NULL
, HFILL
} },
7519 { &hf_zbee_zcl_met_get_profile_response_status
,
7520 { "Status", "zbee_zcl_se.met.get_profile_response.status", FT_UINT8
, BASE_HEX
, NULL
,
7521 0x00, NULL
, HFILL
} },
7523 { &hf_zbee_zcl_met_get_profile_response_profile_interval_period
,
7524 { "Profile Interval Period", "zbee_zcl_se.met.get_profile_response.profile_interval_period", FT_UINT8
, BASE_DEC
, NULL
,
7525 0x00, NULL
, HFILL
} },
7527 { &hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered
,
7528 { "Number of Periods Delivered", "zbee_zcl_se.met.get_profile_response.number_of_periods_delivered", FT_UINT8
, BASE_DEC
, NULL
,
7529 0x00, NULL
, HFILL
} },
7531 { &hf_zbee_zcl_met_get_profile_response_intervals
,
7532 { "Intervals", "zbee_zcl_se.met.get_profile_response.intervals", FT_UINT24
, BASE_DEC
, NULL
,
7533 0x00, NULL
, HFILL
} },
7535 { &hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period
,
7536 { "Applied Update Period (seconds)", "zbee_zcl_se.met.request_fast_poll_mode_response.applied_update_period", FT_UINT8
, BASE_DEC
, NULL
,
7537 0x00, NULL
, HFILL
} },
7539 { &hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time
,
7540 { "Fast Poll Mode End Time", "zbee_zcl_se.met.request_fast_poll_mode_response.fast_poll_mode_end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7541 0x00, NULL
, HFILL
} },
7543 { &hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id
,
7544 { "Issuer Event ID", "zbee_zcl_se.met.schedule_snapshot_response.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7545 0x00, NULL
, HFILL
} },
7547 { &hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id
,
7548 { "Snapshot Schedule ID", "zbee_zcl_se.met.schedule_snapshot_response.response_snapshot_schedule_id", FT_UINT8
, BASE_DEC
, NULL
,
7549 0x00, NULL
, HFILL
} },
7551 { &hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation
,
7552 { "Snapshot Schedule Confirmation", "zbee_zcl_se.met.schedule_snapshot_response.snapshot_schedule_confirmation", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_met_snapshot_schedule_confirmation
),
7553 0x00, NULL
, HFILL
} },
7555 { &hf_zbee_zcl_met_take_snapshot_response_snapshot_id
,
7556 { "Snapshot ID", "zbee_zcl_se.met.take_snapshot_response.snapshot_id", FT_UINT32
, BASE_DEC
, NULL
,
7557 0x00, NULL
, HFILL
} },
7559 { &hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation
,
7560 { "Snapshot Confirmation", "zbee_zcl_se.met.take_snapshot_response.snapshot_confirmation", FT_UINT8
, BASE_HEX
, NULL
,
7561 0x00, NULL
, HFILL
} },
7563 { &hf_zbee_zcl_met_publish_snapshot_snapshot_id
,
7564 { "Snapshot ID", "zbee_zcl_se.met.publish_snapshot.snapshot_id", FT_UINT32
, BASE_DEC
, NULL
,
7565 0x00, NULL
, HFILL
} },
7567 { &hf_zbee_zcl_met_publish_snapshot_snapshot_time
,
7568 { "Snapshot Time", "zbee_zcl_se.met.publish_snapshot.snapshot_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7569 0x00, NULL
, HFILL
} },
7571 { &hf_zbee_zcl_met_publish_snapshot_snapshots_found
,
7572 { "Total Snapshots Found", "zbee_zcl_se.met.publish_snapshot.snapshots_found", FT_UINT8
, BASE_DEC
, NULL
,
7573 0x00, NULL
, HFILL
} },
7575 { &hf_zbee_zcl_met_publish_snapshot_cmd_index
,
7576 { "Command Index", "zbee_zcl_se.met.publish_snapshot.command_index", FT_UINT8
, BASE_DEC
, NULL
,
7577 0x00, NULL
, HFILL
} },
7579 { &hf_zbee_zcl_met_publish_snapshot_total_commands
,
7580 { "Total Number of Commands", "zbee_zcl_se.met.publish_snapshot.total_commands", FT_UINT8
, BASE_DEC
, NULL
,
7581 0x00, NULL
, HFILL
} },
7583 { &hf_zbee_zcl_met_publish_snapshot_snapshot_cause
,
7584 { "Snapshot Cause", "zbee_zcl_se.met.publish_snapshot.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
7585 0x00, NULL
, HFILL
} },
7587 { &hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type
,
7588 { "Snapshot Payload Type", "zbee_zcl_se.met.publish_snapshot.payload_type", FT_UINT8
, BASE_DEC
, VALS(zbee_zcl_met_snapshot_payload_type
),
7589 0x00, NULL
, HFILL
} },
7591 { &hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload
,
7592 { "Snapshot Sub-Payload", "zbee_zcl_se.met.publish_snapshot.sub_payload", FT_BYTES
, BASE_NONE
, NULL
,
7593 0x00, NULL
, HFILL
} },
7595 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_id
,
7596 { "Sample ID", "zbee_zcl_se.met.get_sampled_data_rsp.sample_id", FT_UINT16
, BASE_DEC
, NULL
,
7597 0x00, NULL
, HFILL
} },
7599 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_start_time
,
7600 { "Sample Start Time", "zbee_zcl_se.met.get_sampled_data_rsp.sample_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7601 0x00, NULL
, HFILL
} },
7603 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_type
,
7604 { "Sample Type", "zbee_zcl_se.met.get_sampled_data_rsp.sample_type", FT_UINT8
, BASE_DEC
, NULL
,
7605 0x00, NULL
, HFILL
} },
7607 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval
,
7608 { "Sample Request Interval", "zbee_zcl_se.met.get_sampled_data_rsp.sample_request_interval", FT_UINT16
, BASE_DEC
, NULL
,
7609 0x00, NULL
, HFILL
} },
7611 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples
,
7612 { "Number of Samples", "zbee_zcl_se.met.get_sampled_data_rsp.number_of_samples", FT_UINT16
, BASE_DEC
, NULL
,
7613 0x00, NULL
, HFILL
} },
7615 { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples
,
7616 { "Samples", "zbee_zcl_se.met.get_sampled_data_rsp.samples", FT_UINT24
, BASE_DEC
, NULL
,
7617 0x00, NULL
, HFILL
} },
7619 { &hf_zbee_zcl_met_configure_mirror_issuer_event_id
,
7620 { "Issuer Event ID", "zbee_zcl_se.met.configure_mirror.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7621 0x00, NULL
, HFILL
} },
7623 { &hf_zbee_zcl_met_configure_mirror_reporting_interval
,
7624 { "Reporting Interval", "zbee_zcl_se.met.configure_mirror.reporting_interval", FT_UINT24
, BASE_DEC
, NULL
,
7625 0x00, NULL
, HFILL
} },
7627 { &hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting
,
7628 { "Mirror Notification Reporting", "zbee_zcl_se.met.configure_mirror.mirror_notification_reporting", FT_BOOLEAN
, BASE_NONE
, NULL
,
7629 0x00, NULL
, HFILL
} },
7631 { &hf_zbee_zcl_met_configure_mirror_notification_scheme
,
7632 { "Notification Scheme", "zbee_zcl_se.met.configure_mirror.notification_scheme", FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_met_notification_scheme
),
7633 0x00, NULL
, HFILL
} },
7635 { &hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id
,
7636 { "Issuer Event ID", "zbee_zcl_se.met.configure_notification_scheme.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7637 0x00, NULL
, HFILL
} },
7639 { &hf_zbee_zcl_met_configure_notification_scheme_notification_scheme
,
7640 { "Notification Scheme", "zbee_zcl_se.met.configure_notification_scheme.notification_scheme", FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_met_notification_scheme
),
7641 0x00, NULL
, HFILL
} },
7643 { &hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order
,
7644 { "Notification Flag Order", "zbee_zcl_se.met.configure_notification_scheme.notification_flag_order", FT_UINT32
, BASE_HEX
, NULL
,
7645 0x00, NULL
, HFILL
} },
7647 { &hf_zbee_zcl_met_configure_notification_flags_issuer_event_id
,
7648 { "Issuer Event ID", "zbee_zcl_se.met.configure_notification_flags.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7649 0x00, NULL
, HFILL
} },
7651 { &hf_zbee_zcl_met_configure_notification_flags_notification_scheme
,
7652 { "Notification Scheme", "zbee_zcl_se.met.configure_notification_flags.notification_scheme", FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_met_notification_scheme
),
7653 0x00, NULL
, HFILL
} },
7655 { &hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id
,
7656 { "Notification Flag Attribute ID", "zbee_zcl_se.met.configure_notification_flags.notification_flag_attribute_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_met_attr_client_names
),
7657 0x00, NULL
, HFILL
} },
7659 { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_cluster_id
,
7660 { "Cluster ID", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.cluster_id", FT_UINT16
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_aps_cid_names
),
7661 0x00, NULL
, HFILL
} },
7663 { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_manufacturer_code
,
7664 { "Manufacturer Code", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.manufacturer_code", FT_UINT16
, BASE_HEX
, NULL
,
7665 0x00, NULL
, HFILL
} },
7667 { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_no_of_commands
,
7668 { "No. of Commands", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.no_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
7669 0x00, NULL
, HFILL
} },
7671 { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_command_identifier
,
7672 { "Command Identifier", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.command_identifier", FT_UINT8
, BASE_HEX
, NULL
,
7673 0x00, NULL
, HFILL
} },
7675 { &hf_zbee_zcl_met_get_notified_msg_notification_scheme
,
7676 { "Notification Scheme", "zbee_zcl_se.met.get_notified_msg.notification_scheme", FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_met_notification_scheme
),
7677 0x00, NULL
, HFILL
} },
7679 { &hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id
,
7680 { "Notification Flag attribute ID", "zbee_zcl_se.met.get_notified_msg.notification_flag_attribute_id", FT_UINT16
, BASE_DEC
, NULL
,
7681 0x00, NULL
, HFILL
} },
7683 { &hf_zbee_zcl_met_get_notified_msg_notification_flags
,
7684 { "Notification Flags", "zbee_zcl_se.met.get_notified_msg.notification_flags", FT_UINT32
, BASE_HEX
, NULL
,
7685 0x00, NULL
, HFILL
} },
7687 { &hf_zbee_zcl_met_supply_status_response_provider_id
,
7688 { "Provider ID", "zbee_zcl_se.met.supply_status_response.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
7689 0x00, NULL
, HFILL
} },
7691 { &hf_zbee_zcl_met_supply_status_response_issuer_event_id
,
7692 { "Issuer Event ID", "zbee_zcl_se.met.supply_status_response.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
7693 0x00, NULL
, HFILL
} },
7695 { &hf_zbee_zcl_met_supply_status_response_implementation_date_time
,
7696 { "Implementation Date/Time", "zbee_zcl_se.met.supply_status_response.implementation_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
7697 0x00, NULL
, HFILL
} },
7699 { &hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation
,
7700 { "Supply Status After Implementation", "zbee_zcl_se.met.supply_status_response.supply_status_after_implementation", FT_UINT8
, BASE_DEC
, NULL
,
7701 0x00, NULL
, HFILL
} },
7703 { &hf_zbee_zcl_met_snapshot_cause_general
,
7704 { "General", "zbee_zcl_se.met.snapshot_cause.general", FT_BOOLEAN
, 32, NULL
,
7705 0x00000001, NULL
, HFILL
} },
7706 { &hf_zbee_zcl_met_snapshot_cause_end_of_billing_period
,
7707 { "End of Billing Period", "zbee_zcl_se.met.snapshot_cause.end_of_billing_period", FT_BOOLEAN
, 32, NULL
,
7708 0x00000002, NULL
, HFILL
} },
7709 { &hf_zbee_zcl_met_snapshot_cause_end_of_block_period
,
7710 { "End of Block Period", "zbee_zcl_se.met.snapshot_cause.end_of_block_period", FT_BOOLEAN
, 32, NULL
,
7711 0x00000004, NULL
, HFILL
} },
7712 { &hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information
,
7713 { "Change of Tariff Information", "zbee_zcl_se.met.snapshot_cause.change_of_tariff_information", FT_BOOLEAN
, 32, NULL
,
7714 0x00000008, NULL
, HFILL
} },
7715 { &hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix
,
7716 { "Change of Price Matrix", "zbee_zcl_se.met.snapshot_cause.change_of_price_matrix", FT_BOOLEAN
, 32, NULL
,
7717 0x00000010, NULL
, HFILL
} },
7718 { &hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds
,
7719 { "Change of Block Thresholds", "zbee_zcl_se.met.snapshot_cause.change_of_block_thresholds", FT_BOOLEAN
, 32, NULL
,
7720 0x00000020, NULL
, HFILL
} },
7721 { &hf_zbee_zcl_met_snapshot_cause_change_of_cv
,
7722 { "Change of CV", "zbee_zcl_se.met.snapshot_cause.change_of_cv", FT_BOOLEAN
, 32, NULL
,
7723 0x00000040, NULL
, HFILL
} },
7724 { &hf_zbee_zcl_met_snapshot_cause_change_of_cf
,
7725 { "Change of CF", "zbee_zcl_se.met.snapshot_cause.change_of_cf", FT_BOOLEAN
, 32, NULL
,
7726 0x00000080, NULL
, HFILL
} },
7727 { &hf_zbee_zcl_met_snapshot_cause_change_of_calendar
,
7728 { "Change of Calendar", "zbee_zcl_se.met.snapshot_cause.change_of_calendar", FT_BOOLEAN
, 32, NULL
,
7729 0x00000100, NULL
, HFILL
} },
7730 { &hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing
,
7731 { "Critical Peak Pricing", "zbee_zcl_se.met.snapshot_cause.critical_peak_pricing", FT_BOOLEAN
, 32, NULL
,
7732 0x00000200, NULL
, HFILL
} },
7733 { &hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client
,
7734 { "Manually Triggered from Client", "zbee_zcl_se.met.snapshot_cause.manually_triggered_from_client", FT_BOOLEAN
, 32, NULL
,
7735 0x00000400, NULL
, HFILL
} },
7736 { &hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period
,
7737 { "End of Resolve Period", "zbee_zcl_se.met.snapshot_cause.end_of_resolve_period", FT_BOOLEAN
, 32, NULL
,
7738 0x00000800, NULL
, HFILL
} },
7739 { &hf_zbee_zcl_met_snapshot_cause_change_of_tenancy
,
7740 { "Change of Tenancy", "zbee_zcl_se.met.snapshot_cause.change_of_tenancy", FT_BOOLEAN
, 32, NULL
,
7741 0x00001000, NULL
, HFILL
} },
7742 { &hf_zbee_zcl_met_snapshot_cause_change_of_supplier
,
7743 { "Change of Supplier", "zbee_zcl_se.met.snapshot_cause.change_of_supplier", FT_BOOLEAN
, 32, NULL
,
7744 0x00002000, NULL
, HFILL
} },
7745 { &hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode
,
7746 { "Change of (Meter) Mode", "zbee_zcl_se.met.snapshot_cause.change_of_meter_mode", FT_BOOLEAN
, 32, NULL
,
7747 0x00004000, NULL
, HFILL
} },
7748 { &hf_zbee_zcl_met_snapshot_cause_debt_payment
,
7749 { "Debt Payment", "zbee_zcl_se.met.snapshot_cause.debt_payment", FT_BOOLEAN
, 32, NULL
,
7750 0x00008000, NULL
, HFILL
} },
7751 { &hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot
,
7752 { "Scheduled Snapshot", "zbee_zcl_se.met.snapshot_cause.scheduled_snapshot", FT_BOOLEAN
, 32, NULL
,
7753 0x00010000, NULL
, HFILL
} },
7754 { &hf_zbee_zcl_met_snapshot_cause_ota_firmware_download
,
7755 { "OTA Firmware Download", "zbee_zcl_se.met.snapshot_cause.ota_firmware_download", FT_BOOLEAN
, 32, NULL
,
7756 0x00020000, NULL
, HFILL
} },
7757 { &hf_zbee_zcl_met_snapshot_cause_reserved
,
7758 { "Reserved", "zbee_zcl_se.met.snapshot_cause.reserved", FT_UINT32
, BASE_HEX
, NULL
,
7759 0xFFFC0000, NULL
, HFILL
} }
7762 /* ZCL Metering subtrees */
7765 &ett_zbee_zcl_met_func_noti_flags
,
7766 &ett_zbee_zcl_met_noti_flags_2
,
7767 &ett_zbee_zcl_met_noti_flags_3
,
7768 &ett_zbee_zcl_met_noti_flags_4
,
7769 &ett_zbee_zcl_met_noti_flags_5
,
7770 &ett_zbee_zcl_met_snapshot_cause_flags
,
7771 &ett_zbee_zcl_met_snapshot_schedule
,
7772 &ett_zbee_zcl_met_schedule_snapshot_response_payload
,
7773 &ett_zbee_zcl_met_schedule_snapshot_payload
,
7774 &ett_zbee_zcl_met_mirror_noti_flag
,
7775 &ett_zbee_zcl_met_bit_field_allocation
7778 /* Register the ZigBee ZCL Metering cluster protocol name and description */
7779 proto_zbee_zcl_met
= proto_register_protocol("ZigBee ZCL Metering", "ZCL Metering", ZBEE_PROTOABBREV_ZCL_MET
);
7780 proto_register_field_array(proto_zbee_zcl_met
, hf
, array_length(hf
));
7781 proto_register_subtree_array(ett
, array_length(ett
));
7783 /* Register the ZigBee ZCL Metering dissector. */
7784 register_dissector(ZBEE_PROTOABBREV_ZCL_MET
, dissect_zbee_zcl_met
, proto_zbee_zcl_met
);
7785 } /*proto_register_zbee_zcl_met*/
7788 *Hands off the ZCL Metering dissector.
7792 proto_reg_handoff_zbee_zcl_met(void)
7794 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MET
,
7797 ZBEE_ZCL_CID_SIMPLE_METERING
,
7799 hf_zbee_zcl_met_attr_server_id
,
7800 hf_zbee_zcl_met_attr_client_id
,
7801 hf_zbee_zcl_met_srv_rx_cmd_id
,
7802 hf_zbee_zcl_met_srv_tx_cmd_id
,
7803 (zbee_zcl_fn_attr_data
)dissect_zcl_met_attr_data
7805 } /*proto_reg_handoff_zbee_zcl_met*/
7807 /* ########################################################################## */
7808 /* #### (0x0703) MESSAGING CLUSTER ########################################## */
7809 /* ########################################################################## */
7811 /* Attributes - None */
7813 /* Server Commands Received */
7814 #define zbee_zcl_msg_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
7815 XXX(ZBEE_ZCL_CMD_ID_MSG_GET_LAST_MSG, 0x00, "Get Last Message" ) \
7816 XXX(ZBEE_ZCL_CMD_ID_MSG_MSG_CONFIRM, 0x01, "Message Confirmation" ) \
7817 XXX(ZBEE_ZCL_CMD_ID_MSG_GET_MESSAGE_CANCEL, 0x02, "Get Message Cancellation" )
7819 VALUE_STRING_ENUM(zbee_zcl_msg_srv_rx_cmd_names
);
7820 VALUE_STRING_ARRAY(zbee_zcl_msg_srv_rx_cmd_names
);
7822 /* Server Commands Generated */
7823 #define zbee_zcl_msg_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
7824 XXX(ZBEE_ZCL_CMD_ID_MSG_DISPLAY_MSG, 0x00, "Display Message" ) \
7825 XXX(ZBEE_ZCL_CMD_ID_MSG_CANCEL_MSG, 0x01, "Cancel Message" ) \
7826 XXX(ZBEE_ZCL_CMD_ID_MSG_DISPLAY_PROTECTED_MSG, 0x02, "Display Protected Message" ) \
7827 XXX(ZBEE_ZCL_CMD_ID_MSG_CANCEL_ALL_MSG, 0x03, "Cancel All Messages" )
7829 VALUE_STRING_ENUM(zbee_zcl_msg_srv_tx_cmd_names
);
7830 VALUE_STRING_ARRAY(zbee_zcl_msg_srv_tx_cmd_names
);
7832 /* Message Control Field Bit Map */
7833 #define ZBEE_ZCL_MSG_CTRL_TX_MASK 0x03
7834 #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MASK 0x0C
7835 #define ZBEE_ZCL_MSG_CTRL_RESERVED_MASK 0x50
7836 #define ZBEE_ZCL_MSG_CTRL_ENHANCED_CONFIRM_MASK 0x20
7837 #define ZBEE_ZCL_MSG_CTRL_CONFIRM_MASK 0x80
7839 #define ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ONLY 0x00 /* Normal Transmission Only */
7840 #define ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ANON_INTERPAN 0x01 /* Normal and Anonymous Inter-PAN Transmission Only */
7841 #define ZBEE_ZCL_MSG_CTRL_TX_ANON_INTERPAN_ONLY 0x02 /* Anonymous Inter-PAN Transmission Only */
7843 #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_LOW 0x00 /* Low */
7844 #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MEDIUM 0x01 /* Medium */
7845 #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_HIGH 0x02 /* High */
7846 #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_CRITICAL 0x03 /* Critical */
7848 #define ZBEE_ZCL_MSG_EXT_CTRL_STATUS_MASK 0x01
7850 #define ZBEE_ZCL_MSG_CONFIRM_CTRL_MASK 0x01
7852 #define ZBEE_ZCL_MSG_START_TIME_NOW 0x00000000 /* Now */
7854 /*************************/
7855 /* Function Declarations */
7856 /*************************/
7857 void proto_register_zbee_zcl_msg(void);
7858 void proto_reg_handoff_zbee_zcl_msg(void);
7860 /* Command Dissector Helpers */
7861 static void dissect_zcl_msg_display (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
7862 static void dissect_zcl_msg_cancel (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, unsigned *offset
);
7863 static void dissect_zcl_msg_confirm (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
7864 static void dissect_zcl_msg_cancel_all (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
7865 static void dissect_zcl_msg_get_cancel (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
7867 /* Private functions prototype */
7868 static void decode_zcl_msg_duration (char *s
, uint16_t value
);
7870 /*************************/
7871 /* Global Variables */
7872 /*************************/
7874 /* Initialize the protocol and registered fields */
7875 static int proto_zbee_zcl_msg
;
7877 static int hf_zbee_zcl_msg_srv_tx_cmd_id
;
7878 static int hf_zbee_zcl_msg_srv_rx_cmd_id
;
7879 static int hf_zbee_zcl_msg_message_id
;
7880 static int hf_zbee_zcl_msg_ctrl
;
7881 static int hf_zbee_zcl_msg_ctrl_tx
;
7882 static int hf_zbee_zcl_msg_ctrl_importance
;
7883 static int hf_zbee_zcl_msg_ctrl_enh_confirm
;
7884 static int hf_zbee_zcl_msg_ctrl_reserved
;
7885 static int hf_zbee_zcl_msg_ctrl_confirm
;
7886 static int hf_zbee_zcl_msg_ext_ctrl
;
7887 static int hf_zbee_zcl_msg_ext_ctrl_status
;
7888 static int hf_zbee_zcl_msg_start_time
;
7889 static int hf_zbee_zcl_msg_duration
;
7890 static int hf_zbee_zcl_msg_message
;
7891 static int hf_zbee_zcl_msg_confirm_time
;
7892 static int hf_zbee_zcl_msg_confirm_ctrl
;
7893 static int hf_zbee_zcl_msg_confirm_response
;
7894 static int hf_zbee_zcl_msg_implementation_time
;
7895 static int hf_zbee_zcl_msg_earliest_time
;
7897 /* Initialize the subtree pointers */
7898 static int ett_zbee_zcl_msg
;
7899 static int ett_zbee_zcl_msg_message_control
;
7900 static int ett_zbee_zcl_msg_ext_message_control
;
7902 static expert_field ei_zbee_zcl_msg_msg_ctrl_deprecated
;
7904 /* Message Control Transmission */
7905 static const value_string zbee_zcl_msg_ctrl_tx_names
[] = {
7906 { ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ONLY
, "Normal Transmission Only" },
7907 { ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ANON_INTERPAN
, "Normal and Anonymous Inter-PAN Transmission Only" },
7908 { ZBEE_ZCL_MSG_CTRL_TX_ANON_INTERPAN_ONLY
, "Anonymous Inter-PAN Transmission Only" },
7912 /* Message Control Importance */
7913 static const value_string zbee_zcl_msg_ctrl_importance_names
[] = {
7914 { ZBEE_ZCL_MSG_CTRL_IMPORTANCE_LOW
, "Low" },
7915 { ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MEDIUM
, "Medium" },
7916 { ZBEE_ZCL_MSG_CTRL_IMPORTANCE_HIGH
, "High" },
7917 { ZBEE_ZCL_MSG_CTRL_IMPORTANCE_CRITICAL
, "Critical" },
7921 /*************************/
7922 /* Function Bodies */
7923 /*************************/
7926 *ZigBee ZCL Messaging cluster dissector for wireshark.
7928 *@param tvb pointer to buffer containing raw packet.
7929 *@param pinfo pointer to packet information fields
7930 *@param tree pointer to data tree Wireshark uses to display packet.
7933 dissect_zbee_zcl_msg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
7935 proto_tree
*payload_tree
;
7936 zbee_zcl_packet
*zcl
;
7937 unsigned offset
= 0;
7941 /* Reject the packet if data is NULL */
7944 zcl
= (zbee_zcl_packet
*)data
;
7945 cmd_id
= zcl
->cmd_id
;
7947 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
7948 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
7949 /* Append the command name to the info column. */
7950 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
7951 val_to_str_const(cmd_id
, zbee_zcl_msg_srv_rx_cmd_names
, "Unknown Command"),
7954 /* Add the command ID. */
7955 proto_tree_add_uint(tree
, hf_zbee_zcl_msg_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
7957 /* Check is this command has a payload, than add the payload tree */
7958 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
7960 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_msg
, NULL
, "Payload");
7962 /* Call the appropriate command dissector */
7965 case ZBEE_ZCL_CMD_ID_MSG_GET_LAST_MSG
:
7969 case ZBEE_ZCL_CMD_ID_MSG_MSG_CONFIRM
:
7970 dissect_zcl_msg_confirm(tvb
, payload_tree
, &offset
);
7973 case ZBEE_ZCL_CMD_ID_MSG_GET_MESSAGE_CANCEL
:
7974 dissect_zcl_msg_get_cancel(tvb
, payload_tree
, &offset
);
7982 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
7983 /* Append the command name to the info column. */
7984 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
7985 val_to_str_const(cmd_id
, zbee_zcl_msg_srv_tx_cmd_names
, "Unknown Command"),
7988 /* Add the command ID. */
7989 proto_tree_add_uint(tree
, hf_zbee_zcl_msg_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
7991 /* Check is this command has a payload, than add the payload tree */
7992 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
7994 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_msg
, NULL
, "Payload");
7996 /* Call the appropriate command dissector */
7999 case ZBEE_ZCL_CMD_ID_MSG_DISPLAY_MSG
:
8000 dissect_zcl_msg_display(tvb
, payload_tree
, &offset
);
8003 case ZBEE_ZCL_CMD_ID_MSG_CANCEL_MSG
:
8004 dissect_zcl_msg_cancel(tvb
, pinfo
, payload_tree
, &offset
);
8007 case ZBEE_ZCL_CMD_ID_MSG_DISPLAY_PROTECTED_MSG
:
8008 dissect_zcl_msg_display(tvb
, payload_tree
, &offset
);
8011 case ZBEE_ZCL_CMD_ID_MSG_CANCEL_ALL_MSG
:
8012 dissect_zcl_msg_cancel_all(tvb
, payload_tree
, &offset
);
8021 return tvb_captured_length(tvb
);
8022 } /*dissect_zbee_zcl_msg*/
8025 *This function manages the Display Message payload
8027 *@param tvb pointer to buffer containing raw packet.
8028 *@param tree pointer to data tree Wireshark uses to display packet.
8029 *@param offset pointer to offset from caller
8032 dissect_zcl_msg_display(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8036 static int * const message_ctrl_flags
[] = {
8037 &hf_zbee_zcl_msg_ctrl_tx
,
8038 &hf_zbee_zcl_msg_ctrl_importance
,
8039 &hf_zbee_zcl_msg_ctrl_enh_confirm
,
8040 &hf_zbee_zcl_msg_ctrl_reserved
,
8041 &hf_zbee_zcl_msg_ctrl_confirm
,
8045 static int * const message_ext_ctrl_flags
[] = {
8046 &hf_zbee_zcl_msg_ext_ctrl_status
,
8051 proto_tree_add_item(tree
, hf_zbee_zcl_msg_message_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
8054 /* Message Control */
8055 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_msg_ctrl
, ett_zbee_zcl_msg_message_control
, message_ctrl_flags
, ENC_NA
);
8059 proto_tree_add_item(tree
, hf_zbee_zcl_msg_start_time
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
8062 /* Duration In Minutes*/
8063 proto_tree_add_item(tree
, hf_zbee_zcl_msg_duration
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8067 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_msg_message
, tvb
, *offset
, 1, ENC_NA
| ENC_ZIGBEE
, &msg_len
);
8070 /* (Optional) Extended Message Control */
8071 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
8072 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_msg_ext_ctrl
, ett_zbee_zcl_msg_ext_message_control
, message_ext_ctrl_flags
, ENC_NA
);
8076 } /*dissect_zcl_msg_display*/
8079 *This function manages the Cancel Message payload
8081 *@param tvb pointer to buffer containing raw packet.
8082 *@param tree pointer to data tree Wireshark uses to display packet.
8083 *@param offset pointer to offset from caller
8086 dissect_zcl_msg_cancel(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, unsigned *offset
)
8091 proto_tree_add_item(tree
, hf_zbee_zcl_msg_message_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
8094 /* Message Control */
8095 msg_ctrl
= tvb_get_uint8(tvb
, *offset
);
8096 proto_tree_add_item(tree
, hf_zbee_zcl_msg_ctrl
, tvb
, *offset
, 1, ENC_NA
);
8099 if (msg_ctrl
!= 0x00) {
8100 expert_add_info(pinfo
, tree
, &ei_zbee_zcl_msg_msg_ctrl_deprecated
);
8103 } /* dissect_zcl_msg_cancel */
8106 *This function manages the Cancel All Messages payload
8108 *@param tvb pointer to buffer containing raw packet.
8109 *@param tree pointer to data tree Wireshark uses to display packet.
8110 *@param offset pointer to offset from caller
8113 dissect_zcl_msg_cancel_all(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8115 /* Implementation Date/Time */
8116 proto_tree_add_item(tree
, hf_zbee_zcl_msg_implementation_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
8119 } /* dissect_zcl_msg_cancel_all */
8122 *This function manages the Get Message Cancellation payload
8124 *@param tvb pointer to buffer containing raw packet.
8125 *@param tree pointer to data tree Wireshark uses to display packet.
8126 *@param offset pointer to offset from caller
8129 dissect_zcl_msg_get_cancel(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8131 /* Earliest Implementation Time */
8132 proto_tree_add_item(tree
, hf_zbee_zcl_msg_earliest_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
8135 } /* dissect_zcl_msg_get_cancel */
8138 *This function manages the Message Confirmation payload
8140 *@param tvb pointer to buffer containing raw packet.
8141 *@param tree pointer to data tree Wireshark uses to display packet.
8142 *@param offset pointer to offset from caller
8145 dissect_zcl_msg_confirm(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8150 proto_tree_add_item(tree
, hf_zbee_zcl_msg_message_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
8153 /* Confirmation Time */
8154 proto_tree_add_item(tree
, hf_zbee_zcl_msg_confirm_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
8157 /* (Optional) Confirm Control */
8158 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
8159 proto_tree_add_item(tree
, hf_zbee_zcl_msg_confirm_ctrl
, tvb
, *offset
, 1, ENC_NA
);
8162 /* (Optional) Response Text, but is we have a length we expect to find the subsequent string */
8163 if ( tvb_reported_length_remaining(tvb
, *offset
) <= 0 ) return;
8164 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_msg_confirm_response
, tvb
, *offset
, 1, ENC_NA
| ENC_ZIGBEE
, &msg_len
);
8166 } /* dissect_zcl_msg_confirm */
8169 *This function decodes duration in minute type variable
8173 decode_zcl_msg_duration(char *s
, uint16_t value
)
8175 if (value
== 0xffff)
8176 snprintf(s
, ITEM_LABEL_LENGTH
, "Until changed");
8178 snprintf(s
, ITEM_LABEL_LENGTH
, "%d minutes", value
);
8180 } /*decode_zcl_msg_duration*/
8183 * This function decodes UTC time, with a special case for
8184 * ZBEE_ZCL_MSG_START_TIME_NOW which has special meaning when
8185 * used in a Smart Energy context
8187 * @param s string to display
8188 * @param value value to decode
8191 decode_zcl_se_utc_time(char *s
, uint32_t value
)
8193 if (value
== ZBEE_ZCL_MSG_START_TIME_NOW
)
8194 snprintf(s
, ITEM_LABEL_LENGTH
, "Now (0)");
8196 decode_zcl_utc_time(s
,value
);
8198 } /* decode_zcl_se_utc_time */
8201 *This function registers the ZCL Messaging dissector
8205 proto_register_zbee_zcl_msg(void)
8207 static hf_register_info hf
[] = {
8209 { &hf_zbee_zcl_msg_srv_tx_cmd_id
,
8210 { "Command", "zbee_zcl_se.msg.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_msg_srv_tx_cmd_names
),
8211 0x00, NULL
, HFILL
} },
8213 { &hf_zbee_zcl_msg_srv_rx_cmd_id
,
8214 { "Command", "zbee_zcl_se.msg.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_msg_srv_rx_cmd_names
),
8215 0x00, NULL
, HFILL
} },
8217 { &hf_zbee_zcl_msg_message_id
,
8218 { "Message ID", "zbee_zcl_se.msg.message.id", FT_UINT32
, BASE_HEX
, NULL
,
8219 0x00, NULL
, HFILL
} },
8221 /* Start of 'Message Control' fields */
8222 { &hf_zbee_zcl_msg_ctrl
,
8223 { "Message Control", "zbee_zcl_se.msg.message.ctrl", FT_UINT8
, BASE_HEX
, NULL
,
8224 0x0, NULL
, HFILL
} },
8226 { &hf_zbee_zcl_msg_ctrl_tx
,
8227 { "Transmission", "zbee_zcl_se.msg.message.ctrl.tx", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_msg_ctrl_tx_names
),
8228 ZBEE_ZCL_MSG_CTRL_TX_MASK
, NULL
, HFILL
} },
8230 { &hf_zbee_zcl_msg_ctrl_importance
,
8231 { "Importance", "zbee_zcl_se.msg.message.ctrl.importance", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_msg_ctrl_importance_names
),
8232 ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MASK
, NULL
, HFILL
} },
8234 { &hf_zbee_zcl_msg_ctrl_enh_confirm
,
8235 { "Confirmation", "zbee_zcl_se.msg.message.ctrl.enhconfirm", FT_BOOLEAN
, 8, TFS(&tfs_required_not_required
),
8236 ZBEE_ZCL_MSG_CTRL_ENHANCED_CONFIRM_MASK
, NULL
, HFILL
} },
8238 { &hf_zbee_zcl_msg_ctrl_reserved
,
8239 { "Reserved", "zbee_zcl_se.msg.message.ctrl.reserved", FT_UINT8
, BASE_HEX
, NULL
,
8240 ZBEE_ZCL_MSG_CTRL_RESERVED_MASK
, NULL
, HFILL
} },
8242 { &hf_zbee_zcl_msg_ctrl_confirm
,
8243 { "Confirmation", "zbee_zcl_se.msg.message.ctrl.confirm", FT_BOOLEAN
, 8, TFS(&tfs_required_not_required
),
8244 ZBEE_ZCL_MSG_CTRL_CONFIRM_MASK
, NULL
, HFILL
} },
8245 /* End of 'Message Control' fields */
8247 /* Start of 'Extended Message Control' fields */
8248 { &hf_zbee_zcl_msg_ext_ctrl
,
8249 { "Extended Message Control", "zbee_zcl_se.msg.message.ext.ctrl", FT_UINT8
, BASE_HEX
, NULL
,
8250 0x0, NULL
, HFILL
} },
8252 { &hf_zbee_zcl_msg_ext_ctrl_status
,
8253 { "Message Confirmation Status", "zbee_zcl_se.msg.message.ext.ctrl.status", FT_BOOLEAN
, 8, TFS(&tfs_confirmed_unconfirmed
),
8254 ZBEE_ZCL_MSG_EXT_CTRL_STATUS_MASK
, NULL
, HFILL
} },
8255 /* End of 'Extended Message Control' fields */
8257 { &hf_zbee_zcl_msg_start_time
,
8258 { "Start Time", "zbee_zcl_se.msg.message.start_time", FT_UINT32
, BASE_CUSTOM
, CF_FUNC(decode_zcl_utc_time
),
8259 0x00, NULL
, HFILL
} },
8261 { &hf_zbee_zcl_msg_duration
,
8262 { "Duration", "zbee_zcl_se.msg.message.duration", FT_UINT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_msg_duration
),
8263 0x00, NULL
, HFILL
} },
8265 { &hf_zbee_zcl_msg_message
,
8266 { "Message", "zbee_zcl_se.msg.message", FT_UINT_STRING
, BASE_NONE
, NULL
,
8267 0x00, NULL
, HFILL
} },
8269 { &hf_zbee_zcl_msg_confirm_time
,
8270 { "Confirmation Time", "zbee_zcl_se.msg.message.confirm_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
8271 0x0, NULL
, HFILL
} },
8273 { &hf_zbee_zcl_msg_confirm_ctrl
,
8274 { "Confirmation Control", "zbee_zcl_se.msg.message.confirm_ctrl", FT_BOOLEAN
, 8, TFS(&tfs_no_yes
),
8275 ZBEE_ZCL_MSG_CONFIRM_CTRL_MASK
, NULL
, HFILL
} },
8277 { &hf_zbee_zcl_msg_confirm_response
,
8278 { "Response", "zbee_zcl_se.msg.message.confirm_response", FT_UINT_STRING
, BASE_NONE
, NULL
,
8279 0x00, NULL
, HFILL
} },
8281 { &hf_zbee_zcl_msg_implementation_time
,
8282 { "Implementation Time", "zbee_zcl_se.msg.impl_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
8285 { &hf_zbee_zcl_msg_earliest_time
,
8286 { "Earliest Implementation Time", "zbee_zcl_se.msg.earliest_impl_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
8291 /* ZCL Messaging subtrees */
8294 &ett_zbee_zcl_msg_message_control
,
8295 &ett_zbee_zcl_msg_ext_message_control
,
8299 expert_module_t
* expert_zbee_zcl_msg
;
8300 static ei_register_info ei
[] = {
8301 { &ei_zbee_zcl_msg_msg_ctrl_deprecated
, { "zbee_zcl_se.msg.msg_ctrl.deprecated", PI_PROTOCOL
, PI_WARN
, "Message Control deprecated in this message, should be 0x00", EXPFILL
}},
8304 /* Register the ZigBee ZCL Messaging cluster protocol name and description */
8305 proto_zbee_zcl_msg
= proto_register_protocol("ZigBee ZCL Messaging", "ZCL Messaging", ZBEE_PROTOABBREV_ZCL_MSG
);
8306 proto_register_field_array(proto_zbee_zcl_msg
, hf
, array_length(hf
));
8307 proto_register_subtree_array(ett
, array_length(ett
));
8309 expert_zbee_zcl_msg
= expert_register_protocol(proto_zbee_zcl_msg
);
8310 expert_register_field_array(expert_zbee_zcl_msg
, ei
, array_length(ei
));
8312 /* Register the ZigBee ZCL Messaging dissector. */
8313 register_dissector(ZBEE_PROTOABBREV_ZCL_MSG
, dissect_zbee_zcl_msg
, proto_zbee_zcl_msg
);
8314 } /*proto_register_zbee_zcl_msg*/
8317 *Hands off the ZCL Messaging dissector.
8321 proto_reg_handoff_zbee_zcl_msg(void)
8323 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MSG
,
8326 ZBEE_ZCL_CID_MESSAGE
,
8329 hf_zbee_zcl_msg_srv_rx_cmd_id
,
8330 hf_zbee_zcl_msg_srv_tx_cmd_id
,
8333 } /*proto_reg_handoff_zbee_zcl_msg*/
8335 /* ########################################################################## */
8336 /* #### (0x0704) TUNNELING CLUSTER ########################################### */
8337 /* ########################################################################## */
8340 #define zbee_zcl_tun_attr_names_VALUE_STRING_LIST(XXX) \
8341 XXX(ZBEE_ZCL_ATTR_ID_TUN_CLOSE_TIMEOUT, 0x0000, "Close Tunnel Timeout" ) \
8342 /* Smart Energy */ \
8343 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_TUN, 0xFFFE, "Attribute Reporting Status" )
8345 VALUE_STRING_ENUM(zbee_zcl_tun_attr_names
);
8346 VALUE_STRING_ARRAY(zbee_zcl_tun_attr_names
);
8348 /* Server Commands Received */
8349 #define zbee_zcl_tun_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
8350 XXX(ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL, 0x00, "Request Tunnel" ) \
8351 XXX(ZBEE_ZCL_CMD_ID_TUN_CLOSE_TUNNEL, 0x01, "Close Tunnel" ) \
8352 XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA, 0x02, "Transfer Data" ) \
8353 XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR, 0x03, "Transfer Data Error" ) \
8354 XXX(ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA, 0x04, "Ack Transfer Data" ) \
8355 XXX(ZBEE_ZCL_CMD_ID_TUN_READY_DATA, 0x05, "Ready Data" ) \
8356 XXX(ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS, 0x06, "Get Supported Tunnel Protocols" )
8358 VALUE_STRING_ENUM(zbee_zcl_tun_srv_rx_cmd_names
);
8359 VALUE_STRING_ARRAY(zbee_zcl_tun_srv_rx_cmd_names
);
8361 /* Server Commands Generated */
8362 #define zbee_zcl_tun_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
8363 XXX(ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL_RSP, 0x00, "Request Tunnel Response" ) \
8364 XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_TX, 0x01, "Transfer Data" ) \
8365 XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR_TX, 0x02, "Transfer Data Error" ) \
8366 XXX(ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA_TX, 0x03, "Ack Transfer Data" ) \
8367 XXX(ZBEE_ZCL_CMD_ID_TUN_READY_DATA_TX, 0x04, "Ready Data" ) \
8368 XXX(ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS_RSP, 0x05, "Supported Tunnel Protocols Response" ) \
8369 XXX(ZBEE_ZCL_CMD_ID_TUN_CLOSURE_NOTIFY, 0x06, "Tunnel Closure Notification" )
8371 VALUE_STRING_ENUM(zbee_zcl_tun_srv_tx_cmd_names
);
8372 VALUE_STRING_ARRAY(zbee_zcl_tun_srv_tx_cmd_names
);
8374 /*************************/
8375 /* Function Declarations */
8376 /*************************/
8377 void proto_register_zbee_zcl_tun(void);
8378 void proto_reg_handoff_zbee_zcl_tun(void);
8380 /* Attribute Dissector Helpers */
8381 static void dissect_zcl_tun_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
8383 /* Private functions prototype */
8385 /*************************/
8386 /* Global Variables */
8387 /*************************/
8389 /* Initialize the protocol and registered fields */
8390 static int proto_zbee_zcl_tun
;
8392 static int hf_zbee_zcl_tun_srv_tx_cmd_id
;
8393 static int hf_zbee_zcl_tun_srv_rx_cmd_id
;
8394 static int hf_zbee_zcl_tun_attr_id
;
8395 static int hf_zbee_zcl_tun_attr_reporting_status
;
8396 static int hf_zbee_zcl_tun_attr_close_timeout
;
8397 static int hf_zbee_zcl_tun_protocol_id
;
8398 static int hf_zbee_zcl_tun_manufacturer_code
;
8399 static int hf_zbee_zcl_tun_flow_control_support
;
8400 static int hf_zbee_zcl_tun_max_in_size
;
8401 static int hf_zbee_zcl_tun_tunnel_id
;
8402 static int hf_zbee_zcl_tun_num_octets_left
;
8403 static int hf_zbee_zcl_tun_protocol_offset
;
8404 static int hf_zbee_zcl_tun_protocol_list_complete
;
8405 static int hf_zbee_zcl_tun_protocol_count
;
8406 static int hf_zbee_zcl_tun_transfer_status
;
8407 static int hf_zbee_zcl_tun_transfer_data_status
;
8409 static heur_dissector_list_t zbee_zcl_tun_heur_subdissector_list
;
8411 /* Initialize the subtree pointers */
8412 static int ett_zbee_zcl_tun
;
8414 #define zbee_zcl_tun_protocol_names_VALUE_STRING_LIST(XXX) \
8415 XXX(ZBEE_ZCL_TUN_PROTO_DLMS, 0x00, "DLMS/COSEM (IEC 62056)" ) \
8416 XXX(ZBEE_ZCL_TUN_PROTO_IEC_61107, 0x01, "IEC 61107" ) \
8417 XXX(ZBEE_ZCL_TUN_PROTO_ANSI_C12, 0x02, "ANSI C12" ) \
8418 XXX(ZBEE_ZCL_TUN_PROTO_M_BUS, 0x03, "M-BUS" ) \
8419 XXX(ZBEE_ZCL_TUN_PROTO_SML, 0x04, "SML" ) \
8420 XXX(ZBEE_ZCL_TUN_PROTO_CLIMATE_TALK, 0x05, "ClimateTalk" ) \
8421 XXX(ZBEE_ZCL_TUN_PROTO_GB_HRGP, 0x06, "GB-HRGP" ) \
8422 XXX(ZBEE_ZCL_TUN_PROTO_IPV6, 0x07, "IPv6" ) \
8423 XXX(ZBEE_ZCL_TUN_PROTO_IPV4, 0x08, "IPv4" ) \
8424 XXX(ZBEE_ZCL_TUN_PROTO_NULL, 0x09, "null" ) \
8425 XXX(ZBEE_ZCL_TUN_PROTO_TEST, 199, "test" ) \
8426 XXX(ZBEE_ZCL_TUN_PROTO_MANUFACTURER, 200, "Manufacturer Specific" ) \
8427 XXX(ZBEE_ZCL_TUN_PROTO_RESERVED, 0xFF, "Reserved" )
8429 VALUE_STRING_ENUM(zbee_zcl_tun_protocol_names
);
8430 VALUE_STRING_ARRAY(zbee_zcl_tun_protocol_names
);
8432 #define zbee_zcl_tun_trans_data_status_names_VALUE_STRING_LIST(XXX) \
8433 XXX(ZBEE_ZCL_TUN_TRANS_STATUS_NO_TUNNEL, 0x00, "Tunnel ID Does Not Exist" ) \
8434 XXX(ZBEE_ZCL_TUN_TRANS_STATUS_WRONG_DEV, 0x01, "Wrong Device" ) \
8435 XXX(ZBEE_ZCL_TUN_TRANS_STATUS_OVERFLOW, 0x02, "Data Overflow" )
8437 VALUE_STRING_ENUM(zbee_zcl_tun_trans_data_status_names
);
8438 VALUE_STRING_ARRAY(zbee_zcl_tun_trans_data_status_names
);
8440 #define zbee_zcl_tun_status_names_VALUE_STRING_LIST(XXX) \
8441 XXX(ZBEE_ZCL_TUN_STATUS_SUCCESS, 0x00, "Success" ) \
8442 XXX(ZBEE_ZCL_TUN_STATUS_BUSY, 0x01, "Busy" ) \
8443 XXX(ZBEE_ZCL_TUN_STATUS_NO_MORE_IDS, 0x02, "No More Tunnel IDs" ) \
8444 XXX(ZBEE_ZCL_TUN_STATUS_PROTO_NOT_SUPP, 0x03, "Protocol Not Supported" ) \
8445 XXX(ZBEE_ZCL_TUN_STATUS_FLOW_CONTROL_NOT_SUPP, 0x04, "Flow Control Not Supported" )
8447 VALUE_STRING_ENUM(zbee_zcl_tun_status_names
);
8448 VALUE_STRING_ARRAY(zbee_zcl_tun_status_names
);
8450 /*************************/
8451 /* Function Bodies */
8452 /*************************/
8455 *This function is called by ZCL foundation dissector in order to decode
8457 *@param tree pointer to data tree Wireshark uses to display packet.
8458 *@param tvb pointer to buffer containing raw packet.
8459 *@param offset pointer to buffer offset
8460 *@param attr_id attribute identifier
8461 *@param data_type attribute data type
8462 *@param client_attr ZCL client
8465 dissect_zcl_tun_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
8468 /* cluster specific attributes */
8469 case ZBEE_ZCL_ATTR_ID_TUN_CLOSE_TIMEOUT
:
8470 proto_tree_add_item(tree
, hf_zbee_zcl_tun_attr_close_timeout
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8474 /* applies to all SE clusters */
8475 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_TUN
:
8476 proto_tree_add_item(tree
, hf_zbee_zcl_tun_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
8480 default: /* Catch all */
8481 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
8484 } /*dissect_zcl_ias_zone_attr_data*/
8487 *This function manages the Request Tunnel payload
8489 *@param tvb pointer to buffer containing raw packet.
8490 *@param tree pointer to data tree Wireshark uses to display packet.
8491 *@param offset pointer to offset from caller
8494 dissect_zcl_tun_request_tunnel(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8496 proto_tree_add_item(tree
, hf_zbee_zcl_tun_protocol_id
, tvb
, *offset
, 1, ENC_NA
);
8499 proto_tree_add_item(tree
, hf_zbee_zcl_tun_manufacturer_code
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8502 proto_tree_add_item(tree
, hf_zbee_zcl_tun_flow_control_support
, tvb
, *offset
, 1, ENC_NA
);
8505 proto_tree_add_item(tree
, hf_zbee_zcl_tun_max_in_size
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8510 *This function manages the Close Tunnel payload
8512 *@param tvb pointer to buffer containing raw packet.
8513 *@param tree pointer to data tree Wireshark uses to display packet.
8514 *@param offset pointer to offset from caller
8517 dissect_zcl_tun_close_tunnel(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8519 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8524 *This function manages the Transfer Data payload
8526 *@param tvb pointer to buffer containing raw packet.
8527 *@param pinfo pointer to packet information fields
8528 *@param tree pointer to data tree Wireshark uses to display packet.
8529 *@param offset pointer to offset from caller
8532 dissect_zcl_tun_transfer_data(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, unsigned *offset
)
8535 heur_dtbl_entry_t
*hdtbl_entry
;
8537 proto_tree
*root_tree
= proto_tree_get_root(tree
);
8539 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8542 length
= tvb_reported_length_remaining(tvb
, *offset
);
8543 data_tvb
= tvb_new_subset_remaining(tvb
, *offset
);
8546 if (dissector_try_heuristic(zbee_zcl_tun_heur_subdissector_list
, data_tvb
, pinfo
, root_tree
, &hdtbl_entry
, NULL
)) {
8550 call_data_dissector(data_tvb
, pinfo
, root_tree
);
8554 *This function manages the Transfer Data Error payload
8556 *@param tvb pointer to buffer containing raw packet.
8557 *@param tree pointer to data tree Wireshark uses to display packet.
8558 *@param offset pointer to offset from caller
8561 dissect_zcl_tun_transfer_data_error(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8563 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8566 proto_tree_add_item(tree
, hf_zbee_zcl_tun_transfer_data_status
, tvb
, *offset
, 1, ENC_NA
);
8571 *This function manages the Ack Transfer Data payload
8573 *@param tvb pointer to buffer containing raw packet.
8574 *@param tree pointer to data tree Wireshark uses to display packet.
8575 *@param offset pointer to offset from caller
8578 dissect_zcl_tun_ack_transfer_data(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8580 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8583 proto_tree_add_item(tree
, hf_zbee_zcl_tun_num_octets_left
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8588 *This function manages the Ready Data payload
8590 *@param tvb pointer to buffer containing raw packet.
8591 *@param tree pointer to data tree Wireshark uses to display packet.
8592 *@param offset pointer to offset from caller
8595 dissect_zcl_tun_ready_data(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8597 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8600 proto_tree_add_item(tree
, hf_zbee_zcl_tun_num_octets_left
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8605 *This function manages the Get Supported Tunnel Protocols payload
8607 *@param tvb pointer to buffer containing raw packet.
8608 *@param tree pointer to data tree Wireshark uses to display packet.
8609 *@param offset pointer to offset from caller
8612 dissect_zcl_tun_get_supported(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8614 proto_tree_add_item(tree
, hf_zbee_zcl_tun_protocol_offset
, tvb
, *offset
, 1, ENC_NA
);
8619 *This function manages the Request Tunnel Response payload
8621 *@param tvb pointer to buffer containing raw packet.
8622 *@param tree pointer to data tree Wireshark uses to display packet.
8623 *@param offset pointer to offset from caller
8626 dissect_zcl_tun_request_tunnel_rsp(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8628 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8631 proto_tree_add_item(tree
, hf_zbee_zcl_tun_transfer_status
, tvb
, *offset
, 1, ENC_NA
);
8634 proto_tree_add_item(tree
, hf_zbee_zcl_tun_max_in_size
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8639 *This function manages the Supported Tunnel Protocols Response payload
8641 *@param tvb pointer to buffer containing raw packet.
8642 *@param tree pointer to data tree Wireshark uses to display packet.
8643 *@param offset pointer to offset from caller
8646 dissect_zcl_tun_get_supported_rsp(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8650 proto_tree_add_item(tree
, hf_zbee_zcl_tun_protocol_list_complete
, tvb
, *offset
, 1, ENC_NA
);
8653 proto_tree_add_item(tree
, hf_zbee_zcl_tun_protocol_count
, tvb
, *offset
, 1, ENC_NA
);
8656 while (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
8657 mfg_code
= tvb_get_letohs(tvb
, *offset
);
8658 if (mfg_code
== 0xFFFF) {
8659 proto_tree_add_uint_format(tree
, hf_zbee_zcl_tun_manufacturer_code
, tvb
, *offset
, 2, mfg_code
, "Standard Protocol (Mfg Code %#x)", mfg_code
);
8662 proto_tree_add_item(tree
, hf_zbee_zcl_tun_manufacturer_code
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8666 proto_tree_add_item(tree
, hf_zbee_zcl_tun_protocol_id
, tvb
, *offset
, 1, ENC_NA
);
8672 *This function manages the Tunnel Closure Notification payload
8674 *@param tvb pointer to buffer containing raw packet.
8675 *@param tree pointer to data tree Wireshark uses to display packet.
8676 *@param offset pointer to offset from caller
8679 dissect_zcl_tun_closure_notify(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
8681 proto_tree_add_item(tree
, hf_zbee_zcl_tun_tunnel_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
8686 *ZigBee ZCL Tunneling cluster dissector for wireshark.
8688 *@param tvb pointer to buffer containing raw packet.
8689 *@param pinfo pointer to packet information fields
8690 *@param tree pointer to data tree Wireshark uses to display packet.
8693 dissect_zbee_zcl_tun(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
8695 proto_tree
*payload_tree
;
8696 zbee_zcl_packet
*zcl
;
8697 unsigned offset
= 0;
8701 /* Reject the packet if data is NULL */
8704 zcl
= (zbee_zcl_packet
*)data
;
8705 cmd_id
= zcl
->cmd_id
;
8707 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
8708 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
8709 /* Append the command name to the info column. */
8710 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
8711 val_to_str_const(cmd_id
, zbee_zcl_tun_srv_rx_cmd_names
, "Unknown Command"),
8714 /* Add the command ID. */
8715 proto_tree_add_uint(tree
, hf_zbee_zcl_tun_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
8717 /* Check is this command has a payload, than add the payload tree */
8718 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
8720 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_tun
, NULL
, "Payload");
8722 /* Call the appropriate command dissector */
8725 case ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL
:
8726 dissect_zcl_tun_request_tunnel(tvb
, payload_tree
, &offset
);
8729 case ZBEE_ZCL_CMD_ID_TUN_CLOSE_TUNNEL
:
8730 dissect_zcl_tun_close_tunnel(tvb
, payload_tree
, &offset
);
8733 case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA
:
8734 dissect_zcl_tun_transfer_data(tvb
, pinfo
, payload_tree
, &offset
);
8737 case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR
:
8738 dissect_zcl_tun_transfer_data_error(tvb
, payload_tree
, &offset
);
8741 case ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA
:
8742 dissect_zcl_tun_ack_transfer_data(tvb
, payload_tree
, &offset
);
8745 case ZBEE_ZCL_CMD_ID_TUN_READY_DATA
:
8746 dissect_zcl_tun_ready_data(tvb
, payload_tree
, &offset
);
8749 case ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS
:
8750 dissect_zcl_tun_get_supported(tvb
, payload_tree
, &offset
);
8758 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
8759 /* Append the command name to the info column. */
8760 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
8761 val_to_str_const(cmd_id
, zbee_zcl_tun_srv_tx_cmd_names
, "Unknown Command"),
8764 /* Add the command ID. */
8765 proto_tree_add_uint(tree
, hf_zbee_zcl_tun_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
8767 /* Check is this command has a payload, than add the payload tree */
8768 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
8770 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_tun
, NULL
, "Payload");
8772 /* Call the appropriate command dissector */
8775 case ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL_RSP
:
8776 dissect_zcl_tun_request_tunnel_rsp(tvb
, payload_tree
, &offset
);
8779 case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_TX
:
8780 dissect_zcl_tun_transfer_data(tvb
, pinfo
, payload_tree
, &offset
);
8783 case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR_TX
:
8784 dissect_zcl_tun_transfer_data_error(tvb
, payload_tree
, &offset
);
8787 case ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA_TX
:
8788 dissect_zcl_tun_ack_transfer_data(tvb
, payload_tree
, &offset
);
8791 case ZBEE_ZCL_CMD_ID_TUN_READY_DATA_TX
:
8792 dissect_zcl_tun_ready_data(tvb
, payload_tree
, &offset
);
8795 case ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS_RSP
:
8796 dissect_zcl_tun_get_supported_rsp(tvb
, payload_tree
, &offset
);
8799 case ZBEE_ZCL_CMD_ID_TUN_CLOSURE_NOTIFY
:
8800 dissect_zcl_tun_closure_notify(tvb
, payload_tree
, &offset
);
8809 return tvb_captured_length(tvb
);
8810 } /*dissect_zbee_zcl_tun*/
8813 *This function registers the ZCL Tunneling dissector
8817 proto_register_zbee_zcl_tun(void)
8819 static hf_register_info hf
[] = {
8821 { &hf_zbee_zcl_tun_attr_id
,
8822 { "Attribute", "zbee_zcl_se.tun.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_tun_attr_names
),
8823 0x0, NULL
, HFILL
} },
8825 { &hf_zbee_zcl_tun_attr_reporting_status
, /* common to all SE clusters */
8826 { "Attribute Reporting Status", "zbee_zcl_se.tun.attr.attr_reporting_status",
8827 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
8829 { &hf_zbee_zcl_tun_attr_close_timeout
,
8830 { "Close Tunnel Timeout", "zbee_zcl_se.tun.attr.close_tunnel", FT_UINT16
, BASE_DEC
, NULL
,
8831 0x0, NULL
, HFILL
} },
8833 { &hf_zbee_zcl_tun_srv_tx_cmd_id
,
8834 { "Command", "zbee_zcl_se.tun.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_tun_srv_tx_cmd_names
),
8835 0x00, NULL
, HFILL
} },
8837 { &hf_zbee_zcl_tun_srv_rx_cmd_id
,
8838 { "Command", "zbee_zcl_se.tun.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_tun_srv_rx_cmd_names
),
8839 0x00, NULL
, HFILL
} },
8841 { &hf_zbee_zcl_tun_protocol_id
,
8842 { "Protocol ID", "zbee_zcl_se.tun.protocol_id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_tun_protocol_names
),
8843 0x00, NULL
, HFILL
} },
8845 { &hf_zbee_zcl_tun_manufacturer_code
,
8846 { "Manufacturer Code", "zbee_zcl_se.tun.manufacturer_code", FT_UINT16
, BASE_HEX
, VALS(zbee_mfr_code_names
),
8847 0x00, NULL
, HFILL
} },
8849 { &hf_zbee_zcl_tun_flow_control_support
,
8850 { "Flow Control Supported", "zbee_zcl_se.tun.flow_control_supported", FT_BOOLEAN
, BASE_NONE
, NULL
,
8851 0x00, NULL
, HFILL
} },
8853 { &hf_zbee_zcl_tun_max_in_size
,
8854 { "Max Incoming Transfer Size", "zbee_zcl_se.tun.max_in_transfer_size", FT_UINT16
, BASE_HEX
, NULL
,
8855 0x00, NULL
, HFILL
} },
8857 { &hf_zbee_zcl_tun_tunnel_id
,
8858 { "Tunnel Id", "zbee_zcl_se.tun.tunnel_id", FT_UINT16
, BASE_HEX
, NULL
,
8859 0x00, NULL
, HFILL
} },
8861 { &hf_zbee_zcl_tun_num_octets_left
,
8862 { "Num Octets Left", "zbee_zcl_se.tun.octets_left", FT_UINT16
, BASE_HEX
, NULL
,
8863 0x00, NULL
, HFILL
} },
8865 { &hf_zbee_zcl_tun_protocol_offset
,
8866 { "Protocol Offset", "zbee_zcl_se.tun.protocol_offset", FT_UINT8
, BASE_HEX
, NULL
,
8867 0x00, NULL
, HFILL
} },
8869 { &hf_zbee_zcl_tun_transfer_status
,
8870 { "Transfer Status", "zbee_zcl_se.tun.transfer_status", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_tun_status_names
),
8871 0x00, NULL
, HFILL
} },
8873 { &hf_zbee_zcl_tun_transfer_data_status
,
8874 { "Transfer Data Status", "zbee_zcl_se.tun.transfer_data_status", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_tun_trans_data_status_names
),
8875 0x00, NULL
, HFILL
} },
8877 { &hf_zbee_zcl_tun_protocol_count
,
8878 { "Protocol Count", "zbee_zcl_se.tun.protocol_count", FT_UINT8
, BASE_HEX
, NULL
,
8879 0x00, NULL
, HFILL
} },
8881 { &hf_zbee_zcl_tun_protocol_list_complete
,
8882 { "List Complete", "zbee_zcl_se.tun.protocol_list_complete", FT_BOOLEAN
, BASE_NONE
, NULL
,
8883 0x00, NULL
, HFILL
} },
8887 /* ZCL Tunneling subtrees */
8892 /* Register the ZigBee ZCL Tunneling cluster protocol name and description */
8893 proto_zbee_zcl_tun
= proto_register_protocol("ZigBee ZCL Tunneling", "ZCL Tunneling", ZBEE_PROTOABBREV_ZCL_TUN
);
8894 proto_register_field_array(proto_zbee_zcl_tun
, hf
, array_length(hf
));
8895 proto_register_subtree_array(ett
, array_length(ett
));
8897 /* Make heuristic dissectors possible */
8898 zbee_zcl_tun_heur_subdissector_list
= register_heur_dissector_list_with_description(ZBEE_PROTOABBREV_ZCL_TUN
, "ZigBee Transfer Data", proto_zbee_zcl_tun
);
8900 /* Register the ZigBee ZCL Tunneling dissector. */
8901 register_dissector(ZBEE_PROTOABBREV_ZCL_TUN
, dissect_zbee_zcl_tun
, proto_zbee_zcl_tun
);
8903 } /* proto_register_zbee_zcl_tun */
8906 *Hands off the ZCL Tunneling dissector.
8910 proto_reg_handoff_zbee_zcl_tun(void)
8912 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_TUN
,
8915 ZBEE_ZCL_CID_TUNNELING
,
8917 hf_zbee_zcl_tun_attr_id
,
8919 hf_zbee_zcl_tun_srv_rx_cmd_id
,
8920 hf_zbee_zcl_tun_srv_tx_cmd_id
,
8921 (zbee_zcl_fn_attr_data
)dissect_zcl_tun_attr_data
8923 } /* proto_reg_handoff_zbee_zcl_tun */
8926 /* ########################################################################## */
8927 /* #### (0x0705) PREPAYMENT CLUSTER ########################################## */
8928 /* ########################################################################## */
8931 #define zbee_zcl_pp_attr_names_VALUE_STRING_LIST(XXX) \
8932 /* Prepayment Information Set */ \
8933 XXX(ZBEE_ZCL_ATTR_ID_PP_PAYMENT_CONTROL_CONFIGURATION, 0x0000, "Payment Control Configuration" ) \
8934 XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_REMAINING, 0x0001, "Credit Remaining" ) \
8935 XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_REMAINING, 0x0002, "Emergency Credit Remaining" ) \
8936 XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_STATUS, 0x0003, "Credit Status" ) \
8937 XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_REMAINING_TIMESTAMP, 0x0004, "Credit Remaining Timestamp" ) \
8938 XXX(ZBEE_ZCL_ATTR_ID_PP_ACCUMULATED_DEBT, 0x0005, "Accumulated Debt" ) \
8939 XXX(ZBEE_ZCL_ATTR_ID_PP_OVERALL_DEBT_CAP, 0x0006, "Overall Debt Cap" ) \
8940 XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_LIMIT, 0x0010, "Emergency Credit Limit / Allowance" ) \
8941 XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_THRESHOLD, 0x0011, "Emergency Credit Threshold" ) \
8942 XXX(ZBEE_ZCL_ATTR_ID_PP_TOTAL_CREDIT_ADDED, 0x0020, "Total Credit Added" ) \
8943 XXX(ZBEE_ZCL_ATTR_ID_PP_MAX_CREDIT_LIMIT, 0x0021, "Max Credit Limit" ) \
8944 XXX(ZBEE_ZCL_ATTR_ID_PP_MAX_CREDIT_PER_TOPUP, 0x0022, "Max Credit Per Top Up" ) \
8945 XXX(ZBEE_ZCL_ATTR_ID_PP_FRIENDLY_CREDIT_WARNING, 0x0030, "Friendly Credit Warning" ) \
8946 XXX(ZBEE_ZCL_ATTR_ID_PP_LOW_CREDIT_WARNING, 0x0031, "Low Credit Warning" ) \
8947 XXX(ZBEE_ZCL_ATTR_ID_PP_IHD_LOW_CREDIT_WARNING, 0x0032, "IHD Low Credit Warning" ) \
8948 XXX(ZBEE_ZCL_ATTR_ID_PP_INTERRUPT_SUSPEND_TIME, 0x0033, "Interrupt Suspend Time" ) \
8949 XXX(ZBEE_ZCL_ATTR_ID_PP_REMAINING_FRIENDLY_CREDIT_TIME, 0x0034, "Remaining Friendly Credit Time" ) \
8950 XXX(ZBEE_ZCL_ATTR_ID_PP_NEXT_FRIENDLY_CREDIT_PERIOD, 0x0035, "Next Friendly Credit Period" ) \
8951 XXX(ZBEE_ZCL_ATTR_ID_PP_CUT_OFF_VALUE, 0x0040, "Cut Off Value" ) \
8952 XXX(ZBEE_ZCL_ATTR_ID_PP_TOKEN_CARRIER_ID, 0x0080, "Token Carrier ID" ) \
8954 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_1, 0x0100, "Top-up Date/time #1" ) \
8955 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_1, 0x0101, "Top-up Amount #1" ) \
8956 XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_1, 0x0102, "Originating Device #1" ) \
8957 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_1, 0x0103, "Top-up Code #1" ) \
8958 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_2, 0x0110, "Top-up Date/time #2" ) \
8959 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_2, 0x0111, "Top-up Amount #2" ) \
8960 XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_2, 0x0112, "Originating Device #2" ) \
8961 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_2, 0x0113, "Top-up Code #2" ) \
8962 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_3, 0x0120, "Top-up Date/time #3" ) \
8963 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_3, 0x0121, "Top-up Amount #3" ) \
8964 XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_3, 0x0122, "Originating Device #3" ) \
8965 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_3, 0x0123, "Top-up Code #3" ) \
8966 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_4, 0x0130, "Top-up Date/time #4" ) \
8967 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_4, 0x0131, "Top-up Amount #4" ) \
8968 XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_4, 0x0132, "Originating Device #4" ) \
8969 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_4, 0x0133, "Top-up Code #4" ) \
8970 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_5, 0x0140, "Top-up Date/time #5" ) \
8971 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_5, 0x0141, "Top-up Amount #5" ) \
8972 XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_5, 0x0142, "Originating Device #5" ) \
8973 XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_5, 0x0143, "Top-up Code #5" ) \
8975 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_1, 0x0210, "Debt Label #1" ) \
8976 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_1, 0x0211, "Debt Amount #1" ) \
8977 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_1, 0x0212, "Debt Recovery Method #1" ) \
8978 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_1, 0x0213, "Debt Recovery Start Time #1" ) \
8979 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_1, 0x0214, "Debt Recovery Collection Time #1" ) \
8980 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_1, 0x0216, "Debt Recovery Frequency #1" ) \
8981 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_1, 0x0217, "Debt Recovery Amount #1" ) \
8982 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1, 0x0219, "Debt Recovery Top Up Percentage #1" ) \
8983 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_2, 0x0220, "Debt Label #2" ) \
8984 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_2, 0x0221, "Debt Amount #2" ) \
8985 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_2, 0x0222, "Debt Recovery Method #2" ) \
8986 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_2, 0x0223, "Debt Recovery Start Time #2" ) \
8987 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_2, 0x0224, "Debt Recovery Collection Time #2" ) \
8988 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_2, 0x0226, "Debt Recovery Frequency #2" ) \
8989 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_2, 0x0227, "Debt Recovery Amount #2" ) \
8990 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2, 0x0229, "Debt Recovery Top Up Percentage #2" ) \
8991 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_3, 0x0230, "Debt Label #3" ) \
8992 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_3, 0x0231, "Debt Amount #3" ) \
8993 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_3, 0x0232, "Debt Recovery Method #3" ) \
8994 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_3, 0x0233, "Debt Recovery Start Time #3" ) \
8995 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_3, 0x0234, "Debt Recovery Collection Time #3" ) \
8996 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_3, 0x0236, "Debt Recovery Frequency #3" ) \
8997 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_3, 0x0237, "Debt Recovery Amount #3" ) \
8998 XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3, 0x0239, "Debt Recovery Top Up Percentage #3" ) \
9000 XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAYMENT_ALARM_STATUS, 0x0400, "Prepayment Alarm Status" ) \
9001 XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_GENERIC_ALARM_MASK, 0x0401, "Prepay Generic Alarm Mask" ) \
9002 XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_SWITCH_ALARM_MASK, 0x0402, "Prepay Switch Alarm Mask" ) \
9003 XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_EVENT_ALARM_MASK, 0x0403, "Prepay Event Alarm Mask" ) \
9004 /* Historical Cost Consumption Information Set */ \
9005 XXX(ZBEE_ZCL_ATTR_ID_PP_HISTORICAL_COST_CON_FORMAT, 0x0500, "Historical Cost Consumption Formatting" ) \
9006 XXX(ZBEE_ZCL_ATTR_ID_PP_CONSUMPTION_UNIT_OF_MEASUREMENT, 0x0501, "Consumption Unit of Measurement" ) \
9007 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENCY_SCALING_FACTOR, 0x0502, "Currency Scaling Factor" ) \
9008 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENCY, 0x0503, "Currency" ) \
9009 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_DAY_COST_CON_DELIVERED, 0x051C, "Current Day Cost Consumption Delivered" ) \
9010 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_DAY_COST_CON_RECEIVED, 0x051D, "Current Day Cost Consumption Received" ) \
9011 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_COST_CON_DELIVERED, 0x051E, "Previous Day Cost Consumption Delivered" ) \
9012 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_COST_CON_RECEIVED, 0x051F, "Previous Day Cost Consumption Received" ) \
9013 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_2_COST_CON_DELIVERED, 0x0520, "Previous Day 2 Cost Consumption Delivered" ) \
9014 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_2_COST_CON_RECEIVED, 0x0521, "Previous Day 2 Cost Consumption Received" ) \
9015 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_3_COST_CON_DELIVERED, 0x0522, "Previous Day 3 Cost Consumption Delivered" ) \
9016 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_3_COST_CON_RECEIVED, 0x0523, "Previous Day 3 Cost Consumption Received" ) \
9017 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_4_COST_CON_DELIVERED, 0x0524, "Previous Day 4 Cost Consumption Delivered" ) \
9018 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_4_COST_CON_RECEIVED, 0x0525, "Previous Day 4 Cost Consumption Received" ) \
9019 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_5_COST_CON_DELIVERED, 0x0526, "Previous Day 5 Cost Consumption Delivered" ) \
9020 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_5_COST_CON_RECEIVED, 0x0527, "Previous Day 5 Cost Consumption Received" ) \
9021 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_6_COST_CON_DELIVERED, 0x0528, "Previous Day 6 Cost Consumption Delivered" ) \
9022 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_6_COST_CON_RECEIVED, 0x0529, "Previous Day 6 Cost Consumption Received" ) \
9023 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_7_COST_CON_DELIVERED, 0x052A, "Previous Day 7 Cost Consumption Delivered" ) \
9024 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_7_COST_CON_RECEIVED, 0x052B, "Previous Day 7 Cost Consumption Received" ) \
9025 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_8_COST_CON_DELIVERED, 0x052C, "Previous Day 8 Cost Consumption Delivered" ) \
9026 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_8_COST_CON_RECEIVED, 0x052D, "Previous Day 8 Cost Consumption Received" ) \
9027 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_WEEK_COST_CON_DELIVERED, 0x0530, "Current Week Cost Consumption Delivered" ) \
9028 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_WEEK_COST_CON_RECEIVED, 0x0531, "Current Week Cost Consumption Received" ) \
9029 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_COST_CON_DELIVERED, 0x0532, "Previous Week Cost Consumption Delivered" ) \
9030 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_COST_CON_RECEIVED, 0x0533, "Previous Week Cost Consumption Received" ) \
9031 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_2_COST_CON_DELIVERED, 0x0534, "Previous Week 2 Cost Consumption Delivered" ) \
9032 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_2_COST_CON_RECEIVED, 0x0535, "Previous Week 2 Cost Consumption Received" ) \
9033 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_3_COST_CON_DELIVERED, 0x0536, "Previous Week 3 Cost Consumption Delivered" ) \
9034 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_3_COST_CON_RECEIVED, 0x0537, "Previous Week 3 Cost Consumption Received" ) \
9035 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_4_COST_CON_DELIVERED, 0x0538, "Previous Week 4 Cost Consumption Delivered" ) \
9036 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_4_COST_CON_RECEIVED, 0x0539, "Previous Week 4 Cost Consumption Received" ) \
9037 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_5_COST_CON_DELIVERED, 0x053A, "Previous Week 5 Cost Consumption Delivered" ) \
9038 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_5_COST_CON_RECEIVED, 0x053B, "Previous Week 5 Cost Consumption Received" ) \
9039 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_MON_COST_CON_DELIVERED, 0x0540, "Current Month Cost Consumption Delivered" ) \
9040 XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_MON_COST_CON_RECEIVED, 0x0541, "Current Month Cost Consumption Received" ) \
9041 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_COST_CON_DELIVERED, 0x0542, "Previous Month Cost Consumption Delivered" ) \
9042 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_COST_CON_RECEIVED, 0x0543, "Previous Month Cost Consumption Received" ) \
9043 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_2_COST_CON_DELIVERED, 0x0544, "Previous Month 2 Cost Consumption Delivered" ) \
9044 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_2_COST_CON_RECEIVED, 0x0545, "Previous Month 2 Cost Consumption Received" ) \
9045 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_3_COST_CON_DELIVERED, 0x0546, "Previous Month 3 Cost Consumption Delivered" ) \
9046 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_3_COST_CON_RECEIVED, 0x0547, "Previous Month 3 Cost Consumption Received" ) \
9047 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_4_COST_CON_DELIVERED, 0x0548, "Previous Month 4 Cost Consumption Delivered" ) \
9048 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_4_COST_CON_RECEIVED, 0x0549, "Previous Month 4 Cost Consumption Received" ) \
9049 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_5_COST_CON_DELIVERED, 0x054A, "Previous Month 5 Cost Consumption Delivered" ) \
9050 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_5_COST_CON_RECEIVED, 0x054B, "Previous Month 5 Cost Consumption Received" ) \
9051 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_6_COST_CON_DELIVERED, 0x054C, "Previous Month 6 Cost Consumption Delivered" ) \
9052 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_6_COST_CON_RECEIVED, 0x054D, "Previous Month 6 Cost Consumption Received" ) \
9053 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_7_COST_CON_DELIVERED, 0x054E, "Previous Month 7 Cost Consumption Delivered" ) \
9054 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_7_COST_CON_RECEIVED, 0x054F, "Previous Month 7 Cost Consumption Received" ) \
9055 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_8_COST_CON_DELIVERED, 0x0550, "Previous Month 8 Cost Consumption Delivered" ) \
9056 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_8_COST_CON_RECEIVED, 0x0551, "Previous Month 8 Cost Consumption Received" ) \
9057 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_9_COST_CON_DELIVERED, 0x0552, "Previous Month 9 Cost Consumption Delivered" ) \
9058 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_9_COST_CON_RECEIVED, 0x0553, "Previous Month 9 Cost Consumption Received" ) \
9059 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_10_COST_CON_DELIVERED, 0x0554, "Previous Month 10 Cost Consumption Delivered" ) \
9060 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_10_COST_CON_RECEIVED, 0x0555, "Previous Month 10 Cost Consumption Received" ) \
9061 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_11_COST_CON_DELIVERED, 0x0556, "Previous Month 11 Cost Consumption Delivered" ) \
9062 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_11_COST_CON_RECEIVED, 0x0557, "Previous Month 11 Cost Consumption Received" ) \
9063 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_12_COST_CON_DELIVERED, 0x0558, "Previous Month 12 Cost Consumption Delivered" ) \
9064 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_12_COST_CON_RECEIVED, 0x0559, "Previous Month 12 Cost Consumption Received" ) \
9065 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_13_COST_CON_DELIVERED, 0x055A, "Previous Month 13 Cost Consumption Delivered" ) \
9066 XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_13_COST_CON_RECEIVED, 0x055B, "Previous Month 13 Cost Consumption Received" ) \
9067 XXX(ZBEE_ZCL_ATTR_ID_PP_HISTORICAL_FREEZE_TIME, 0x055C, "Historical Freeze Time" ) \
9068 /* Smart Energy */ \
9069 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PP, 0xFFFE, "Attribute Reporting Status" )
9071 VALUE_STRING_ENUM(zbee_zcl_pp_attr_names
);
9072 VALUE_STRING_ARRAY(zbee_zcl_pp_attr_names
);
9073 static value_string_ext zbee_zcl_pp_attr_names_ext
= VALUE_STRING_EXT_INIT(zbee_zcl_pp_attr_names
);
9075 /* Server Commands Received */
9076 #define zbee_zcl_pp_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
9077 XXX(ZBEE_ZCL_CMD_ID_PP_SELECT_AVAILABLE_EMERGENCY_CREDIT, 0x00, "Select Available Emergency Credit" ) \
9078 XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_DEBT, 0x02, "Change Debt" ) \
9079 XXX(ZBEE_ZCL_CMD_ID_PP_EMERGENCY_CREDIT_SETUP, 0x03, "Emergency Credit Setup" ) \
9080 XXX(ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP, 0x04, "Consumer Top Up" ) \
9081 XXX(ZBEE_ZCL_CMD_ID_PP_CREDIT_ADJUSTMENT, 0x05, "Credit Adjustment" ) \
9082 XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE, 0x06, "Change Payment Mode" ) \
9083 XXX(ZBEE_ZCL_CMD_ID_PP_GET_PREPAY_SNAPTSHOT, 0x07, "Get Prepay Snapshot" ) \
9084 XXX(ZBEE_ZCL_CMD_ID_PP_GET_TOP_UP_LOG, 0x08, "Get Top Up Log" ) \
9085 XXX(ZBEE_ZCL_CMD_ID_PP_SET_LOW_CREDIT_WARNING_LEVEL, 0x09, "Set Low Credit Warning Level" ) \
9086 XXX(ZBEE_ZCL_CMD_ID_PP_GET_DEBT_REPAYMENT_LOG, 0x0A, "Get Debt Repayment Log" ) \
9087 XXX(ZBEE_ZCL_CMD_ID_PP_SET_MAXIMUM_CREDIT_LIMIT, 0x0B, "Set Maximum Credit Limit" ) \
9088 XXX(ZBEE_ZCL_CMD_ID_PP_SET_OVERALL_DEBT_CAP, 0x0C, "Set Overall Debt Cap" )
9090 VALUE_STRING_ENUM(zbee_zcl_pp_srv_rx_cmd_names
);
9091 VALUE_STRING_ARRAY(zbee_zcl_pp_srv_rx_cmd_names
);
9093 /* Server Commands Generated */
9094 #define zbee_zcl_pp_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
9095 XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_PREPAY_SNAPSHOT, 0x01, "Publish Prepay Snapshot" ) \
9096 XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE_RESPONSE, 0x02, "Change Payment Mode Response" ) \
9097 XXX(ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP_RESPONSE, 0x03, "Consumer Top Up Response" ) \
9098 XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_TOP_UP_LOG, 0x05, "Publish Top Up Log" ) \
9099 XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_DEBT_LOG, 0x06, "Publish Debt Log" )
9101 VALUE_STRING_ENUM(zbee_zcl_pp_srv_tx_cmd_names
);
9102 VALUE_STRING_ARRAY(zbee_zcl_pp_srv_tx_cmd_names
);
9104 /*************************/
9105 /* Function Declarations */
9106 /*************************/
9107 void proto_register_zbee_zcl_pp(void);
9108 void proto_reg_handoff_zbee_zcl_pp(void);
9110 /* Attribute Dissector Helpers */
9111 static void dissect_zcl_pp_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
9113 /* Command Dissector Helpers */
9114 static void dissect_zcl_pp_select_available_emergency_credit (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9115 static void dissect_zcl_pp_change_debt (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9116 static void dissect_zcl_pp_emergency_credit_setup (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9117 static void dissect_zcl_pp_consumer_top_up (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9118 static void dissect_zcl_pp_credit_adjustment (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9119 static void dissect_zcl_pp_change_payment_mode (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9120 static void dissect_zcl_pp_get_prepay_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9121 static void dissect_zcl_pp_get_top_up_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9122 static void dissect_zcl_pp_set_low_credit_warning_level (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9123 static void dissect_zcl_pp_get_debt_repayment_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9124 static void dissect_zcl_pp_set_maximum_credit_limit (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9125 static void dissect_zcl_pp_set_overall_debt_cap (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9126 static void dissect_zcl_pp_publish_prepay_snapshot (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9127 static void dissect_zcl_pp_change_payment_mode_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9128 static void dissect_zcl_pp_consumer_top_up_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9129 static void dissect_zcl_pp_publish_top_up_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9130 static void dissect_zcl_pp_publish_debt_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
9132 /*************************/
9133 /* Global Variables */
9134 /*************************/
9136 /* Initialize the protocol and registered fields */
9137 static int proto_zbee_zcl_pp
;
9139 static int hf_zbee_zcl_pp_srv_tx_cmd_id
;
9140 static int hf_zbee_zcl_pp_srv_rx_cmd_id
;
9141 static int hf_zbee_zcl_pp_attr_id
;
9142 static int hf_zbee_zcl_pp_attr_reporting_status
;
9143 static int hf_zbee_zcl_pp_select_available_emc_cmd_issue_date_time
;
9144 static int hf_zbee_zcl_pp_select_available_emc_originating_device
;
9145 static int hf_zbee_zcl_pp_change_debt_issuer_event_id
;
9146 static int hf_zbee_zcl_pp_change_debt_label
;
9147 static int hf_zbee_zcl_pp_change_debt_amount
;
9148 static int hf_zbee_zcl_pp_change_debt_recovery_method
;
9149 static int hf_zbee_zcl_pp_change_debt_amount_type
;
9150 static int hf_zbee_zcl_pp_change_debt_recovery_start_time
;
9151 static int hf_zbee_zcl_pp_change_debt_recovery_collection_time
;
9152 static int hf_zbee_zcl_pp_change_debt_recovery_frequency
;
9153 static int hf_zbee_zcl_pp_change_debt_recovery_amount
;
9154 static int hf_zbee_zcl_pp_change_debt_recovery_balance_percentage
;
9155 static int hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id
;
9156 static int hf_zbee_zcl_pp_emergency_credit_setup_start_time
;
9157 static int hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit
;
9158 static int hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold
;
9159 static int hf_zbee_zcl_pp_consumer_top_up_originating_device
;
9160 static int hf_zbee_zcl_pp_consumer_top_up_top_up_code
;
9161 static int hf_zbee_zcl_pp_credit_adjustment_issuer_event_id
;
9162 static int hf_zbee_zcl_pp_credit_adjustment_start_time
;
9163 static int hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type
;
9164 static int hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value
;
9165 static int hf_zbee_zcl_pp_change_payment_mode_provider_id
;
9166 static int hf_zbee_zcl_pp_change_payment_mode_issuer_event_id
;
9167 static int hf_zbee_zcl_pp_change_payment_mode_implementation_date_time
;
9168 static int hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration
;
9169 static int hf_zbee_zcl_pp_change_payment_mode_cut_off_value
;
9170 static int hf_zbee_zcl_pp_get_prepay_snapshot_earliest_start_time
;
9171 static int hf_zbee_zcl_pp_get_prepay_snapshot_latest_end_time
;
9172 static int hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset
;
9173 static int hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause
;
9174 static int hf_zbee_zcl_pp_get_top_up_log_latest_end_time
;
9175 static int hf_zbee_zcl_pp_get_top_up_log_number_of_records
;
9176 static int hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level
;
9177 static int hf_zbee_zcl_pp_get_debt_repayment_log_latest_end_time
;
9178 static int hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts
;
9179 static int hf_zbee_zcl_pp_get_debt_repayment_log_debt_type
;
9180 static int hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id
;
9181 static int hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id
;
9182 static int hf_zbee_zcl_pp_set_maximum_credit_limit_implementation_date_time
;
9183 static int hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level
;
9184 static int hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up
;
9185 static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id
;
9186 static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id
;
9187 static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_implementation_date_time
;
9188 static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap
;
9189 static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id
;
9190 static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time
;
9191 static int hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found
;
9192 static int hf_zbee_zcl_pp_publish_prepay_snapshot_command_index
;
9193 static int hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands
;
9194 static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause
;
9195 static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type
;
9196 static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload
;
9197 static int hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit
;
9198 static int hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id
;
9199 static int hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit
;
9200 static int hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold
;
9201 static int hf_zbee_zcl_pp_consumer_top_up_response_result_type
;
9202 static int hf_zbee_zcl_pp_consumer_top_up_response_top_up_value
;
9203 static int hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up
;
9204 static int hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining
;
9205 static int hf_zbee_zcl_pp_publish_top_up_log_command_index
;
9206 static int hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands
;
9207 static int hf_zbee_zcl_pp_publish_top_up_log_top_up_code
;
9208 static int hf_zbee_zcl_pp_publish_top_up_log_top_up_amount
;
9209 static int hf_zbee_zcl_pp_publish_top_up_log_top_up_time
;
9210 static int hf_zbee_zcl_pp_publish_debt_log_command_index
;
9211 static int hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands
;
9212 static int hf_zbee_zcl_pp_publish_debt_log_collection_time
;
9213 static int hf_zbee_zcl_pp_publish_debt_log_amount_collected
;
9214 static int hf_zbee_zcl_pp_publish_debt_log_debt_type
;
9215 static int hf_zbee_zcl_pp_publish_debt_log_outstanding_debt
;
9216 static int hf_zbee_zcl_pp_payment_control_configuration
;
9217 static int hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled
;
9218 static int hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled
;
9219 static int hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled
;
9220 static int hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled
;
9221 static int hf_zbee_zcl_pp_payment_control_configuration_account_base
;
9222 static int hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted
;
9223 static int hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration
;
9224 static int hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration
;
9225 static int hf_zbee_zcl_pp_payment_control_configuration_debt_configuration
;
9226 static int hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration
;
9227 static int hf_zbee_zcl_pp_payment_control_configuration_reserved
;
9228 static int hf_zbee_zcl_pp_snapshot_payload_cause_general
;
9229 static int hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period
;
9230 static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information
;
9231 static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix
;
9232 static int hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client
;
9233 static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy
;
9234 static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier
;
9235 static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode
;
9236 static int hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition
;
9237 static int hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition
;
9238 static int hf_zbee_zcl_pp_snapshot_payload_cause_reserved
;
9240 static int* const zbee_zcl_pp_payment_control_configuration_flags
[] = {
9241 &hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled
,
9242 &hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled
,
9243 &hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled
,
9244 &hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled
,
9245 &hf_zbee_zcl_pp_payment_control_configuration_account_base
,
9246 &hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted
,
9247 &hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration
,
9248 &hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration
,
9249 &hf_zbee_zcl_pp_payment_control_configuration_debt_configuration
,
9250 &hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration
,
9251 &hf_zbee_zcl_pp_payment_control_configuration_reserved
,
9255 static int* const zbee_zcl_pp_snapshot_payload_cause_flags
[] = {
9256 &hf_zbee_zcl_pp_snapshot_payload_cause_general
,
9257 &hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period
,
9258 &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information
,
9259 &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix
,
9260 &hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client
,
9261 &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy
,
9262 &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier
,
9263 &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode
,
9264 &hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition
,
9265 &hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition
,
9266 &hf_zbee_zcl_pp_snapshot_payload_cause_reserved
,
9270 /* Initialize the subtree pointers */
9271 #define ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT 3
9272 #define ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT 30
9273 #define ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT 30
9274 #define ZBEE_ZCL_SE_PP_NUM_TOTAL_ETT (ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT + \
9275 ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT + \
9276 ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT)
9278 static int ett_zbee_zcl_pp
;
9279 static int ett_zbee_zcl_pp_payment_control_configuration
;
9280 static int ett_zbee_zcl_pp_snapshot_payload_cause
;
9281 static int ett_zbee_zcl_pp_publish_top_up_entry
[ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT
];
9282 static int ett_zbee_zcl_pp_publish_debt_log_entry
[ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT
];
9284 /*************************/
9285 /* Function Bodies */
9286 /*************************/
9289 *This function is called by ZCL foundation dissector in order to decode
9291 *@param tree pointer to data tree Wireshark uses to display packet.
9292 *@param tvb pointer to buffer containing raw packet.
9293 *@param offset pointer to buffer offset
9294 *@param attr_id attribute identifier
9295 *@param data_type attribute data type
9296 *@param client_attr ZCL client
9299 dissect_zcl_pp_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
9302 /* applies to all SE clusters */
9303 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PP
:
9304 proto_tree_add_item(tree
, hf_zbee_zcl_pp_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
9307 case ZBEE_ZCL_ATTR_ID_PP_PAYMENT_CONTROL_CONFIGURATION
:
9308 proto_item_append_text(tree
, ", Payment Control Configuration");
9309 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_pp_payment_control_configuration
,
9310 ett_zbee_zcl_pp_payment_control_configuration
, zbee_zcl_pp_payment_control_configuration_flags
, ENC_LITTLE_ENDIAN
);
9313 default: /* Catch all */
9314 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
9317 } /*dissect_zcl_pp_attr_data*/
9320 *ZigBee ZCL Prepayment cluster dissector for wireshark.
9322 *@param tvb pointer to buffer containing raw packet.
9323 *@param pinfo pointer to packet information fields
9324 *@param tree pointer to data tree Wireshark uses to display packet.
9327 dissect_zbee_zcl_pp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
9329 proto_tree
*payload_tree
;
9330 zbee_zcl_packet
*zcl
;
9331 unsigned offset
= 0;
9335 /* Reject the packet if data is NULL */
9338 zcl
= (zbee_zcl_packet
*)data
;
9339 cmd_id
= zcl
->cmd_id
;
9341 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
9342 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
9343 /* Append the command name to the info column. */
9344 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
9345 val_to_str_const(cmd_id
, zbee_zcl_pp_srv_rx_cmd_names
, "Unknown Command"),
9348 /* Add the command ID. */
9349 proto_tree_add_uint(tree
, hf_zbee_zcl_pp_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
9351 /* Check is this command has a payload, than add the payload tree */
9352 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
9354 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_pp
, NULL
, "Payload");
9356 /* Call the appropriate command dissector */
9359 case ZBEE_ZCL_CMD_ID_PP_SELECT_AVAILABLE_EMERGENCY_CREDIT
:
9360 dissect_zcl_pp_select_available_emergency_credit(tvb
, payload_tree
, &offset
);
9363 case ZBEE_ZCL_CMD_ID_PP_CHANGE_DEBT
:
9364 dissect_zcl_pp_change_debt(tvb
, payload_tree
, &offset
);
9367 case ZBEE_ZCL_CMD_ID_PP_EMERGENCY_CREDIT_SETUP
:
9368 dissect_zcl_pp_emergency_credit_setup(tvb
, payload_tree
, &offset
);
9371 case ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP
:
9372 dissect_zcl_pp_consumer_top_up(tvb
, payload_tree
, &offset
);
9375 case ZBEE_ZCL_CMD_ID_PP_CREDIT_ADJUSTMENT
:
9376 dissect_zcl_pp_credit_adjustment(tvb
, payload_tree
, &offset
);
9379 case ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE
:
9380 dissect_zcl_pp_change_payment_mode(tvb
, payload_tree
, &offset
);
9383 case ZBEE_ZCL_CMD_ID_PP_GET_PREPAY_SNAPTSHOT
:
9384 dissect_zcl_pp_get_prepay_snapshot(tvb
, payload_tree
, &offset
);
9387 case ZBEE_ZCL_CMD_ID_PP_GET_TOP_UP_LOG
:
9388 dissect_zcl_pp_get_top_up_log(tvb
, payload_tree
, &offset
);
9391 case ZBEE_ZCL_CMD_ID_PP_SET_LOW_CREDIT_WARNING_LEVEL
:
9392 dissect_zcl_pp_set_low_credit_warning_level(tvb
, payload_tree
, &offset
);
9395 case ZBEE_ZCL_CMD_ID_PP_GET_DEBT_REPAYMENT_LOG
:
9396 dissect_zcl_pp_get_debt_repayment_log(tvb
, payload_tree
, &offset
);
9399 case ZBEE_ZCL_CMD_ID_PP_SET_MAXIMUM_CREDIT_LIMIT
:
9400 dissect_zcl_pp_set_maximum_credit_limit(tvb
, payload_tree
, &offset
);
9403 case ZBEE_ZCL_CMD_ID_PP_SET_OVERALL_DEBT_CAP
:
9404 dissect_zcl_pp_set_overall_debt_cap(tvb
, payload_tree
, &offset
);
9412 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
9413 /* Append the command name to the info column. */
9414 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
9415 val_to_str_const(cmd_id
, zbee_zcl_pp_srv_tx_cmd_names
, "Unknown Command"),
9418 /* Add the command ID. */
9419 proto_tree_add_uint(tree
, hf_zbee_zcl_pp_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
9421 /* Check is this command has a payload, than add the payload tree */
9422 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
9424 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_pp
, NULL
, "Payload");
9426 /* Call the appropriate command dissector */
9429 case ZBEE_ZCL_CMD_ID_PP_PUBLISH_PREPAY_SNAPSHOT
:
9430 dissect_zcl_pp_publish_prepay_snapshot(tvb
, payload_tree
, &offset
);
9433 case ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE_RESPONSE
:
9434 dissect_zcl_pp_change_payment_mode_response(tvb
, payload_tree
, &offset
);
9437 case ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP_RESPONSE
:
9438 dissect_zcl_pp_consumer_top_up_response(tvb
, payload_tree
, &offset
);
9441 case ZBEE_ZCL_CMD_ID_PP_PUBLISH_TOP_UP_LOG
:
9442 dissect_zcl_pp_publish_top_up_log(tvb
, payload_tree
, &offset
);
9445 case ZBEE_ZCL_CMD_ID_PP_PUBLISH_DEBT_LOG
:
9446 dissect_zcl_pp_publish_debt_log(tvb
, payload_tree
, &offset
);
9455 return tvb_captured_length(tvb
);
9456 } /*dissect_zbee_zcl_pp*/
9459 *This function manages the Select Available Emergency Credit payload
9461 *@param tvb pointer to buffer containing raw packet.
9462 *@param tree pointer to data tree Wireshark uses to display packet.
9463 *@param offset pointer to offset from caller
9466 dissect_zcl_pp_select_available_emergency_credit(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9468 /* Command Issue Date/Time */
9469 proto_tree_add_item(tree
, hf_zbee_zcl_pp_select_available_emc_cmd_issue_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9472 /* Originating Device */
9473 proto_tree_add_item(tree
, hf_zbee_zcl_pp_select_available_emc_originating_device
, tvb
, *offset
, 1, ENC_NA
);
9475 } /*dissect_zcl_pp_select_available_emergency_credit*/
9478 *This function manages the Change Debt payload
9480 *@param tvb pointer to buffer containing raw packet.
9481 *@param tree pointer to data tree Wireshark uses to display packet.
9482 *@param offset pointer to offset from caller
9485 dissect_zcl_pp_change_debt(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9487 uint8_t label_length
;
9489 /* Issuer Event ID */
9490 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9494 label_length
= tvb_get_uint8(tvb
, *offset
) + 1;
9495 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_label
, tvb
, *offset
, label_length
, ENC_NA
);
9496 *offset
+= label_length
;
9499 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_amount
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9502 /* Debt Recovery Method */
9503 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_method
, tvb
, *offset
, 1, ENC_NA
);
9506 /* Debt Amount Type */
9507 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_amount_type
, tvb
, *offset
, 1, ENC_NA
);
9510 /* Debt Recovery Start Time */
9511 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9514 /* Debt Recovery Collection Time */
9515 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_collection_time
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
9518 /* Debt Recovery Frequency */
9519 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_frequency
, tvb
, *offset
, 1, ENC_NA
);
9522 /* Debt Recovery Amount */
9523 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_amount
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9526 /* Debt Recovery Balance Percentage */
9527 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_debt_recovery_balance_percentage
, tvb
, *offset
, 1, ENC_NA
);
9529 } /*dissect_zcl_pp_change_debt*/
9532 *This function manages the Select Available Emergency Credit payload
9534 *@param tvb pointer to buffer containing raw packet.
9535 *@param tree pointer to data tree Wireshark uses to display packet.
9536 *@param offset pointer to offset from caller
9539 dissect_zcl_pp_emergency_credit_setup(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9541 /* Issuer Event ID */
9542 proto_tree_add_item(tree
, hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9546 proto_tree_add_item(tree
, hf_zbee_zcl_pp_emergency_credit_setup_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9549 /* Emergency Credit Limit */
9550 proto_tree_add_item(tree
, hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9553 /* Emergency Credit Threshold */
9554 proto_tree_add_item(tree
, hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9556 } /*dissect_zcl_pp_emergency_credit_setup*/
9559 *This function manages the Consumer Top Up payload
9561 *@param tvb pointer to buffer containing raw packet.
9562 *@param tree pointer to data tree Wireshark uses to display packet.
9563 *@param offset pointer to offset from caller
9566 dissect_zcl_pp_consumer_top_up(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9570 /* Originating Device */
9571 proto_tree_add_item(tree
, hf_zbee_zcl_pp_consumer_top_up_originating_device
, tvb
, *offset
, 1, ENC_NA
);
9575 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_pp_consumer_top_up_top_up_code
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
9577 } /*dissect_zcl_pp_consumer_top_up*/
9580 *This function manages the Credit Adjustment payload
9582 *@param tvb pointer to buffer containing raw packet.
9583 *@param tree pointer to data tree Wireshark uses to display packet.
9584 *@param offset pointer to offset from caller
9587 dissect_zcl_pp_credit_adjustment(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9589 /* Issuer Event ID */
9590 proto_tree_add_item(tree
, hf_zbee_zcl_pp_credit_adjustment_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9594 proto_tree_add_item(tree
, hf_zbee_zcl_pp_credit_adjustment_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9597 /* Credit Adjustment Type */
9598 proto_tree_add_item(tree
, hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type
, tvb
, *offset
, 1, ENC_NA
);
9601 /* Credit Adjustment Value */
9602 proto_tree_add_item(tree
, hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9604 } /*dissect_zcl_pp_credit_adjustment*/
9607 *This function manages the Change Payment Mode payload
9609 *@param tvb pointer to buffer containing raw packet.
9610 *@param tree pointer to data tree Wireshark uses to display packet.
9611 *@param offset pointer to offset from caller
9614 dissect_zcl_pp_change_payment_mode(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9617 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9620 /* Issuer Event ID */
9621 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9624 /* Implementation Date/Time */
9625 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_implementation_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9628 /* Proposed Payment Control Configuration */
9629 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration
,
9630 ett_zbee_zcl_pp_payment_control_configuration
, zbee_zcl_pp_payment_control_configuration_flags
, ENC_LITTLE_ENDIAN
);
9634 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_cut_off_value
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9636 } /*dissect_zcl_pp_change_payment_mode*/
9639 *This function manages the Get Prepay Snapshot payload
9641 *@param tvb pointer to buffer containing raw packet.
9642 *@param tree pointer to data tree Wireshark uses to display packet.
9643 *@param offset pointer to offset from caller
9646 dissect_zcl_pp_get_prepay_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9648 /* Earliest Start Time */
9649 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_prepay_snapshot_earliest_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9652 /* Latest End Time */
9653 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_prepay_snapshot_latest_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9656 /* Snapshot Offset */
9657 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset
, tvb
, *offset
, 1, ENC_NA
);
9660 /* Snapshot Cause */
9661 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause
,
9662 ett_zbee_zcl_pp_snapshot_payload_cause
, zbee_zcl_pp_snapshot_payload_cause_flags
, ENC_LITTLE_ENDIAN
);
9664 } /*dissect_zcl_pp_get_prepay_snapshot*/
9667 *This function manages the Get Top Up Log payload
9669 *@param tvb pointer to buffer containing raw packet.
9670 *@param tree pointer to data tree Wireshark uses to display packet.
9671 *@param offset pointer to offset from caller
9674 dissect_zcl_pp_get_top_up_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9676 /* Latest End Time */
9677 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_top_up_log_latest_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9680 /* Number of Records */
9681 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_top_up_log_number_of_records
, tvb
, *offset
, 1, ENC_NA
);
9683 } /*dissect_zcl_pp_get_top_up_log*/
9686 *This function manages the Set Low Credit Warning Level payload
9688 *@param tvb pointer to buffer containing raw packet.
9689 *@param tree pointer to data tree Wireshark uses to display packet.
9690 *@param offset pointer to offset from caller
9693 dissect_zcl_pp_set_low_credit_warning_level(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9695 /* Low Credit Warning Level */
9696 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9698 } /*dissect_zcl_pp_set_low_credit_warning_level*/
9701 *This function manages the Get Debt Repayment Log payload
9703 *@param tvb pointer to buffer containing raw packet.
9704 *@param tree pointer to data tree Wireshark uses to display packet.
9705 *@param offset pointer to offset from caller
9708 dissect_zcl_pp_get_debt_repayment_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9710 /* Latest End Time */
9711 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_debt_repayment_log_latest_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9714 /* Number of Records */
9715 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts
, tvb
, *offset
, 1, ENC_NA
);
9719 proto_tree_add_item(tree
, hf_zbee_zcl_pp_get_debt_repayment_log_debt_type
, tvb
, *offset
, 1, ENC_NA
);
9721 } /*dissect_zcl_pp_get_debt_repayment_log*/
9724 *This function manages the Set Maximum Credit Limit payload
9726 *@param tvb pointer to buffer containing raw packet.
9727 *@param tree pointer to data tree Wireshark uses to display packet.
9728 *@param offset pointer to offset from caller
9731 dissect_zcl_pp_set_maximum_credit_limit(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9734 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9737 /* Issuer Event ID */
9738 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9741 /* Implementation Date/Time */
9742 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_maximum_credit_limit_implementation_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9745 /* Maximum Credit Level */
9746 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9749 /* Maximum Credit Per Top Up */
9750 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9752 } /*dissect_zcl_pp_set_maximum_credit_limit*/
9755 *This function manages the Set Overall Debt Cap payload
9757 *@param tvb pointer to buffer containing raw packet.
9758 *@param tree pointer to data tree Wireshark uses to display packet.
9759 *@param offset pointer to offset from caller
9762 dissect_zcl_pp_set_overall_debt_cap(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9765 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9768 /* Issuer Event ID */
9769 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9772 /* Implementation Date/Time */
9773 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_overall_debt_cap_limit_implementation_date_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9776 /* Overall Debt Cap */
9777 proto_tree_add_item(tree
, hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9779 } /*dissect_zcl_pp_set_overall_debt_cap*/
9782 *This function manages the Publish Prepay Snapshot payload
9784 *@param tvb pointer to buffer containing raw packet.
9785 *@param tree pointer to data tree Wireshark uses to display packet.
9786 *@param offset pointer to offset from caller
9789 dissect_zcl_pp_publish_prepay_snapshot(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9794 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9798 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9801 /* Total Snapshots Found */
9802 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found
, tvb
, *offset
, 1, ENC_NA
);
9806 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_command_index
, tvb
, *offset
, 1, ENC_NA
);
9809 /* Total Number of Commands */
9810 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
9813 /* Snapshot Cause */
9814 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause
,
9815 ett_zbee_zcl_pp_snapshot_payload_cause
, zbee_zcl_pp_snapshot_payload_cause_flags
, ENC_LITTLE_ENDIAN
);
9818 /* Snapshot Payload Type */
9819 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type
, tvb
, *offset
, 1, ENC_NA
);
9822 /* Snapshot Payload */
9823 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
9824 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload
, tvb
, *offset
, rem_len
, ENC_NA
);
9826 } /*dissect_zcl_pp_publish_prepay_snapshot*/
9829 *This function manages the Change Payment Mode Response payload
9831 *@param tvb pointer to buffer containing raw packet.
9832 *@param tree pointer to data tree Wireshark uses to display packet.
9833 *@param offset pointer to offset from caller
9836 dissect_zcl_pp_change_payment_mode_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9838 /* Friendly Credit */
9839 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit
, tvb
, *offset
, 1, ENC_NA
);
9842 /* Friendly Credit Calendar ID */
9843 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9846 /* Emergency Credit Limit */
9847 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9850 /* Emergency Credit Threshold */
9851 proto_tree_add_item(tree
, hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9853 } /*dissect_zcl_pp_change_payment_mode_response*/
9856 *This function manages the Consumer Top Up Response payload
9858 *@param tvb pointer to buffer containing raw packet.
9859 *@param tree pointer to data tree Wireshark uses to display packet.
9860 *@param offset pointer to offset from caller
9863 dissect_zcl_pp_consumer_top_up_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9866 proto_tree_add_item(tree
, hf_zbee_zcl_pp_consumer_top_up_response_result_type
, tvb
, *offset
, 1, ENC_NA
);
9870 proto_tree_add_item(tree
, hf_zbee_zcl_pp_consumer_top_up_response_top_up_value
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9873 /* Source of Top up */
9874 proto_tree_add_item(tree
, hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up
, tvb
, *offset
, 1, ENC_NA
);
9877 /* Credit Remaining */
9878 proto_tree_add_item(tree
, hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9880 } /*dissect_zcl_pp_consumer_top_up_response*/
9883 *This function manages the Publish Top Up Log payload
9885 *@param tvb pointer to buffer containing raw packet.
9886 *@param tree pointer to data tree Wireshark uses to display packet.
9887 *@param offset pointer to offset from caller
9890 dissect_zcl_pp_publish_top_up_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9894 proto_tree
*sub_tree
;
9897 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_top_up_log_command_index
, tvb
, *offset
, 1, ENC_NA
);
9900 /* Total Number of Commands */
9901 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
9904 /* Top Up Payload */
9905 while (tvb_reported_length_remaining(tvb
, *offset
) > 0 && i
< ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT
) {
9907 sub_tree
= proto_tree_add_subtree_format(tree
, tvb
, *offset
, 0, ett_zbee_zcl_pp_publish_top_up_entry
[i
], NULL
, "TopUp Log %d", i
+ 1);
9911 proto_tree_add_item_ret_length(sub_tree
, hf_zbee_zcl_pp_publish_top_up_log_top_up_code
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
9915 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_top_up_log_top_up_amount
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9919 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_top_up_log_top_up_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9922 /* Set length of subtree */
9923 proto_item_set_end(proto_tree_get_parent(sub_tree
), tvb
, *offset
);
9925 } /*dissect_zcl_pp_publish_top_up_log*/
9928 *This function manages the Publish Debt Log payload
9930 *@param tvb pointer to buffer containing raw packet.
9931 *@param tree pointer to data tree Wireshark uses to display packet.
9932 *@param offset pointer to offset from caller
9935 dissect_zcl_pp_publish_debt_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
9938 proto_tree
*sub_tree
;
9941 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_debt_log_command_index
, tvb
, *offset
, 1, ENC_NA
);
9944 /* Total Number of Commands */
9945 proto_tree_add_item(tree
, hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
9949 while (tvb_reported_length_remaining(tvb
, *offset
) > 0 && i
< ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT
) {
9951 sub_tree
= proto_tree_add_subtree_format(tree
, tvb
, *offset
, 4 + 4 + 1 + 4, ett_zbee_zcl_pp_publish_debt_log_entry
[i
], NULL
, "Debt Log %d", i
+ 1);
9954 /* Collection Time */
9955 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_debt_log_collection_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
9958 /* Amount Collected */
9959 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_debt_log_amount_collected
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9963 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_debt_log_debt_type
, tvb
, *offset
, 1, ENC_NA
);
9966 /* Outstanding Debt */
9967 proto_tree_add_item(sub_tree
, hf_zbee_zcl_pp_publish_debt_log_outstanding_debt
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
9970 } /*dissect_zcl_pp_publish_debt_log*/
9973 *This function registers the ZCL Prepayment dissector
9977 proto_register_zbee_zcl_pp(void)
9979 static hf_register_info hf
[] = {
9981 { &hf_zbee_zcl_pp_attr_id
,
9982 { "Attribute", "zbee_zcl_se.pp.attr_id", FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &zbee_zcl_pp_attr_names_ext
,
9983 0x0, NULL
, HFILL
} },
9985 { &hf_zbee_zcl_pp_attr_reporting_status
, /* common to all SE clusters */
9986 { "Attribute Reporting Status", "zbee_zcl_se.pp.attr.attr_reporting_status",
9987 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
9989 { &hf_zbee_zcl_pp_srv_tx_cmd_id
,
9990 { "Command", "zbee_zcl_se.pp.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_pp_srv_tx_cmd_names
),
9991 0x00, NULL
, HFILL
} },
9993 { &hf_zbee_zcl_pp_srv_rx_cmd_id
,
9994 { "Command", "zbee_zcl_se.pp.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_pp_srv_rx_cmd_names
),
9995 0x00, NULL
, HFILL
} },
9997 { &hf_zbee_zcl_pp_select_available_emc_cmd_issue_date_time
,
9998 { "Command Issue Date/Time", "zbee_zcl_se.pp.select_available_emc.cmd_issue_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
9999 0x00, NULL
, HFILL
} },
10001 { &hf_zbee_zcl_pp_select_available_emc_originating_device
,
10002 { "Originating Device", "zbee_zcl_se.pp.select_available_emc.originating_device", FT_UINT8
, BASE_DEC
, NULL
,
10003 0x00, NULL
, HFILL
} },
10005 { &hf_zbee_zcl_pp_change_debt_issuer_event_id
,
10006 { "Issuer Event ID", "zbee_zcl_se.pp.change_debt.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10007 0x00, NULL
, HFILL
} },
10009 { &hf_zbee_zcl_pp_change_debt_label
,
10010 { "Debt Label", "zbee_zcl_se.pp.change_debt.debt_label", FT_BYTES
, BASE_NONE
, NULL
,
10011 0x00, NULL
, HFILL
} },
10013 { &hf_zbee_zcl_pp_change_debt_amount
,
10014 { "Debt Amount", "zbee_zcl_se.pp.change_debt.debt_amount", FT_INT32
, BASE_DEC
, NULL
,
10015 0x00, NULL
, HFILL
} },
10017 { &hf_zbee_zcl_pp_change_debt_recovery_method
,
10018 { "Debt Recovery Method", "zbee_zcl_se.pp.change_debt.recovery_method", FT_UINT8
, BASE_DEC
, NULL
,
10019 0x00, NULL
, HFILL
} },
10021 { &hf_zbee_zcl_pp_change_debt_amount_type
,
10022 { "Debt Amount Type", "zbee_zcl_se.pp.change_debt.amount_type", FT_UINT8
, BASE_DEC
, NULL
,
10023 0x00, NULL
, HFILL
} },
10025 { &hf_zbee_zcl_pp_change_debt_recovery_start_time
,
10026 { "Debt Recovery Start Time", "zbee_zcl_se.pp.change_debt.recovery_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10027 0x00, NULL
, HFILL
} },
10029 { &hf_zbee_zcl_pp_change_debt_recovery_collection_time
,
10030 { "Debt Recovery Collection Time", "zbee_zcl_se.pp.change_debt.recovery_collection_time", FT_UINT16
, BASE_DEC
, NULL
,
10031 0x00, NULL
, HFILL
} },
10033 { &hf_zbee_zcl_pp_change_debt_recovery_frequency
,
10034 { "Debt Recovery Frequency", "zbee_zcl_se.pp.change_debt.recovery_frequency", FT_UINT8
, BASE_DEC
, NULL
,
10035 0x00, NULL
, HFILL
} },
10037 { &hf_zbee_zcl_pp_change_debt_recovery_amount
,
10038 { "Debt Recovery Amount", "zbee_zcl_se.pp.change_debt.recovery_amount", FT_INT32
, BASE_DEC
, NULL
,
10039 0x00, NULL
, HFILL
} },
10041 { &hf_zbee_zcl_pp_change_debt_recovery_balance_percentage
,
10042 { "Debt Recovery Balance Percentage", "zbee_zcl_se.pp.change_debt.recovery_balance_percentage", FT_UINT16
, BASE_DEC
, NULL
,
10043 0x00, NULL
, HFILL
} },
10045 { &hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id
,
10046 { "Issuer Event ID", "zbee_zcl_se.pp.emc_setup.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10047 0x00, NULL
, HFILL
} },
10049 { &hf_zbee_zcl_pp_emergency_credit_setup_start_time
,
10050 { "Start Time", "zbee_zcl_se.pp.emc_setup.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10051 0x00, NULL
, HFILL
} },
10053 { &hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit
,
10054 { "Emergency Credit Limit", "zbee_zcl_se.pp.emc_setup.emc_limit", FT_UINT32
, BASE_DEC
, NULL
,
10055 0x00, NULL
, HFILL
} },
10057 { &hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold
,
10058 { "Emergency Credit Threshold", "zbee_zcl_se.pp.emc_setup.emc_threshold", FT_UINT32
, BASE_DEC
, NULL
,
10059 0x00, NULL
, HFILL
} },
10061 { &hf_zbee_zcl_pp_consumer_top_up_originating_device
,
10062 { "Originating Device", "zbee_zcl_se.pp.consumer_top_up.originating_device", FT_UINT8
, BASE_DEC
, NULL
,
10063 0x00, NULL
, HFILL
} },
10065 { &hf_zbee_zcl_pp_consumer_top_up_top_up_code
,
10066 { "TopUp Code", "zbee_zcl_se.pp.consumer_top_up.top_up_code", FT_UINT_BYTES
, SEP_COLON
, NULL
,
10067 0x00, NULL
, HFILL
} },
10069 { &hf_zbee_zcl_pp_credit_adjustment_issuer_event_id
,
10070 { "Issuer Event ID", "zbee_zcl_se.pp.credit_adjustment.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10071 0x00, NULL
, HFILL
} },
10073 { &hf_zbee_zcl_pp_credit_adjustment_start_time
,
10074 { "Start Time", "zbee_zcl_se.pp.credit_adjustment.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10075 0x00, NULL
, HFILL
} },
10077 { &hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type
,
10078 { "Credit Adjustment Type", "zbee_zcl_se.pp.credit_adjustment.credit_adjustment_type", FT_UINT8
, BASE_DEC
, NULL
,
10079 0x00, NULL
, HFILL
} },
10081 { &hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value
,
10082 { "Credit Adjustment Value", "zbee_zcl_se.pp.credit_adjustment.credit_adjustment_value", FT_INT32
, BASE_DEC
, NULL
,
10083 0x00, NULL
, HFILL
} },
10085 { &hf_zbee_zcl_pp_change_payment_mode_provider_id
,
10086 { "Provider ID", "zbee_zcl_se.pp.change_payment_mode.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
10087 0x00, NULL
, HFILL
} },
10089 { &hf_zbee_zcl_pp_change_payment_mode_issuer_event_id
,
10090 { "Issuer Event ID", "zbee_zcl_se.pp.change_payment_mode.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10091 0x00, NULL
, HFILL
} },
10093 { &hf_zbee_zcl_pp_change_payment_mode_implementation_date_time
,
10094 { "Implementation Date/Time", "zbee_zcl_se.pp.change_payment_mode.implementation_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10095 0x00, NULL
, HFILL
} },
10097 { &hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration
,
10098 { "Proposed Payment Control Configuration", "zbee_zcl_se.pp.change_payment_mode.payment_control_configuration", FT_UINT16
, BASE_HEX
, NULL
,
10099 0x00, NULL
, HFILL
} },
10101 { &hf_zbee_zcl_pp_change_payment_mode_cut_off_value
,
10102 { "Cut Off Value", "zbee_zcl_se.pp.change_payment_mode.cut_off_value", FT_INT32
, BASE_DEC
, NULL
,
10103 0x00, NULL
, HFILL
} },
10105 { &hf_zbee_zcl_pp_get_prepay_snapshot_earliest_start_time
,
10106 { "Earliest Start Time", "zbee_zcl_se.pp.get_prepay_snapshot.earliest_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10107 0x00, NULL
, HFILL
} },
10109 { &hf_zbee_zcl_pp_get_prepay_snapshot_latest_end_time
,
10110 { "Latest End Time", "zbee_zcl_se.pp.get_prepay_snapshot.latest_end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10111 0x00, NULL
, HFILL
} },
10113 { &hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset
,
10114 { "Snapshot Offset", "zbee_zcl_se.pp.get_prepay_snapshot.snapshot_offset", FT_UINT8
, BASE_DEC
, NULL
,
10115 0x00, NULL
, HFILL
} },
10117 { &hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause
,
10118 { "Snapshot Cause", "zbee_zcl_se.pp.get_prepay_snapshot.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
10119 0x00, NULL
, HFILL
} },
10121 { &hf_zbee_zcl_pp_get_top_up_log_latest_end_time
,
10122 { "Latest End Time", "zbee_zcl_se.pp.get_top_up_log.latest_end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10123 0x00, NULL
, HFILL
} },
10125 { &hf_zbee_zcl_pp_get_top_up_log_number_of_records
,
10126 { "Number of Records", "zbee_zcl_se.pp.get_top_up_log.number_of_records", FT_UINT8
, BASE_DEC
, NULL
,
10127 0x00, NULL
, HFILL
} },
10129 { &hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level
,
10130 { "Low Credit Warning Level", "zbee_zcl_se.pp.set_low_credit_warning_level.low_credit_warning_level", FT_UINT32
, BASE_DEC
, NULL
,
10131 0x00, NULL
, HFILL
} },
10133 { &hf_zbee_zcl_pp_get_debt_repayment_log_latest_end_time
,
10134 { "Latest End Time", "zbee_zcl_se.pp.get_debt_repayment_log.latest_end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10135 0x00, NULL
, HFILL
} },
10137 { &hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts
,
10138 { "Number of Records", "zbee_zcl_se.pp.get_debt_repayment_log.number_of_records", FT_UINT8
, BASE_DEC
, NULL
,
10139 0x00, NULL
, HFILL
} },
10141 { &hf_zbee_zcl_pp_get_debt_repayment_log_debt_type
,
10142 { "Debt Type", "zbee_zcl_se.pp.get_debt_repayment_log.debt_type", FT_UINT8
, BASE_DEC
, NULL
,
10143 0x00, NULL
, HFILL
} },
10145 { &hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id
,
10146 { "Provider ID", "zbee_zcl_se.pp.set_maximum_credit_limit.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
10147 0x00, NULL
, HFILL
} },
10149 { &hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id
,
10150 { "Issuer Event ID", "zbee_zcl_se.pp.set_maximum_credit_limit.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10151 0x00, NULL
, HFILL
} },
10153 { &hf_zbee_zcl_pp_set_maximum_credit_limit_implementation_date_time
,
10154 { "Implementation Date/Time", "zbee_zcl_se.pp.set_maximum_credit_limit.implementation_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10155 0x00, NULL
, HFILL
} },
10157 { &hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level
,
10158 { "Maximum Credit Level", "zbee_zcl_se.pp.set_maximum_credit_limit.max_credit_level", FT_UINT32
, BASE_DEC
, NULL
,
10159 0x00, NULL
, HFILL
} },
10161 { &hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up
,
10162 { "Maximum Credit Per Top Up", "zbee_zcl_se.pp.set_maximum_credit_limit.max_credit_per_top_up", FT_UINT32
, BASE_DEC
, NULL
,
10163 0x00, NULL
, HFILL
} },
10165 { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id
,
10166 { "Provider ID", "zbee_zcl_se.pp.set_overall_debt_cap_limit.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
10167 0x00, NULL
, HFILL
} },
10169 { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id
,
10170 { "Issuer Event ID", "zbee_zcl_se.pp.set_overall_debt_cap_limit.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
10171 0x00, NULL
, HFILL
} },
10173 { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_implementation_date_time
,
10174 { "Implementation Date/Time", "zbee_zcl_se.pp.set_overall_debt_cap_limit.implementation_date_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10175 0x00, NULL
, HFILL
} },
10177 { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap
,
10178 { "Overall Debt Cap", "zbee_zcl_se.pp.set_overall_debt_cap_limit.overall_debt_cap", FT_INT32
, BASE_DEC
, NULL
,
10179 0x00, NULL
, HFILL
} },
10181 { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id
,
10182 { "Snapshot ID", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_id", FT_UINT32
, BASE_DEC
, NULL
,
10183 0x00, NULL
, HFILL
} },
10185 { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time
,
10186 { "Snapshot Time", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10187 0x00, NULL
, HFILL
} },
10189 { &hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found
,
10190 { "Total Snapshots Found", "zbee_zcl_se.pp.publish_prepay_snapshot.total_snapshots_found", FT_UINT8
, BASE_DEC
, NULL
,
10191 0x00, NULL
, HFILL
} },
10193 { &hf_zbee_zcl_pp_publish_prepay_snapshot_command_index
,
10194 { "Command Index", "zbee_zcl_se.pp.publish_prepay_snapshot.command_index", FT_UINT8
, BASE_DEC
, NULL
,
10195 0x00, NULL
, HFILL
} },
10197 { &hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands
,
10198 { "Total Number of Commands", "zbee_zcl_se.pp.publish_prepay_snapshot.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
10199 0x00, NULL
, HFILL
} },
10201 { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause
,
10202 { "Snapshot Cause", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_cause", FT_UINT32
, BASE_HEX
, NULL
,
10203 0x00, NULL
, HFILL
} },
10205 { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type
,
10206 { "Snapshot Payload Type", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_payload_type", FT_UINT8
, BASE_DEC
, NULL
,
10207 0x00, NULL
, HFILL
} },
10209 { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload
,
10210 { "Snapshot Payload", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_payload", FT_BYTES
, BASE_NONE
, NULL
,
10211 0x00, NULL
, HFILL
} },
10213 { &hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit
,
10214 { "Friendly Credit", "zbee_zcl_se.pp.change_payment_mode_response.friendly_credit", FT_UINT8
, BASE_HEX
, NULL
,
10215 0x00, NULL
, HFILL
} },
10217 { &hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id
,
10218 { "Friendly Credit Calendar ID", "zbee_zcl_se.pp.change_payment_mode_response.friendly_credit_calendar_id", FT_UINT32
, BASE_DEC
, NULL
,
10219 0x00, NULL
, HFILL
} },
10221 { &hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit
,
10222 { "Emergency Credit Limit", "zbee_zcl_se.pp.change_payment_mode_response.emc_limit", FT_UINT32
, BASE_DEC
, NULL
,
10223 0x00, NULL
, HFILL
} },
10225 { &hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold
,
10226 { "Emergency Credit Threshold", "zbee_zcl_se.pp.change_payment_mode_response.emc_threshold", FT_UINT32
, BASE_DEC
, NULL
,
10227 0x00, NULL
, HFILL
} },
10229 { &hf_zbee_zcl_pp_consumer_top_up_response_result_type
,
10230 { "Result Type", "zbee_zcl_se.pp.consumer_top_up_response.result_type", FT_UINT8
, BASE_DEC
, NULL
,
10231 0x00, NULL
, HFILL
} },
10233 { &hf_zbee_zcl_pp_consumer_top_up_response_top_up_value
,
10234 { "Top Up Value", "zbee_zcl_se.pp.consumer_top_up_response.top_up_value", FT_INT32
, BASE_DEC
, NULL
,
10235 0x00, NULL
, HFILL
} },
10237 { &hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up
,
10238 { "Source of Top up", "zbee_zcl_se.pp.consumer_top_up_response.source_of_top_up", FT_UINT8
, BASE_DEC
, NULL
,
10239 0x00, NULL
, HFILL
} },
10241 { &hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining
,
10242 { "Credit Remaining", "zbee_zcl_se.pp.consumer_top_up_response.credit_remaining", FT_INT32
, BASE_DEC
, NULL
,
10243 0x00, NULL
, HFILL
} },
10245 { &hf_zbee_zcl_pp_publish_top_up_log_command_index
,
10246 { "Command Index", "zbee_zcl_se.pp.publish_top_up_log.command_index", FT_UINT8
, BASE_DEC
, NULL
,
10247 0x00, NULL
, HFILL
} },
10249 { &hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands
,
10250 { "Total Number of Commands", "zbee_zcl_se.pp.publish_top_up_log.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
10251 0x00, NULL
, HFILL
} },
10253 { &hf_zbee_zcl_pp_publish_top_up_log_top_up_code
,
10254 { "TopUp Code", "zbee_zcl_se.pp.publish_top_up_log.top_up_code", FT_UINT_BYTES
, SEP_COLON
, NULL
,
10255 0x00, NULL
, HFILL
} },
10257 { &hf_zbee_zcl_pp_publish_top_up_log_top_up_amount
,
10258 { "TopUp Amount", "zbee_zcl_se.pp.publish_top_up_log.top_up_amount", FT_INT32
, BASE_DEC
, NULL
,
10259 0x00, NULL
, HFILL
} },
10261 { &hf_zbee_zcl_pp_publish_top_up_log_top_up_time
,
10262 { "TopUp Time", "zbee_zcl_se.pp.publish_top_up_log.top_up_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10263 0x00, NULL
, HFILL
} },
10265 { &hf_zbee_zcl_pp_publish_debt_log_command_index
,
10266 { "Command Index", "zbee_zcl_se.pp.publish_debt_log.command_index", FT_UINT8
, BASE_DEC
, NULL
,
10267 0x00, NULL
, HFILL
} },
10269 { &hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands
,
10270 { "Total Number of Commands", "zbee_zcl_se.pp.publish_debt_log.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
10271 0x00, NULL
, HFILL
} },
10273 { &hf_zbee_zcl_pp_publish_debt_log_collection_time
,
10274 { "Collection Time", "zbee_zcl_se.pp.publish_debt_log.collection_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
10275 0x00, NULL
, HFILL
} },
10277 { &hf_zbee_zcl_pp_publish_debt_log_amount_collected
,
10278 { "Amount Collected", "zbee_zcl_se.pp.publish_debt_log.amount_collected", FT_INT32
, BASE_DEC
, NULL
,
10279 0x00, NULL
, HFILL
} },
10281 { &hf_zbee_zcl_pp_publish_debt_log_debt_type
,
10282 { "Debt Type", "zbee_zcl_se.pp.publish_debt_log.debt_type", FT_UINT8
, BASE_DEC
, NULL
,
10283 0x00, NULL
, HFILL
} },
10285 { &hf_zbee_zcl_pp_publish_debt_log_outstanding_debt
,
10286 { "Outstanding Debt", "zbee_zcl_se.pp.publish_debt_log.outstanding_debt", FT_UINT32
, BASE_DEC
, NULL
,
10287 0x00, NULL
, HFILL
} },
10289 { &hf_zbee_zcl_pp_payment_control_configuration
,
10290 { "Payment Control Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration", FT_UINT16
, BASE_HEX
, NULL
,
10291 0x00, NULL
, HFILL
} },
10292 { &hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled
,
10293 { "Disconnection Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.disconnection_enabled", FT_BOOLEAN
, 16, NULL
,
10294 0x0001, NULL
, HFILL
} },
10295 { &hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled
,
10296 { "Prepayment Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.prepayment_enabled", FT_BOOLEAN
, 16, NULL
,
10297 0x0002, NULL
, HFILL
} },
10298 { &hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled
,
10299 { "Credit Management Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.credit_management_enabled", FT_BOOLEAN
, 16, NULL
,
10300 0x0004, NULL
, HFILL
} },
10301 { &hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled
,
10302 { "Credit Display Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.credit_display_enabled", FT_BOOLEAN
, 16, NULL
,
10303 0x0010, NULL
, HFILL
} },
10304 { &hf_zbee_zcl_pp_payment_control_configuration_account_base
,
10305 { "Account Base", "zbee_zcl_se.pp.attr.payment_control_configuration.account_base", FT_BOOLEAN
, 16, NULL
,
10306 0x0040, NULL
, HFILL
} },
10307 { &hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted
,
10308 { "Contactor Fitted", "zbee_zcl_se.pp.attr.payment_control_configuration.contactor_fitted", FT_BOOLEAN
, 16, NULL
,
10309 0x0080, NULL
, HFILL
} },
10310 { &hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration
,
10311 { "Standing Charge Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.standing_charge_configuration", FT_BOOLEAN
, 16, NULL
,
10312 0x0100, NULL
, HFILL
} },
10313 { &hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration
,
10314 { "Emergency Standing Charge Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.emergency_standing_charge_configuration", FT_BOOLEAN
, 16, NULL
,
10315 0x0200, NULL
, HFILL
} },
10316 { &hf_zbee_zcl_pp_payment_control_configuration_debt_configuration
,
10317 { "Debt Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.debt_configuration", FT_BOOLEAN
, 16, NULL
,
10318 0x0400, NULL
, HFILL
} },
10319 { &hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration
,
10320 { "Emergency Debt Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.emergency_debt_configuration", FT_BOOLEAN
, 16, NULL
,
10321 0x0800, NULL
, HFILL
} },
10322 { &hf_zbee_zcl_pp_payment_control_configuration_reserved
,
10323 { "Reserved", "zbee_zcl_se.pp.attr.payment_control_configuration.reserved", FT_UINT16
, BASE_HEX
, NULL
,
10324 0xF028, NULL
, HFILL
} },
10326 { &hf_zbee_zcl_pp_snapshot_payload_cause_general
,
10327 { "General", "zbee_zcl_se.pp.snapshot_payload_cause.general", FT_BOOLEAN
, 32, NULL
,
10328 0x00000001, NULL
, HFILL
} },
10329 { &hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period
,
10330 { "End of Billing Period", "zbee_zcl_se.pp.snapshot_payload_cause.end_of_billing_period", FT_BOOLEAN
, 32, NULL
,
10331 0x00000002, NULL
, HFILL
} },
10332 { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information
,
10333 { "Change of Tariff Information", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_tariff_information", FT_BOOLEAN
, 32, NULL
,
10334 0x00000008, NULL
, HFILL
} },
10335 { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix
,
10336 { "Change of Price Matrix", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_price_matrix", FT_BOOLEAN
, 32, NULL
,
10337 0x00000010, NULL
, HFILL
} },
10338 { &hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client
,
10339 { "Manually Triggered from Client", "zbee_zcl_se.pp.snapshot_payload_cause.manually_triggered_from_client", FT_BOOLEAN
, 32, NULL
,
10340 0x00000400, NULL
, HFILL
} },
10341 { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy
,
10342 { "Change of Tenancy", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_tenancy", FT_BOOLEAN
, 32, NULL
,
10343 0x00001000, NULL
, HFILL
} },
10344 { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier
,
10345 { "Change of Supplier", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_supplier", FT_BOOLEAN
, 32, NULL
,
10346 0x00002000, NULL
, HFILL
} },
10347 { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode
,
10348 { "Change of (Meter) Mode", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_meter_mode", FT_BOOLEAN
, 32, NULL
,
10349 0x00004000, NULL
, HFILL
} },
10350 { &hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition
,
10351 { "TopUp addition", "zbee_zcl_se.pp.snapshot_payload_cause.top_up_addition", FT_BOOLEAN
, 32, NULL
,
10352 0x00040000, NULL
, HFILL
} },
10353 { &hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition
,
10354 { "Debt/Credit addition", "zbee_zcl_se.pp.snapshot_payload_cause.debt_credit_addition", FT_BOOLEAN
, 32, NULL
,
10355 0x00080000, NULL
, HFILL
} },
10356 { &hf_zbee_zcl_pp_snapshot_payload_cause_reserved
,
10357 { "Reserved", "zbee_zcl_se.pp.snapshot_payload_cause.reserved", FT_UINT32
, BASE_HEX
, NULL
,
10358 0xFFF38BE4, NULL
, HFILL
} },
10361 /* ZCL Prepayment subtrees */
10362 int *ett
[ZBEE_ZCL_SE_PP_NUM_TOTAL_ETT
];
10363 ett
[0] = &ett_zbee_zcl_pp
;
10364 ett
[1] = &ett_zbee_zcl_pp_payment_control_configuration
;
10365 ett
[2] = &ett_zbee_zcl_pp_snapshot_payload_cause
;
10367 unsigned j
= ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT
;
10369 /* Initialize Publish Top Up Log subtrees */
10370 for (unsigned i
= 0; i
< ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT
; i
++, j
++) {
10371 ett
[j
] = &ett_zbee_zcl_pp_publish_top_up_entry
[i
];
10374 /* Initialize Publish Debt Log subtrees */
10375 for (unsigned i
= 0; i
< ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT
; i
++, j
++ ) {
10376 ett
[j
] = &ett_zbee_zcl_pp_publish_debt_log_entry
[i
];
10379 /* Register the ZigBee ZCL Prepayment cluster protocol name and description */
10380 proto_zbee_zcl_pp
= proto_register_protocol("ZigBee ZCL Prepayment", "ZCL Prepayment", ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT
);
10381 proto_register_field_array(proto_zbee_zcl_pp
, hf
, array_length(hf
));
10382 proto_register_subtree_array(ett
, array_length(ett
));
10384 /* Register the ZigBee ZCL Prepayment dissector. */
10385 register_dissector(ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT
, dissect_zbee_zcl_pp
, proto_zbee_zcl_pp
);
10386 } /*proto_register_zbee_zcl_pp*/
10389 *Hands off the ZCL Prepayment dissector.
10393 proto_reg_handoff_zbee_zcl_pp(void)
10395 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT
,
10398 ZBEE_ZCL_CID_PRE_PAYMENT
,
10399 ZBEE_MFG_CODE_NONE
,
10400 hf_zbee_zcl_pp_attr_id
,
10402 hf_zbee_zcl_pp_srv_rx_cmd_id
,
10403 hf_zbee_zcl_pp_srv_tx_cmd_id
,
10404 (zbee_zcl_fn_attr_data
)dissect_zcl_pp_attr_data
10406 } /*proto_reg_handoff_zbee_zcl_pp*/
10408 /* ########################################################################## */
10409 /* #### (0x0706) ENERGY MANAGEMENT CLUSTER ################################## */
10410 /* ########################################################################## */
10413 #define zbee_zcl_energy_management_attr_names_VALUE_STRING_LIST(XXX) \
10414 /* Block Threshold (Delivered) Set */ \
10415 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_LOAD_CONTROL_STATE, 0x0000, "Load Control State" ) \
10416 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CURRENT_EVENT_ID, 0x0001, "Current Event ID" ) \
10417 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CURRENT_EVENT_STATUS, 0x0002, "Current Event Status" ) \
10418 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CONFORMANCE_LEVEL, 0x0003, "Conformance Level" ) \
10419 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_OFF_TIME, 0x0004, "Minimum Off Time" ) \
10420 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_ON_TIME, 0x0005, "Minimum On Time" ) \
10421 XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_CYCLE_PERIOD, 0x0006, "Minimum Cycle Period" ) \
10422 /* Smart Energy */ \
10423 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_ENERGY_MANAGEMENT, 0xFFFE, "Attribute Reporting Status" )
10425 VALUE_STRING_ENUM(zbee_zcl_energy_management_attr_names
);
10426 VALUE_STRING_ARRAY(zbee_zcl_energy_management_attr_names
);
10428 /* Server Commands Received */
10429 #define zbee_zcl_energy_management_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
10430 XXX(ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_MANAGE_EVENT, 0x00, "Manage Event" )
10432 VALUE_STRING_ENUM(zbee_zcl_energy_management_srv_rx_cmd_names
);
10433 VALUE_STRING_ARRAY(zbee_zcl_energy_management_srv_rx_cmd_names
);
10435 /* Server Commands Generated */
10436 #define zbee_zcl_energy_management_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
10437 XXX(ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_REPORT_EVENT_STATUS, 0x00, "Report Event Status" )
10439 VALUE_STRING_ENUM(zbee_zcl_energy_management_srv_tx_cmd_names
);
10440 VALUE_STRING_ARRAY(zbee_zcl_energy_management_srv_tx_cmd_names
);
10442 /*************************/
10443 /* Function Declarations */
10444 /*************************/
10445 void proto_register_zbee_zcl_energy_management(void);
10446 void proto_reg_handoff_zbee_zcl_energy_management(void);
10448 static void dissect_zbee_zcl_energy_management_manage_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
10449 static void dissect_zbee_zcl_energy_management_report_event_status (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
10451 /* Attribute Dissector Helpers */
10452 static void dissect_zcl_energy_management_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
10454 /*************************/
10455 /* Global Variables */
10456 /*************************/
10458 /* Initialize the protocol and registered fields */
10459 static int proto_zbee_zcl_energy_management
;
10461 static int hf_zbee_zcl_energy_management_srv_tx_cmd_id
;
10462 static int hf_zbee_zcl_energy_management_srv_rx_cmd_id
;
10463 static int hf_zbee_zcl_energy_management_attr_id
;
10464 static int hf_zbee_zcl_energy_management_attr_reporting_status
;
10465 static int hf_zbee_zcl_energy_management_issuer_event_id
;
10466 static int hf_zbee_zcl_energy_management_device_class
;
10467 static int hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace
;
10468 static int hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters
;
10469 static int hf_zbee_zcl_energy_management_device_class_water_heater
;
10470 static int hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi
;
10471 static int hf_zbee_zcl_energy_management_device_class_smart_appliances
;
10472 static int hf_zbee_zcl_energy_management_device_class_irrigation_pump
;
10473 static int hf_zbee_zcl_energy_management_device_class_managed_c_i_loads
;
10474 static int hf_zbee_zcl_energy_management_device_class_simple_misc_loads
;
10475 static int hf_zbee_zcl_energy_management_device_class_exterior_lighting
;
10476 static int hf_zbee_zcl_energy_management_device_class_interior_lighting
;
10477 static int hf_zbee_zcl_energy_management_device_class_electric_vehicle
;
10478 static int hf_zbee_zcl_energy_management_device_class_generation_systems
;
10479 static int hf_zbee_zcl_energy_management_device_class_reserved
;
10480 static int hf_zbee_zcl_energy_management_utility_enrollment_group
;
10481 static int hf_zbee_zcl_energy_management_action_required
;
10482 static int hf_zbee_zcl_energy_management_action_required_opt_out_of_event
;
10483 static int hf_zbee_zcl_energy_management_action_required_opt_into_event
;
10484 static int hf_zbee_zcl_energy_management_action_required_disable_duty_cycling
;
10485 static int hf_zbee_zcl_energy_management_action_required_enable_duty_cycling
;
10486 static int hf_zbee_zcl_energy_management_action_required_reserved
;
10488 static int hf_zbee_zcl_energy_management_report_event_issuer_event_id
;
10489 static int hf_zbee_zcl_energy_management_report_event_event_status
;
10490 static int hf_zbee_zcl_energy_management_report_event_event_status_time
;
10491 static int hf_zbee_zcl_energy_management_report_event_criticality_level_applied
;
10492 static int hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied
;
10493 static int hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied
;
10494 static int hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage
;
10495 static int hf_zbee_zcl_energy_management_report_event_duty_cycle
;
10496 static int hf_zbee_zcl_energy_management_report_event_event_control
;
10497 static int hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time
;
10498 static int hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time
;
10499 static int hf_zbee_zcl_energy_management_report_event_event_control_reserved
;
10502 static int* const zbee_zcl_energy_management_device_classes
[] = {
10503 &hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace
,
10504 &hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters
,
10505 &hf_zbee_zcl_energy_management_device_class_water_heater
,
10506 &hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi
,
10507 &hf_zbee_zcl_energy_management_device_class_smart_appliances
,
10508 &hf_zbee_zcl_energy_management_device_class_irrigation_pump
,
10509 &hf_zbee_zcl_energy_management_device_class_managed_c_i_loads
,
10510 &hf_zbee_zcl_energy_management_device_class_simple_misc_loads
,
10511 &hf_zbee_zcl_energy_management_device_class_exterior_lighting
,
10512 &hf_zbee_zcl_energy_management_device_class_interior_lighting
,
10513 &hf_zbee_zcl_energy_management_device_class_electric_vehicle
,
10514 &hf_zbee_zcl_energy_management_device_class_generation_systems
,
10515 &hf_zbee_zcl_energy_management_device_class_reserved
,
10519 static int* const zbee_zcl_energy_management_action_required
[] = {
10520 &hf_zbee_zcl_energy_management_action_required_opt_out_of_event
,
10521 &hf_zbee_zcl_energy_management_action_required_opt_into_event
,
10522 &hf_zbee_zcl_energy_management_action_required_disable_duty_cycling
,
10523 &hf_zbee_zcl_energy_management_action_required_enable_duty_cycling
,
10524 &hf_zbee_zcl_energy_management_action_required_reserved
,
10528 static int* const hf_zbee_zcl_energy_management_event_control_flags
[] = {
10529 &hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time
,
10530 &hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time
,
10531 &hf_zbee_zcl_energy_management_report_event_event_control_reserved
,
10535 /* Initialize the subtree pointers */
10536 static int ett_zbee_zcl_energy_management
;
10537 static int ett_zbee_zcl_energy_management_device_class
;
10538 static int ett_zbee_zcl_energy_management_actions_required
;
10539 static int ett_zbee_zcl_energy_management_report_event_event_control
;
10541 static const range_string zbee_zcl_energy_management_load_control_event_criticality_level
[] = {
10542 { 0x0, 0x0, "Reserved" },
10543 { 0x1, 0x1, "Green" },
10549 { 0x7, 0x7, "Emergency" },
10550 { 0x8, 0x8, "Planned Outage" },
10551 { 0x9, 0x9, "Service Disconnect" },
10552 { 0x0A, 0x0F, "Utility Defined" },
10553 { 0x10, 0xFF, "Reserved" },
10557 /*************************/
10558 /* Function Bodies */
10559 /*************************/
10562 *This function is called by ZCL foundation dissector in order to decode
10564 *@param tree pointer to data tree Wireshark uses to display packet.
10565 *@param tvb pointer to buffer containing raw packet.
10566 *@param offset pointer to buffer offset
10567 *@param attr_id attribute identifier
10568 *@param data_type attribute data type
10569 *@param client_attr ZCL client
10572 dissect_zcl_energy_management_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
10575 /* applies to all SE clusters */
10576 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_ENERGY_MANAGEMENT
:
10577 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
10581 default: /* Catch all */
10582 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
10585 } /*dissect_zcl_energy_management_attr_data*/
10588 *ZigBee ZCL Energy Management cluster dissector for wireshark.
10590 *@param tvb pointer to buffer containing raw packet.
10591 *@param tree pointer to data tree Wireshark uses to display packet.
10592 *@param offset pointer to buffer offset
10595 dissect_zbee_zcl_energy_management_manage_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
10597 /* Issuer Event ID */
10598 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_issuer_event_id
, tvb
,
10599 *offset
, 4, ENC_LITTLE_ENDIAN
);
10603 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_energy_management_device_class
, ett_zbee_zcl_energy_management_device_class
,
10604 zbee_zcl_energy_management_device_classes
, ENC_LITTLE_ENDIAN
);
10607 /* Utility Enrollment Group */
10608 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_utility_enrollment_group
, tvb
,
10609 *offset
, 1, ENC_NA
);
10612 /* Action(s) Required */
10613 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_energy_management_action_required
, ett_zbee_zcl_energy_management_actions_required
,
10614 zbee_zcl_energy_management_action_required
, ENC_NA
);
10619 *ZigBee ZCL Energy Management cluster dissector for wireshark.
10621 *@param tvb pointer to buffer containing raw packet.
10622 *@param tree pointer to data tree Wireshark uses to display packet.
10623 *@param offset pointer to buffer offset
10626 dissect_zbee_zcl_energy_management_report_event_status(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
10628 /* Event Control */
10630 /* Issuer Event ID */
10631 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_issuer_event_id
, tvb
,
10632 *offset
, 4, ENC_LITTLE_ENDIAN
);
10636 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_event_status
, tvb
, *offset
, 1, ENC_NA
);
10639 /* Event Status Time */
10640 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_event_status_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
10643 /* Criticality Level Applied */
10644 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_criticality_level_applied
, tvb
,
10645 *offset
, 1, ENC_NA
);
10648 /* Cooling Temperature Set Point Applied */
10649 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied
, tvb
,
10650 *offset
, 2, ENC_LITTLE_ENDIAN
);
10653 /* Heating Temperature Set Point Applied */
10654 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied
, tvb
,
10655 *offset
, 2, ENC_LITTLE_ENDIAN
);
10658 /* Average Load Adjustment Percentage Applied */
10659 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage
, tvb
,
10660 *offset
, 1, ENC_NA
);
10663 /* Duty Cycle Applied */
10664 proto_tree_add_item(tree
, hf_zbee_zcl_energy_management_report_event_duty_cycle
, tvb
,
10665 *offset
, 1, ENC_NA
);
10668 /* Event Control */
10669 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_energy_management_report_event_event_control
, ett_zbee_zcl_energy_management_report_event_event_control
,
10670 hf_zbee_zcl_energy_management_event_control_flags
, ENC_LITTLE_ENDIAN
);
10673 } /*dissect_zbee_zcl_energy_management_report_event_status*/
10676 *ZigBee ZCL Energy Management cluster dissector for wireshark.
10678 *@param tvb pointer to buffer containing raw packet.
10679 *@param pinfo pointer to packet information fields
10680 *@param tree pointer to data tree Wireshark uses to display packet.
10683 dissect_zbee_zcl_energy_management(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
10685 zbee_zcl_packet
*zcl
;
10686 unsigned offset
= 0;
10690 /* Reject the packet if data is NULL */
10693 zcl
= (zbee_zcl_packet
*)data
;
10694 cmd_id
= zcl
->cmd_id
;
10696 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
10697 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
10698 /* Append the command name to the info column. */
10699 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
10700 val_to_str_const(cmd_id
, zbee_zcl_energy_management_srv_rx_cmd_names
, "Unknown Command"),
10703 /* Add the command ID. */
10704 proto_tree_add_uint(tree
, hf_zbee_zcl_energy_management_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
10706 /* Check is this command has a payload, than add the payload tree */
10707 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
10709 proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_energy_management
, NULL
, "Payload");
10711 /* Call the appropriate command dissector */
10714 case ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_MANAGE_EVENT
:
10715 dissect_zbee_zcl_energy_management_manage_event(tvb
, tree
, &offset
);
10723 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
10724 /* Append the command name to the info column. */
10725 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
10726 val_to_str_const(cmd_id
, zbee_zcl_energy_management_srv_tx_cmd_names
, "Unknown Command"),
10729 /* Add the command ID. */
10730 proto_tree_add_uint(tree
, hf_zbee_zcl_energy_management_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
10732 /* Check is this command has a payload, than add the payload tree */
10733 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
10735 proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_energy_management
, NULL
, "Payload");
10737 /* Call the appropriate command dissector */
10740 case ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_REPORT_EVENT_STATUS
:
10741 dissect_zbee_zcl_energy_management_report_event_status(tvb
, tree
, &offset
);
10750 return tvb_captured_length(tvb
);
10751 } /*dissect_zbee_zcl_energy_management*/
10754 *This function registers the ZCL Energy_Management dissector
10758 proto_register_zbee_zcl_energy_management(void)
10760 static hf_register_info hf
[] = {
10762 { &hf_zbee_zcl_energy_management_attr_id
,
10763 { "Attribute", "zbee_zcl_se.energy_management.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_energy_management_attr_names
),
10764 0x0, NULL
, HFILL
} },
10766 { &hf_zbee_zcl_energy_management_attr_reporting_status
, /* common to all SE clusters */
10767 { "Attribute Reporting Status", "zbee_zcl_se.energy_management.attr.attr_reporting_status",
10768 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
10770 { &hf_zbee_zcl_energy_management_srv_tx_cmd_id
,
10771 { "Command", "zbee_zcl_se.energy_management.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_energy_management_srv_tx_cmd_names
),
10772 0x00, NULL
, HFILL
} },
10774 { &hf_zbee_zcl_energy_management_srv_rx_cmd_id
,
10775 { "Command", "zbee_zcl_se.energy_management.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_energy_management_srv_rx_cmd_names
),
10776 0x00, NULL
, HFILL
} },
10778 { &hf_zbee_zcl_energy_management_issuer_event_id
,
10779 { "Issuer Event ID", "zbee_zcl_se.energy_management.issuer_id",
10780 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10782 { &hf_zbee_zcl_energy_management_device_class
,
10783 { "Device Class", "zbee_zcl_se.energy_management.device_class",
10784 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10786 { &hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace
,
10787 { "HVAC Compressor or Furnace", "zbee_zcl_se.energy_management.device_class.hvac_compressor_or_furnace",
10788 FT_BOOLEAN
, 16, NULL
, 0x0001, NULL
, HFILL
} },
10790 { &hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters
,
10791 { "Strip Heaters/Baseboard Heaters", "zbee_zcl_se.energy_management.device_class.strip_heaters_baseboard_heaters",
10792 FT_BOOLEAN
, 16, NULL
, 0x0002, NULL
, HFILL
} },
10794 { &hf_zbee_zcl_energy_management_device_class_water_heater
,
10795 { "Water Heater", "zbee_zcl_se.energy_management.device_class.water_heater",
10796 FT_BOOLEAN
, 16, NULL
, 0x0004, NULL
, HFILL
} },
10798 { &hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi
,
10799 { "Pool Pump/Spa/Jacuzzi", "zbee_zcl_se.energy_management.device_class.pool_pump_spa_jacuzzi",
10800 FT_BOOLEAN
, 16, NULL
, 0x0008, NULL
, HFILL
} },
10802 { &hf_zbee_zcl_energy_management_device_class_smart_appliances
,
10803 { "Smart Appliances", "zbee_zcl_se.energy_management.device_class.smart_appliances",
10804 FT_BOOLEAN
, 16, NULL
, 0x0010, NULL
, HFILL
} },
10806 { &hf_zbee_zcl_energy_management_device_class_irrigation_pump
,
10807 { "Irrigation Pump", "zbee_zcl_se.energy_management.device_class.irrigation_pump",
10808 FT_BOOLEAN
, 16, NULL
, 0x0020, NULL
, HFILL
} },
10810 { &hf_zbee_zcl_energy_management_device_class_managed_c_i_loads
,
10811 { "Managed Commercial & Industrial (C&I) loads", "zbee_zcl_se.energy_management.device_class.managed_c_i_loads",
10812 FT_BOOLEAN
, 16, NULL
, 0x0040, NULL
, HFILL
} },
10814 { &hf_zbee_zcl_energy_management_device_class_simple_misc_loads
,
10815 { "Simple misc. (Residential On/Off) loads", "zbee_zcl_se.energy_management.device_class.simple_misc_loads",
10816 FT_BOOLEAN
, 16, NULL
, 0x0080, NULL
, HFILL
} },
10818 { &hf_zbee_zcl_energy_management_device_class_exterior_lighting
,
10819 { "Exterior Lighting", "zbee_zcl_se.energy_management.device_class.exterior_lighting",
10820 FT_BOOLEAN
, 16, NULL
, 0x0100, NULL
, HFILL
} },
10822 { &hf_zbee_zcl_energy_management_device_class_interior_lighting
,
10823 { "Interior Lighting", "zbee_zcl_se.energy_management.device_class.interior_lighting",
10824 FT_BOOLEAN
, 16, NULL
, 0x0200, NULL
, HFILL
} },
10826 { &hf_zbee_zcl_energy_management_device_class_electric_vehicle
,
10827 { "Electric Vehicle", "zbee_zcl_se.energy_management.device_class.electric_vehicle",
10828 FT_BOOLEAN
, 16, NULL
, 0x0400, NULL
, HFILL
} },
10830 { &hf_zbee_zcl_energy_management_device_class_generation_systems
,
10831 { "Generation Systems", "zbee_zcl_se.energy_management.device_class.generation_systems",
10832 FT_BOOLEAN
, 16, NULL
, 0x0800, NULL
, HFILL
} },
10834 { &hf_zbee_zcl_energy_management_device_class_reserved
,
10835 { "Reserved", "zbee_zcl_se.energy_management.device_class.reserved",
10836 FT_UINT16
, BASE_HEX
, NULL
, 0xF000, NULL
, HFILL
} },
10838 { &hf_zbee_zcl_energy_management_utility_enrollment_group
,
10839 { "Utility Enrollment Group", "zbee_zcl_se.energy_management.utility_enrollment_group",
10840 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10842 { &hf_zbee_zcl_energy_management_action_required
,
10843 { "Action(s) Required", "zbee_zcl_se.energy_management.action_required",
10844 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10846 { &hf_zbee_zcl_energy_management_action_required_opt_out_of_event
,
10847 { "Opt Out of Event", "zbee_zcl_se.energy_management.action_required.opt_out_of_event",
10848 FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
} },
10850 { &hf_zbee_zcl_energy_management_action_required_opt_into_event
,
10851 { "Opt Into Event", "zbee_zcl_se.energy_management.action_required.opt_into_event",
10852 FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
} },
10854 { &hf_zbee_zcl_energy_management_action_required_disable_duty_cycling
,
10855 { "Disable Duty Cycling", "zbee_zcl_se.energy_management.action_required.disable_duty_cycling",
10856 FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
} },
10858 { &hf_zbee_zcl_energy_management_action_required_enable_duty_cycling
,
10859 { "Enable Duty Cycling", "zbee_zcl_se.energy_management.action_required.enable_duty_cycling",
10860 FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
} },
10862 { &hf_zbee_zcl_energy_management_action_required_reserved
,
10863 { "Reserved", "zbee_zcl_se.energy_management.action_required.reserved",
10864 FT_UINT8
, BASE_HEX
, NULL
, 0xF0, NULL
, HFILL
} },
10866 { &hf_zbee_zcl_energy_management_report_event_issuer_event_id
,
10867 { "Issuer Event ID", "zbee_zcl_se.energy_management.report_event.issuer_id",
10868 FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10870 { &hf_zbee_zcl_energy_management_report_event_event_status
,
10871 { "Event Status", "zbee_zcl_se.energy_management.report_event.event_status",
10872 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10874 { &hf_zbee_zcl_energy_management_report_event_event_status_time
,
10875 { "Event Status Time", "zbee_zcl_se.energy_management.report_event.event_status_time",
10876 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
, 0x0, NULL
, HFILL
} },
10878 { &hf_zbee_zcl_energy_management_report_event_criticality_level_applied
,
10879 { "Criticality Level Applied", "zbee_zcl_se.energy_management.report_event.criticality_level_applied",
10880 FT_UINT8
, BASE_HEX
| BASE_RANGE_STRING
, RVALS(zbee_zcl_energy_management_load_control_event_criticality_level
), 0x0, NULL
, HFILL
} },
10882 { &hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied
,
10883 { "Cooling Temperature Set Point Applied", "zbee_zcl_se.energy_management.report_event.cooling_temperature_set_point_applied",
10884 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
10886 { &hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied
,
10887 { "Heating Temperature Set Point Applied", "zbee_zcl_se.energy_management.report_event.heating_temperature_set_point_applied",
10888 FT_INT16
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_temp_set_point
), 0x0, NULL
, HFILL
} },
10890 { &hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage
,
10891 { "Average Load Adjustment Percentage Applied", "zbee_zcl_se.energy_management.report_event.average_load_adjustment_percentage_applied",
10892 FT_INT8
, BASE_CUSTOM
, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage
), 0x0, NULL
, HFILL
} },
10894 { &hf_zbee_zcl_energy_management_report_event_duty_cycle
,
10895 { "Duty Cycle Applied", "zbee_zcl_se.energy_management.report_event.duty_cycle_applied",
10896 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10898 { &hf_zbee_zcl_energy_management_report_event_event_control
,
10899 { "Event Control", "zbee_zcl_se.energy_management.report_event.event_control",
10900 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
} },
10902 { &hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time
,
10903 { "Randomize Start time", "zbee_zcl_se.energy_management.report_event.randomize_start_time",
10904 FT_BOOLEAN
, 8, TFS(&zbee_zcl_drlc_randomize_start_tfs
), 0x01, NULL
, HFILL
} },
10906 { &hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time
,
10907 { "Randomize Duration time", "zbee_zcl_se.energy_management.report_event.randomize_duration_time",
10908 FT_BOOLEAN
, 8, TFS(&zbee_zcl_drlc_randomize_duration_tfs
), 0x02, NULL
, HFILL
} },
10910 { &hf_zbee_zcl_energy_management_report_event_event_control_reserved
,
10911 { "Reserved", "zbee_zcl_se.energy_management.reserved",
10912 FT_UINT8
, BASE_HEX
, NULL
, 0xFC, NULL
, HFILL
} },
10915 /* ZCL Energy_Management subtrees */
10917 &ett_zbee_zcl_energy_management
,
10918 &ett_zbee_zcl_energy_management_device_class
,
10919 &ett_zbee_zcl_energy_management_actions_required
,
10920 &ett_zbee_zcl_energy_management_report_event_event_control
,
10923 /* Register the ZigBee ZCL Energy Management cluster protocol name and description */
10924 proto_zbee_zcl_energy_management
= proto_register_protocol("ZigBee ZCL Energy Management", "ZCL Energy Management", ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT
);
10925 proto_register_field_array(proto_zbee_zcl_energy_management
, hf
, array_length(hf
));
10926 proto_register_subtree_array(ett
, array_length(ett
));
10928 /* Register the ZigBee ZCL Energy Management dissector. */
10929 register_dissector(ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT
, dissect_zbee_zcl_energy_management
, proto_zbee_zcl_energy_management
);
10930 } /*proto_register_zbee_zcl_energy_management*/
10933 *Hands off the ZCL Energy_Management dissector.
10937 proto_reg_handoff_zbee_zcl_energy_management(void)
10939 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT
,
10940 proto_zbee_zcl_energy_management
,
10941 ett_zbee_zcl_energy_management
,
10942 ZBEE_ZCL_CID_ENERGY_MANAGEMENT
,
10943 ZBEE_MFG_CODE_NONE
,
10944 hf_zbee_zcl_energy_management_attr_id
,
10946 hf_zbee_zcl_energy_management_srv_rx_cmd_id
,
10947 hf_zbee_zcl_energy_management_srv_tx_cmd_id
,
10948 (zbee_zcl_fn_attr_data
)dissect_zcl_energy_management_attr_data
10950 } /*proto_reg_handoff_zbee_zcl_energy_management*/
10953 /* ########################################################################## */
10954 /* #### (0x0707) CALENDAR CLUSTER ########################################### */
10955 /* ########################################################################## */
10958 #define zbee_zcl_calendar_attr_names_VALUE_STRING_LIST(XXX) \
10959 /* Auxiliary Switch Label Attribute Set */ \
10960 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_1_LABEL, 0x0000, "Aux Switch 1 Label" ) \
10961 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_2_LABEL, 0x0001, "Aux Switch 2 Label" ) \
10962 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_3_LABEL, 0x0002, "Aux Switch 3 Label" ) \
10963 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_4_LABEL, 0x0003, "Aux Switch 4 Label" ) \
10964 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_5_LABEL, 0x0004, "Aux Switch 5 Label" ) \
10965 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_6_LABEL, 0x0005, "Aux Switch 6 Label" ) \
10966 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_7_LABEL, 0x0006, "Aux Switch 7 Label" ) \
10967 XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_8_LABEL, 0x0007, "Aux Switch 8 Label" ) \
10968 /* Smart Energy */ \
10969 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_CAL, 0xFFFE, "Attribute Reporting Status" )
10971 VALUE_STRING_ENUM(zbee_zcl_calendar_attr_names
);
10972 VALUE_STRING_ARRAY(zbee_zcl_calendar_attr_names
);
10974 /* Server Commands Received */
10975 #define zbee_zcl_calendar_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
10976 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR, 0x00, "Get Calendar" ) \
10977 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_DAY_PROFILES, 0x01, "Get Day Profiles" ) \
10978 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_WEEK_PROFILES, 0x02, "Get Week Profiles" ) \
10979 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_SEASONS, 0x03, "Get Seasons" ) \
10980 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_SPECIAL_DAYS, 0x04, "Get Special Days" ) \
10981 XXX(ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR_CANCELLATION, 0x05, "Get Calendar Cancellation" )
10983 VALUE_STRING_ENUM(zbee_zcl_calendar_srv_rx_cmd_names
);
10984 VALUE_STRING_ARRAY(zbee_zcl_calendar_srv_rx_cmd_names
);
10986 /* Server Commands Generated */
10987 #define zbee_zcl_calendar_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
10988 XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_CALENDAR, 0x00, "Publish Calendar" ) \
10989 XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_DAY_PROFILE, 0x01, "Publish Day Profile" ) \
10990 XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_WEEK_PROFILE, 0x02, "Publish Week Profile" ) \
10991 XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SEASONS, 0x03, "Publish Seasons" ) \
10992 XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SPECIAL_DAYS, 0x04, "Publish Special Days" ) \
10993 XXX(ZBEE_ZCL_CMD_ID_CAL_CANCEL_CALENDAR, 0x05, "Cancel Calendar" )
10995 VALUE_STRING_ENUM(zbee_zcl_calendar_srv_tx_cmd_names
);
10996 VALUE_STRING_ARRAY(zbee_zcl_calendar_srv_tx_cmd_names
);
10998 /*************************/
10999 /* Function Declarations */
11000 /*************************/
11001 void proto_register_zbee_zcl_calendar(void);
11002 void proto_reg_handoff_zbee_zcl_calendar(void);
11004 /* Attribute Dissector Helpers */
11005 static void dissect_zcl_calendar_attr_data (proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
11007 /* Command Dissector Helpers */
11008 static void dissect_zcl_calendar_get_calendar (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11009 static void dissect_zcl_calendar_get_day_profiles(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11010 static void dissect_zcl_calendar_get_week_profiles(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11011 static void dissect_zcl_calendar_get_seasons(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11012 static void dissect_zcl_calendar_get_special_days(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11013 static void dissect_zcl_calendar_publish_calendar(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11014 static void dissect_zcl_calendar_publish_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11015 static void dissect_zcl_calendar_publish_week_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11016 static void dissect_zcl_calendar_publish_seasons(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11017 static void dissect_zcl_calendar_publish_special_days(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11018 static void dissect_zcl_calendar_cancel(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11020 /*************************/
11021 /* Global Variables */
11022 /*************************/
11024 /* Initialize the protocol and registered fields */
11025 static int proto_zbee_zcl_calendar
;
11027 static int hf_zbee_zcl_calendar_srv_tx_cmd_id
;
11028 static int hf_zbee_zcl_calendar_srv_rx_cmd_id
;
11029 static int hf_zbee_zcl_calendar_attr_id
;
11030 static int hf_zbee_zcl_calendar_attr_reporting_status
;
11031 static int hf_zbee_zcl_calendar_type
;
11032 static int hf_zbee_zcl_calendar_start_time
;
11033 static int hf_zbee_zcl_calendar_earliest_start_time
;
11034 static int hf_zbee_zcl_calendar_time_reference
;
11035 static int hf_zbee_zcl_calendar_name
;
11036 static int hf_zbee_zcl_calendar_command_index
;
11037 static int hf_zbee_zcl_calendar_date_year
;
11038 static int hf_zbee_zcl_calendar_date_month
;
11039 static int hf_zbee_zcl_calendar_date_month_day
;
11040 static int hf_zbee_zcl_calendar_date_week_day
;
11041 static int hf_zbee_zcl_calendar_provider_id
;
11042 static int hf_zbee_zcl_calendar_issuer_event_id
;
11043 static int hf_zbee_zcl_calendar_min_issuer_event_id
;
11044 static int hf_zbee_zcl_calendar_issuer_calendar_id
;
11045 static int hf_zbee_zcl_calendar_day_id
;
11046 static int hf_zbee_zcl_calendar_day_id_ref
;
11047 static int hf_zbee_zcl_calendar_day_id_ref_monday
;
11048 static int hf_zbee_zcl_calendar_day_id_ref_tuesday
;
11049 static int hf_zbee_zcl_calendar_day_id_ref_wednesday
;
11050 static int hf_zbee_zcl_calendar_day_id_ref_thursday
;
11051 static int hf_zbee_zcl_calendar_day_id_ref_friday
;
11052 static int hf_zbee_zcl_calendar_day_id_ref_saturday
;
11053 static int hf_zbee_zcl_calendar_day_id_ref_sunday
;
11054 static int hf_zbee_zcl_calendar_week_id
;
11055 static int hf_zbee_zcl_calendar_week_id_ref
;
11056 static int hf_zbee_zcl_calendar_start_day_id
;
11057 static int hf_zbee_zcl_calendar_start_week_id
;
11058 static int hf_zbee_zcl_calendar_number_of_calendars
;
11059 static int hf_zbee_zcl_calendar_number_of_events
;
11060 static int hf_zbee_zcl_calendar_number_of_days
;
11061 static int hf_zbee_zcl_calendar_number_of_weeks
;
11062 static int hf_zbee_zcl_calendar_number_of_seasons
;
11063 static int hf_zbee_zcl_calendar_number_of_day_profiles
;
11064 static int hf_zbee_zcl_calendar_number_of_week_profiles
;
11065 static int hf_zbee_zcl_calendar_total_number_of_schedule_entries
;
11066 static int hf_zbee_zcl_calendar_total_number_of_special_days
;
11067 static int hf_zbee_zcl_calendar_total_number_of_commands
;
11068 static int hf_zbee_zcl_calendar_schedule_entry_start_time
;
11069 static int hf_zbee_zcl_calendar_schedule_entry_price_tier
;
11070 static int hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable
;
11071 static int hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state
;
11073 /* Initialize the subtree pointers */
11074 static int ett_zbee_zcl_calendar
;
11075 static int ett_zbee_zcl_calendar_special_day_date
;
11076 static int ett_zbee_zcl_calendar_season_start_date
;
11078 #define zbee_zcl_calendar_type_names_VALUE_STRING_LIST(XXX) \
11079 XXX(ZBEE_ZCL_CALENDAR_TYPE_DELIVERED, 0x00, "Delivered Calendar" ) \
11080 XXX(ZBEE_ZCL_CALENDAR_TYPE_RECEIVED, 0x01, "Received Calendar" ) \
11081 XXX(ZBEE_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED, 0x02, "Delivered and Received Calendar" ) \
11082 XXX(ZBEE_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT, 0x03, "Friendly Credit Calendar" ) \
11083 XXX(ZBEE_ZCL_CALENDAR_TYPE_AUXILIARY_LOAD_SWITCH, 0x04, "Auxiliary Load Switch Calendar" )
11085 VALUE_STRING_ENUM(zbee_zcl_calendar_type_names
);
11086 VALUE_STRING_ARRAY(zbee_zcl_calendar_type_names
);
11088 #define zbee_zcl_calendar_time_reference_names_VALUE_STRING_LIST(XXX) \
11089 XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_UTC_TIME, 0x00, "UTC Time" ) \
11090 XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_STANDARD_TIME, 0x01, "Standard Time" ) \
11091 XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_LOCAL_TIME, 0x02, "Local Time" )
11093 VALUE_STRING_ENUM(zbee_zcl_calendar_time_reference_names
);
11094 VALUE_STRING_ARRAY(zbee_zcl_calendar_time_reference_names
);
11096 /*************************/
11097 /* Function Bodies */
11098 /*************************/
11101 *This function is called by ZCL foundation dissector in order to decode
11103 *@param tree pointer to data tree Wireshark uses to display packet.
11104 *@param tvb pointer to buffer containing raw packet.
11105 *@param offset pointer to buffer offset
11106 *@param attr_id attribute identifier
11107 *@param data_type attribute data type
11108 *@param client_attr ZCL client
11111 dissect_zcl_calendar_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
11114 /* applies to all SE clusters */
11115 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_CAL
:
11116 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
11120 default: /* Catch all */
11121 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
11124 } /*dissect_zcl_calendar_attr_data*/
11127 *ZigBee ZCL Calendar cluster dissector for wireshark.
11129 *@param tvb pointer to buffer containing raw packet.
11130 *@param pinfo pointer to packet information fields
11131 *@param tree pointer to data tree Wireshark uses to display packet.
11134 dissect_zbee_zcl_calendar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
11136 proto_tree
*payload_tree
;
11137 zbee_zcl_packet
*zcl
;
11138 unsigned offset
= 0;
11142 /* Reject the packet if data is NULL */
11145 zcl
= (zbee_zcl_packet
*)data
;
11146 cmd_id
= zcl
->cmd_id
;
11148 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
11149 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
11150 /* Append the command name to the info column. */
11151 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
11152 val_to_str_const(cmd_id
, zbee_zcl_calendar_srv_rx_cmd_names
, "Unknown Command"),
11155 /* Add the command ID. */
11156 proto_tree_add_uint(tree
, hf_zbee_zcl_calendar_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
11158 /* Check is this command has a payload, than add the payload tree */
11159 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
11161 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_calendar
, NULL
, "Payload");
11163 /* Call the appropriate command dissector */
11166 case ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR
:
11167 dissect_zcl_calendar_get_calendar(tvb
, payload_tree
, &offset
);
11170 case ZBEE_ZCL_CMD_ID_CAL_GET_DAY_PROFILES
:
11171 dissect_zcl_calendar_get_day_profiles(tvb
, payload_tree
, &offset
);
11174 case ZBEE_ZCL_CMD_ID_CAL_GET_WEEK_PROFILES
:
11175 dissect_zcl_calendar_get_week_profiles(tvb
, payload_tree
, &offset
);
11178 case ZBEE_ZCL_CMD_ID_CAL_GET_SEASONS
:
11179 dissect_zcl_calendar_get_seasons(tvb
, payload_tree
, &offset
);
11182 case ZBEE_ZCL_CMD_ID_CAL_GET_SPECIAL_DAYS
:
11183 dissect_zcl_calendar_get_special_days(tvb
, payload_tree
, &offset
);
11186 case ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR_CANCELLATION
:
11195 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
11196 /* Append the command name to the info column. */
11197 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
11198 val_to_str_const(cmd_id
, zbee_zcl_calendar_srv_tx_cmd_names
, "Unknown Command"),
11201 /* Add the command ID. */
11202 proto_tree_add_uint(tree
, hf_zbee_zcl_calendar_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
11204 /* Check is this command has a payload, than add the payload tree */
11205 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
11207 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_calendar
, NULL
, "Payload");
11209 /* Call the appropriate command dissector */
11212 case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_CALENDAR
:
11213 dissect_zcl_calendar_publish_calendar(tvb
, payload_tree
, &offset
);
11216 case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_DAY_PROFILE
:
11217 dissect_zcl_calendar_publish_day_profile(tvb
, payload_tree
, &offset
);
11220 case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_WEEK_PROFILE
:
11221 dissect_zcl_calendar_publish_week_profile(tvb
, payload_tree
, &offset
);
11224 case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SEASONS
:
11225 dissect_zcl_calendar_publish_seasons(tvb
, payload_tree
, &offset
);
11228 case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SPECIAL_DAYS
:
11229 dissect_zcl_calendar_publish_special_days(tvb
, payload_tree
, &offset
);
11232 case ZBEE_ZCL_CMD_ID_CAL_CANCEL_CALENDAR
:
11233 dissect_zcl_calendar_cancel(tvb
, payload_tree
, &offset
);
11242 return tvb_captured_length(tvb
);
11243 } /*dissect_zbee_zcl_calendar*/
11246 *This function manages the Get Calendar payload
11248 *@param tvb pointer to buffer containing raw packet.
11249 *@param tree pointer to data tree Wireshark uses to display packet.
11250 *@param offset pointer to offset from caller
11253 dissect_zcl_calendar_get_calendar(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11255 /* Earliest Start Time */
11256 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_earliest_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
11259 /* Min Issuer Event ID */
11260 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11263 /* Number of Calendars */
11264 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_calendars
, tvb
, *offset
, 1, ENC_NA
);
11267 /* Calendar Type */
11268 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11272 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11274 } /*dissect_zcl_calendar_get_calendar*/
11277 *This function manages the Get Day Profiles payload
11279 *@param tvb pointer to buffer containing raw packet.
11280 *@param tree pointer to data tree Wireshark uses to display packet.
11281 *@param offset pointer to offset from caller
11284 dissect_zcl_calendar_get_day_profiles(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11287 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11290 /* Issuer Calendar ID */
11291 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11295 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_start_day_id
, tvb
, *offset
, 1, ENC_NA
);
11298 /* Number of Days */
11299 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_days
, tvb
, *offset
, 1, ENC_NA
);
11301 } /*dissect_zcl_calendar_get_day_profiles*/
11304 *This function manages the Get Week Profiles payload
11306 *@param tvb pointer to buffer containing raw packet.
11307 *@param tree pointer to data tree Wireshark uses to display packet.
11308 *@param offset pointer to offset from caller
11311 dissect_zcl_calendar_get_week_profiles(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11314 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11317 /* Issuer Calendar ID */
11318 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11321 /* Start Week Id */
11322 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_start_week_id
, tvb
, *offset
, 1, ENC_NA
);
11325 /* Number of Weeks */
11326 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_weeks
, tvb
, *offset
, 1, ENC_NA
);
11328 } /*dissect_zcl_calendar_get_week_profiles*/
11331 *This function manages the Get Seasons payload
11333 *@param tvb pointer to buffer containing raw packet.
11334 *@param tree pointer to data tree Wireshark uses to display packet.
11335 *@param offset pointer to offset from caller
11338 dissect_zcl_calendar_get_seasons(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11341 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11344 /* Issuer Calendar ID */
11345 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11347 } /*dissect_zcl_calendar_get_seasons*/
11350 *This function manages the Get Special Days payload
11352 *@param tvb pointer to buffer containing raw packet.
11353 *@param tree pointer to data tree Wireshark uses to display packet.
11354 *@param offset pointer to offset from caller
11357 dissect_zcl_calendar_get_special_days(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11360 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
11363 /* Number of Events */
11364 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_events
, tvb
, *offset
, 1, ENC_NA
);
11367 /* Calendar Type */
11368 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11372 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11375 /* Issuer Calendar ID */
11376 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11378 } /*dissect_zcl_calendar_get_special_days*/
11381 *This function manages the Publish Calendar payload
11383 *@param tvb pointer to buffer containing raw packet.
11384 *@param tree pointer to data tree Wireshark uses to display packet.
11385 *@param offset pointer to offset from caller
11388 dissect_zcl_calendar_publish_calendar(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11393 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11396 /* Issuer Event ID */
11397 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11400 /* Issuer Calendar ID */
11401 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11405 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
11408 /* Calendar Type */
11409 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11412 /* Calendar Time Reference */
11413 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_time_reference
, tvb
, *offset
, 1, ENC_NA
);
11416 /* Calendar Name */
11417 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_calendar_name
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
11420 /* Number of Seasons */
11421 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_seasons
, tvb
, *offset
, 1, ENC_NA
);
11424 /* Number of Week Profiles */
11425 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_week_profiles
, tvb
, *offset
, 1, ENC_NA
);
11428 /* Number of Day Profiles */
11429 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_number_of_day_profiles
, tvb
, *offset
, 1, ENC_NA
);
11431 } /*dissect_zcl_calendar_publish_calendar*/
11434 *This function manages the Publish Day Profile payload
11436 *@param tvb pointer to buffer containing raw packet.
11437 *@param tree pointer to data tree Wireshark uses to display packet.
11438 *@param offset pointer to offset from caller
11441 dissect_zcl_calendar_publish_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11443 uint8_t schedule_entries_count
;
11444 uint8_t calendar_type
;
11447 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11450 /* Issuer Event ID */
11451 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11454 /* Issuer Calendar ID */
11455 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11459 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id
, tvb
, *offset
, 1, ENC_NA
);
11462 /* Total Number of Schedule Entries */
11463 schedule_entries_count
= tvb_get_uint8(tvb
, *offset
);
11464 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_total_number_of_schedule_entries
, tvb
, *offset
, 1, ENC_NA
);
11467 /* Command Index */
11468 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_command_index
, tvb
, *offset
, 1, ENC_NA
);
11471 /* Total Number of Commands */
11472 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
11475 /* Calendar Type */
11476 calendar_type
= tvb_get_uint8(tvb
, *offset
);
11477 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11480 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) >= 3 && i
< schedule_entries_count
; i
++) {
11482 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_schedule_entry_start_time
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
11485 switch (calendar_type
) {
11486 /* Rate Start Time */
11487 case ZBEE_ZCL_CALENDAR_TYPE_DELIVERED
:
11488 case ZBEE_ZCL_CALENDAR_TYPE_RECEIVED
:
11489 case ZBEE_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED
:
11491 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_schedule_entry_price_tier
, tvb
, *offset
, 1, ENC_NA
);
11495 /* Friendly Credit Start Time */
11496 case ZBEE_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT
:
11498 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable
, tvb
, *offset
, 1, ENC_NA
);
11502 /* Auxiliary Load Start Time */
11503 case ZBEE_ZCL_CALENDAR_TYPE_AUXILIARY_LOAD_SWITCH
:
11505 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state
, tvb
, *offset
, 1, ENC_NA
);
11510 } /*dissect_zcl_calendar_publish_day_profile*/
11513 *This function manages the Publish Week Profile payload
11515 *@param tvb pointer to buffer containing raw packet.
11516 *@param tree pointer to data tree Wireshark uses to display packet.
11517 *@param offset pointer to offset from caller
11520 dissect_zcl_calendar_publish_week_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11523 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11526 /* Issuer Event ID */
11527 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11530 /* Issuer Calendar ID */
11531 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11535 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_week_id
, tvb
, *offset
, 1, ENC_NA
);
11538 /* Day ID Ref Monday */
11539 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_monday
, tvb
, *offset
, 1, ENC_NA
);
11542 /* Day ID Ref Tuesday */
11543 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_tuesday
, tvb
, *offset
, 1, ENC_NA
);
11546 /* Day ID Ref Wednesday */
11547 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_wednesday
, tvb
, *offset
, 1, ENC_NA
);
11550 /* Day ID Ref Thursday */
11551 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_thursday
, tvb
, *offset
, 1, ENC_NA
);
11554 /* Day ID Ref Friday */
11555 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_friday
, tvb
, *offset
, 1, ENC_NA
);
11558 /* Day ID Ref Saturday */
11559 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_saturday
, tvb
, *offset
, 1, ENC_NA
);
11562 /* Day ID Ref Sunday */
11563 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref_sunday
, tvb
, *offset
, 1, ENC_NA
);
11565 } /*dissect_zcl_calendar_publish_week_profile*/
11568 *This function manages the Publish Season Profile payload
11570 *@param tvb pointer to buffer containing raw packet.
11571 *@param tree pointer to data tree Wireshark uses to display packet.
11572 *@param offset pointer to offset from caller
11575 dissect_zcl_calendar_publish_seasons(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11578 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11581 /* Issuer Event ID */
11582 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11585 /* Issuer Calendar ID */
11586 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11589 /* Command Index */
11590 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_command_index
, tvb
, *offset
, 1, ENC_NA
);
11593 /* Total Number of Commands */
11594 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
11597 while (tvb_reported_length_remaining(tvb
, *offset
) >= 5) {
11598 /* Season Start Date */
11599 dissect_zcl_date(tvb
, tree
, offset
, ett_zbee_zcl_calendar_season_start_date
, "Season Start Date", hf_zbee_zcl_calendar_date_year
, hf_zbee_zcl_calendar_date_month
, hf_zbee_zcl_calendar_date_month_day
, hf_zbee_zcl_calendar_date_week_day
);
11602 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_week_id_ref
, tvb
, *offset
, 1, ENC_NA
);
11605 } /*dissect_zcl_calendar_publish_seasons*/
11608 *This function manages the Publish Special Days payload
11610 *@param tvb pointer to buffer containing raw packet.
11611 *@param tree pointer to data tree Wireshark uses to display packet.
11612 *@param offset pointer to offset from caller
11615 dissect_zcl_calendar_publish_special_days(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11617 uint8_t total_special_days_count
;
11620 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11623 /* Issuer Event ID */
11624 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11627 /* Issuer Calendar ID */
11628 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11632 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
11635 /* Calendar Type */
11636 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11639 /* Total Number of Special Days */
11640 total_special_days_count
= tvb_get_uint8(tvb
, *offset
);
11641 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_total_number_of_special_days
, tvb
, *offset
, 1, ENC_NA
);
11644 /* Command Index */
11645 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_command_index
, tvb
, *offset
, 1, ENC_NA
);
11648 /* Total Number of Commands */
11649 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_total_number_of_commands
, tvb
, *offset
, 1, ENC_NA
);
11652 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) >= 5 && i
< total_special_days_count
; i
++) {
11653 /* Special Day Date */
11654 dissect_zcl_date(tvb
, tree
, offset
, ett_zbee_zcl_calendar_special_day_date
, "Special Day Date", hf_zbee_zcl_calendar_date_year
, hf_zbee_zcl_calendar_date_month
, hf_zbee_zcl_calendar_date_month_day
, hf_zbee_zcl_calendar_date_week_day
);
11657 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_day_id_ref
, tvb
, *offset
, 1, ENC_NA
);
11660 } /*dissect_zcl_calendar_publish_special_days*/
11663 *This function manages the Cancel Calendar payload
11665 *@param tvb pointer to buffer containing raw packet.
11666 *@param tree pointer to data tree Wireshark uses to display packet.
11667 *@param offset pointer to offset from caller
11670 dissect_zcl_calendar_cancel(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
11673 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11676 /* Issuer Calendar ID */
11677 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_issuer_calendar_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
11680 /* Calendar Type */
11681 proto_tree_add_item(tree
, hf_zbee_zcl_calendar_type
, tvb
, *offset
, 1, ENC_NA
);
11683 } /*dissect_zcl_calendar_cancel*/
11686 *This function registers the ZCL Calendar dissector
11690 proto_register_zbee_zcl_calendar(void)
11692 static hf_register_info hf
[] = {
11694 { &hf_zbee_zcl_calendar_attr_id
,
11695 { "Attribute", "zbee_zcl_se.calendar.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_calendar_attr_names
),
11696 0x0, NULL
, HFILL
} },
11698 { &hf_zbee_zcl_calendar_attr_reporting_status
, /* common to all SE clusters */
11699 { "Attribute Reporting Status", "zbee_zcl_se.calendar.attr.attr_reporting_status",
11700 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
11702 { &hf_zbee_zcl_calendar_srv_tx_cmd_id
,
11703 { "Command", "zbee_zcl_se.calendar.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_calendar_srv_tx_cmd_names
),
11704 0x00, NULL
, HFILL
} },
11706 { &hf_zbee_zcl_calendar_srv_rx_cmd_id
,
11707 { "Command", "zbee_zcl_se.calendar.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_calendar_srv_rx_cmd_names
),
11708 0x00, NULL
, HFILL
} },
11710 { &hf_zbee_zcl_calendar_type
,
11711 { "Calendar Type", "zbee_zcl_se.calendar.type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_calendar_type_names
),
11712 0x00, NULL
, HFILL
} },
11714 { &hf_zbee_zcl_calendar_start_time
,
11715 { "Start Time", "zbee_zcl_se.calendar.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
11716 0x00, NULL
, HFILL
} },
11718 { &hf_zbee_zcl_calendar_earliest_start_time
,
11719 { "Earliest Start Time", "zbee_zcl_se.calendar.earliest_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
11720 0x00, NULL
, HFILL
} },
11722 { &hf_zbee_zcl_calendar_time_reference
,
11723 { "Calendar Time Reference", "zbee_zcl_se.calendar.time_reference", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_calendar_time_reference_names
),
11724 0x00, NULL
, HFILL
} },
11726 { &hf_zbee_zcl_calendar_name
,
11727 { "Calendar Name", "zbee_zcl_se.calendar.name", FT_UINT_STRING
, BASE_NONE
, NULL
,
11728 0x00, NULL
, HFILL
} },
11730 { &hf_zbee_zcl_calendar_command_index
,
11731 { "Command Index", "zbee_zcl_se.calendar.command_index", FT_UINT8
, BASE_DEC
, NULL
,
11732 0x00, NULL
, HFILL
} },
11734 { &hf_zbee_zcl_calendar_date_year
,
11735 { "Year", "zbee_zcl_se.calendar.date.year", FT_UINT8
, BASE_DEC
, NULL
,
11736 0x00, NULL
, HFILL
} },
11738 { &hf_zbee_zcl_calendar_date_month
,
11739 { "Month", "zbee_zcl_se.calendar.date.month", FT_UINT8
, BASE_DEC
, NULL
,
11740 0x00, NULL
, HFILL
} },
11742 { &hf_zbee_zcl_calendar_date_month_day
,
11743 { "Month Day", "zbee_zcl_se.calendar.date.month_day", FT_UINT8
, BASE_DEC
, NULL
,
11744 0x00, NULL
, HFILL
} },
11746 { &hf_zbee_zcl_calendar_date_week_day
,
11747 { "Week Day", "zbee_zcl_se.calendar.date.week_day", FT_UINT8
, BASE_DEC
, NULL
,
11748 0x00, NULL
, HFILL
} },
11750 { &hf_zbee_zcl_calendar_provider_id
,
11751 { "Provider ID", "zbee_zcl_se.calendar.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
11752 0x00, NULL
, HFILL
} },
11754 { &hf_zbee_zcl_calendar_issuer_event_id
,
11755 { "Issuer Event ID", "zbee_zcl_se.calendar.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
11756 0x00, NULL
, HFILL
} },
11758 { &hf_zbee_zcl_calendar_min_issuer_event_id
,
11759 { "Min. Issuer Event ID", "zbee_zcl_se.calendar.min_issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
11760 0x00, NULL
, HFILL
} },
11762 { &hf_zbee_zcl_calendar_issuer_calendar_id
,
11763 { "Issuer Calendar ID", "zbee_zcl_se.calendar.issuer_calendar_id", FT_UINT32
, BASE_DEC
, NULL
,
11764 0x00, NULL
, HFILL
} },
11766 { &hf_zbee_zcl_calendar_day_id
,
11767 { "Day ID", "zbee_zcl_se.calendar.day_id", FT_UINT8
, BASE_DEC
, NULL
,
11768 0x00, NULL
, HFILL
} },
11770 { &hf_zbee_zcl_calendar_day_id_ref
,
11771 { "Day ID Ref", "zbee_zcl_se.calendar.day_id_ref", FT_UINT8
, BASE_DEC
, NULL
,
11772 0x00, NULL
, HFILL
} },
11774 { &hf_zbee_zcl_calendar_day_id_ref_monday
,
11775 { "Day ID Ref Monday", "zbee_zcl_se.calendar.day_id_ref_monday", FT_UINT8
, BASE_DEC
, NULL
,
11776 0x00, NULL
, HFILL
} },
11778 { &hf_zbee_zcl_calendar_day_id_ref_tuesday
,
11779 { "Day ID Ref Tuesday", "zbee_zcl_se.calendar.day_id_ref_tuesday", FT_UINT8
, BASE_DEC
, NULL
,
11780 0x00, NULL
, HFILL
} },
11782 { &hf_zbee_zcl_calendar_day_id_ref_wednesday
,
11783 { "Day ID Ref Wednesday", "zbee_zcl_se.calendar.day_id_ref_wednesday", FT_UINT8
, BASE_DEC
, NULL
,
11784 0x00, NULL
, HFILL
} },
11786 { &hf_zbee_zcl_calendar_day_id_ref_thursday
,
11787 { "Day ID Ref Thursday", "zbee_zcl_se.calendar.day_id_ref_thursday", FT_UINT8
, BASE_DEC
, NULL
,
11788 0x00, NULL
, HFILL
} },
11790 { &hf_zbee_zcl_calendar_day_id_ref_friday
,
11791 { "Day ID Ref Friday", "zbee_zcl_se.calendar.day_id_ref_friday", FT_UINT8
, BASE_DEC
, NULL
,
11792 0x00, NULL
, HFILL
} },
11794 { &hf_zbee_zcl_calendar_day_id_ref_saturday
,
11795 { "Day ID Ref Saturday", "zbee_zcl_se.calendar.day_id_ref_saturday", FT_UINT8
, BASE_DEC
, NULL
,
11796 0x00, NULL
, HFILL
} },
11798 { &hf_zbee_zcl_calendar_day_id_ref_sunday
,
11799 { "Day ID Ref Sunday", "zbee_zcl_se.calendar.day_id_ref_sunday", FT_UINT8
, BASE_DEC
, NULL
,
11800 0x00, NULL
, HFILL
} },
11802 { &hf_zbee_zcl_calendar_week_id
,
11803 { "Week ID", "zbee_zcl_se.calendar.week_id", FT_UINT8
, BASE_DEC
, NULL
,
11804 0x00, NULL
, HFILL
} },
11806 { &hf_zbee_zcl_calendar_week_id_ref
,
11807 { "Week ID Ref", "zbee_zcl_se.calendar.week_id_ref", FT_UINT8
, BASE_DEC
, NULL
,
11808 0x00, NULL
, HFILL
} },
11810 { &hf_zbee_zcl_calendar_start_day_id
,
11811 { "Start Day ID", "zbee_zcl_se.calendar.start_day_id", FT_UINT8
, BASE_DEC
, NULL
,
11812 0x00, NULL
, HFILL
} },
11814 { &hf_zbee_zcl_calendar_start_week_id
,
11815 { "Start Week ID", "zbee_zcl_se.calendar.start_week_id", FT_UINT8
, BASE_DEC
, NULL
,
11816 0x00, NULL
, HFILL
} },
11818 { &hf_zbee_zcl_calendar_number_of_calendars
,
11819 { "Number of Calendars", "zbee_zcl_se.calendar.number_of_calendars", FT_UINT8
, BASE_DEC
, NULL
,
11820 0x00, NULL
, HFILL
} },
11822 { &hf_zbee_zcl_calendar_number_of_events
,
11823 { "Number of Events", "zbee_zcl_se.calendar.number_of_events", FT_UINT8
, BASE_DEC
, NULL
,
11824 0x00, NULL
, HFILL
} },
11826 { &hf_zbee_zcl_calendar_number_of_days
,
11827 { "Number of Days", "zbee_zcl_se.calendar.number_of_days", FT_UINT8
, BASE_DEC
, NULL
,
11828 0x00, NULL
, HFILL
} },
11830 { &hf_zbee_zcl_calendar_number_of_weeks
,
11831 { "Number of Weeks", "zbee_zcl_se.calendar.number_of_weeks", FT_UINT8
, BASE_DEC
, NULL
,
11832 0x00, NULL
, HFILL
} },
11834 { &hf_zbee_zcl_calendar_number_of_seasons
,
11835 { "Number of Seasons", "zbee_zcl_se.calendar.number_of_seasons", FT_UINT8
, BASE_DEC
, NULL
,
11836 0x00, NULL
, HFILL
} },
11838 { &hf_zbee_zcl_calendar_number_of_day_profiles
,
11839 { "Number of Day Profiles", "zbee_zcl_se.calendar.number_of_day_profiles", FT_UINT8
, BASE_DEC
, NULL
,
11840 0x00, NULL
, HFILL
} },
11842 { &hf_zbee_zcl_calendar_number_of_week_profiles
,
11843 { "Number of Week Profiles", "zbee_zcl_se.calendar.number_of_week_profiles", FT_UINT8
, BASE_DEC
, NULL
,
11844 0x00, NULL
, HFILL
} },
11846 { &hf_zbee_zcl_calendar_total_number_of_schedule_entries
,
11847 { "Total Number of Schedule Entries", "zbee_zcl_se.calendar.total_number_of_schedule_entries", FT_UINT8
, BASE_DEC
, NULL
,
11848 0x00, NULL
, HFILL
} },
11850 { &hf_zbee_zcl_calendar_total_number_of_special_days
,
11851 { "Total Number of Special Days", "zbee_zcl_se.calendar.total_number_of_special_days", FT_UINT8
, BASE_DEC
, NULL
,
11852 0x00, NULL
, HFILL
} },
11854 { &hf_zbee_zcl_calendar_total_number_of_commands
,
11855 { "Total Number of Commands", "zbee_zcl_se.calendar.total_number_of_commands", FT_UINT8
, BASE_DEC
, NULL
,
11856 0x00, NULL
, HFILL
} },
11858 { &hf_zbee_zcl_calendar_schedule_entry_start_time
,
11859 { "Start Time", "zbee_zcl_se.calendar.schedule_entry.start_time", FT_UINT16
, BASE_DEC
, NULL
,
11860 0x00, NULL
, HFILL
} },
11862 { &hf_zbee_zcl_calendar_schedule_entry_price_tier
,
11863 { "Price Tier", "zbee_zcl_se.calendar.schedule_entry.price_tier", FT_UINT8
, BASE_DEC
, NULL
,
11864 0x00, NULL
, HFILL
} },
11866 { &hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable
,
11867 { "Friendly Credit Enable", "zbee_zcl_se.calendar.schedule_entry.friendly_credit_enable", FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_enabled_disabled
),
11868 0x00, NULL
, HFILL
} },
11870 { &hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state
,
11871 { "Auxiliary Load Switch State", "zbee_zcl_se.calendar.schedule_entry.auxiliary_load_switch_state", FT_UINT8
, BASE_HEX
, NULL
,
11872 0x00, NULL
, HFILL
} },
11876 /* ZCL Calendar subtrees */
11878 &ett_zbee_zcl_calendar
,
11879 &ett_zbee_zcl_calendar_special_day_date
,
11880 &ett_zbee_zcl_calendar_season_start_date
,
11883 /* Register the ZigBee ZCL Calendar cluster protocol name and description */
11884 proto_zbee_zcl_calendar
= proto_register_protocol("ZigBee ZCL Calendar", "ZCL Calendar", ZBEE_PROTOABBREV_ZCL_CALENDAR
);
11885 proto_register_field_array(proto_zbee_zcl_calendar
, hf
, array_length(hf
));
11886 proto_register_subtree_array(ett
, array_length(ett
));
11888 /* Register the ZigBee ZCL Calendar dissector. */
11889 register_dissector(ZBEE_PROTOABBREV_ZCL_CALENDAR
, dissect_zbee_zcl_calendar
, proto_zbee_zcl_calendar
);
11890 } /*proto_register_zbee_zcl_calendar*/
11893 *Hands off the ZCL Calendar dissector.
11897 proto_reg_handoff_zbee_zcl_calendar(void)
11899 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_CALENDAR
,
11900 proto_zbee_zcl_calendar
,
11901 ett_zbee_zcl_calendar
,
11902 ZBEE_ZCL_CID_CALENDAR
,
11903 ZBEE_MFG_CODE_NONE
,
11904 hf_zbee_zcl_calendar_attr_id
,
11906 hf_zbee_zcl_calendar_srv_rx_cmd_id
,
11907 hf_zbee_zcl_calendar_srv_tx_cmd_id
,
11908 (zbee_zcl_fn_attr_data
)dissect_zcl_calendar_attr_data
11910 } /*proto_reg_handoff_zbee_zcl_calendar*/
11912 /* ----------------------- Daily Schedule cluster ---------------------- */
11914 #define zbee_zcl_daily_schedule_attr_names_VALUE_STRING_LIST(XXX) \
11915 /* Auxiliary Switch Label Attribute Set */ \
11916 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_1_LABEL, 0x0000, "Aux Switch 1 Label" ) \
11917 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_2_LABEL, 0x0001, "Aux Switch 2 Label" ) \
11918 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_3_LABEL, 0x0002, "Aux Switch 3 Label" ) \
11919 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_4_LABEL, 0x0003, "Aux Switch 4 Label" ) \
11920 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_5_LABEL, 0x0004, "Aux Switch 5 Label" ) \
11921 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_6_LABEL, 0x0005, "Aux Switch 6 Label" ) \
11922 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_7_LABEL, 0x0006, "Aux Switch 7 Label" ) \
11923 XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_8_LABEL, 0x0007, "Aux Switch 8 Label" ) \
11924 XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_AUX_LOAD_SWITCH_STATE, 0x0100, "Current Auxiliary Load Switch State" ) \
11925 XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_DELIVERED_TIER, 0x0101, "Current Delivered Tier" ) \
11926 XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_TIER_LABEL, 0x0102, "Current Tier Label" ) \
11927 XXX(ZBEE_ZCL_ATTR_ID_DSH_LINKY_PEAK_PERIOD_STATUS, 0x0103, "Linky Peak Period Status" ) \
11928 XXX(ZBEE_ZCL_ATTR_ID_DSH_PEAK_START_TIME, 0x0104, "Peak Start Time" ) \
11929 XXX(ZBEE_ZCL_ATTR_ID_DSH_PEAK_END_TIME, 0x0105, "Peak End Time" ) \
11930 XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_TARIFF_LABEL, 0x0106, "Current Tariff Label" ) \
11932 VALUE_STRING_ENUM(zbee_zcl_daily_schedule_attr_names);
11933 VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_attr_names
);
11935 /* Server Commands Received */
11936 #define zbee_zcl_daily_schedule_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
11937 XXX(ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE, 0x00, "Get Schedule" ) \
11938 XXX(ZBEE_ZCL_CMD_ID_DSH_GET_DAY_PROFILE, 0x01, "Get Day Profile" ) \
11939 XXX(ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE_CANCELLATION, 0x05, "Get Schedule Cancellation" ) \
11941 VALUE_STRING_ENUM(zbee_zcl_daily_schedule_srv_rx_cmd_names);
11942 VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_srv_rx_cmd_names
);
11944 /* Server Commands Generated */
11945 #define zbee_zcl_daily_schedule_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
11946 XXX(ZBEE_ZCL_CMD_ID_DSH_PUBLISH_SCHEDULE, 0x00, "Publish Schedule" ) \
11947 XXX(ZBEE_ZCL_CMD_ID_DSH_PUBLISH_DAY_PROFILE, 0x01, "Publish Day Profile" ) \
11948 XXX(ZBEE_ZCL_CMD_ID_DSH_CANCEL_SCHEDULE, 0x05, "Cancel Schedule" ) \
11950 VALUE_STRING_ENUM(zbee_zcl_daily_schedule_srv_tx_cmd_names);
11951 VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_srv_tx_cmd_names
);
11953 /*************************/
11954 /* Function Declarations */
11955 /*************************/
11956 void proto_register_zbee_zcl_daily_schedule(void);
11957 void proto_reg_handoff_zbee_zcl_daily_schedule(void);
11959 /* Attribute Dissector Helpers */
11960 static void dissect_zcl_daily_schedule_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
11962 /* Command Dissector Helpers */
11963 static void dissect_zcl_daily_schedule_get_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11964 static void dissect_zcl_daily_schedule_get_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11965 static void dissect_zcl_daily_schedule_publish_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11966 static void dissect_zcl_daily_schedule_publish_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11967 static void dissect_zcl_daily_schedule_cancel_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
11969 /*************************/
11970 /* Global Variables */
11971 /*************************/
11973 /* Initialize the protocol and registered fields */
11974 static int proto_zbee_zcl_daily_schedule
;
11976 static int hf_zbee_zcl_daily_schedule_srv_tx_cmd_id
;
11977 static int hf_zbee_zcl_daily_schedule_srv_rx_cmd_id
;
11978 static int hf_zbee_zcl_daily_schedule_attr_server_id
;
11979 /* Get Schedule cmd */
11980 static int hf_zbee_zcl_daily_schedule_type
;
11981 static int hf_zbee_zcl_daily_schedule_name
;
11982 static int hf_zbee_zcl_daily_schedule_start_time
;
11983 static int hf_zbee_zcl_daily_schedule_earliest_start_time
;
11984 static int hf_zbee_zcl_daily_schedule_command_index
;
11985 static int hf_zbee_zcl_daily_schedule_id
;
11986 static int hf_zbee_zcl_daily_schedule_time_reference
;
11987 static int hf_zbee_zcl_daily_schedule_provider_id
;
11988 static int hf_zbee_zcl_daily_schedule_issuer_event_id
;
11989 static int hf_zbee_zcl_daily_schedule_min_issuer_event_id
;
11990 static int hf_zbee_zcl_daily_schedule_number_of_schedules
;
11991 static int hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries
;
11992 static int hf_zbee_zcl_daily_schedule_schedule_entry_start_time
;
11993 static int hf_zbee_zcl_daily_schedule_schedule_entry_price_tier
;
11994 static int hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state
;
11996 /* Initialize the subtree pointers */
11997 static int ett_zbee_zcl_daily_schedule
;
11999 #define zbee_zcl_daily_schedule_type_names_VALUE_STRING_LIST(XXX) \
12000 XXX(ZBEE_ZCL_SCHEDULE_TYPE_LINKY_SCHEDULE, 0x00, "Linky Schedule" ) \
12002 VALUE_STRING_ENUM(zbee_zcl_daily_schedule_type_names);
12003 VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_type_names
);
12005 #define zbee_zcl_daily_schedule_time_reference_names_VALUE_STRING_LIST(XXX) \
12006 XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_UTC_TIME, 0x00, "UTC Time" ) \
12007 XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_STANDARD_TIME, 0x01, "Standard Time" ) \
12008 XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_LOCAL_TIME, 0x02, "Local Time" )
12010 VALUE_STRING_ENUM(zbee_zcl_daily_schedule_time_reference_names
);
12011 VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_time_reference_names
);
12014 *ZigBee ZCL Daily Schedule cluster dissector for wireshark.
12016 *@param tvb pointer to buffer containing raw packet.
12017 *@param pinfo pointer to packet information fields
12018 *@param tree pointer to data tree Wireshark uses to display packet.
12021 dissect_zbee_zcl_daily_schedule(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
12023 proto_tree
*payload_tree
;
12024 zbee_zcl_packet
*zcl
;
12025 unsigned offset
= 0;
12029 /* Reject the packet if data is NULL */
12032 zcl
= (zbee_zcl_packet
*)data
;
12033 cmd_id
= zcl
->cmd_id
;
12035 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
12036 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
12037 /* Append the command name to the info column. */
12038 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
12039 val_to_str_const(cmd_id
, zbee_zcl_calendar_srv_rx_cmd_names
, "Unknown Command"),
12042 /* Add the command ID. */
12043 proto_tree_add_uint(tree
, hf_zbee_zcl_daily_schedule_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
12045 /* Check is this command has a payload, than add the payload tree */
12046 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
12048 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_daily_schedule
, NULL
, "Payload");
12050 /* Call the appropriate command dissector */
12053 case ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE
:
12054 dissect_zcl_daily_schedule_get_schedule(tvb
, payload_tree
, &offset
);
12057 case ZBEE_ZCL_CMD_ID_DSH_GET_DAY_PROFILE
:
12058 dissect_zcl_daily_schedule_get_day_profile(tvb
, payload_tree
, &offset
);
12061 case ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE_CANCELLATION
:
12070 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
12071 /* Append the command name to the info column. */
12072 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
12073 val_to_str_const(cmd_id
, zbee_zcl_daily_schedule_srv_tx_cmd_names
, "Unknown Command"),
12076 /* Add the command ID. */
12077 proto_tree_add_uint(tree
, hf_zbee_zcl_daily_schedule_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
12079 /* Check is this command has a payload, than add the payload tree */
12080 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
12082 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_daily_schedule
, NULL
, "Payload");
12084 /* Call the appropriate command dissector */
12087 case ZBEE_ZCL_CMD_ID_DSH_PUBLISH_SCHEDULE
:
12088 dissect_zcl_daily_schedule_publish_schedule(tvb
, payload_tree
, &offset
);
12091 case ZBEE_ZCL_CMD_ID_DSH_PUBLISH_DAY_PROFILE
:
12092 dissect_zcl_daily_schedule_publish_day_profile(tvb
, payload_tree
, &offset
);
12095 case ZBEE_ZCL_CMD_ID_DSH_CANCEL_SCHEDULE
:
12096 dissect_zcl_daily_schedule_cancel_schedule(tvb
, payload_tree
, &offset
);
12105 return tvb_captured_length(tvb
);
12106 } /*dissect_zbee_zcl_daily_schedule*/
12109 *This function manages the Publish Calendar payload
12111 *@param tvb pointer to buffer containing raw packet.
12112 *@param tree pointer to data tree Wireshark uses to display packet.
12113 *@param offset pointer to offset from caller
12116 dissect_zcl_daily_schedule_publish_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
12121 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12124 /* Issuer Event ID */
12125 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12129 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12133 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
12136 /* Schedule Type */
12137 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_type
, tvb
, *offset
, 1, ENC_NA
);
12140 /* Schedule Time Reference */
12141 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_time_reference
, tvb
, *offset
, 1, ENC_NA
);
12144 /* Schedule Name */
12145 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_daily_schedule_name
, tvb
, *offset
, 1, ENC_NA
| ENC_ZIGBEE
, &length
);
12147 } /*dissect_zcl_daily_schedule_publish_schedule*/
12150 *This function manages the Publish Day Profile payload
12152 *@param tvb pointer to buffer containing raw packet.
12153 *@param tree pointer to data tree Wireshark uses to display packet.
12154 *@param offset pointer to offset from caller
12157 dissect_zcl_daily_schedule_publish_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
12159 uint8_t schedule_entries_count
;
12160 uint8_t calendar_type
;
12163 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12166 /* Issuer Event ID */
12167 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12170 /* Issuer Calendar ID */
12171 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12174 /* Total Number of Schedule Entries */
12175 schedule_entries_count
= tvb_get_uint8(tvb
, *offset
);
12176 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries
, tvb
, *offset
, 1, ENC_NA
);
12179 /* Command Index */
12180 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_command_index
, tvb
, *offset
, 1, ENC_NA
);
12183 /* Number of Schedules */
12184 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_number_of_schedules
, tvb
, *offset
, 1, ENC_NA
);
12187 /* Calendar Type */
12188 calendar_type
= tvb_get_uint8(tvb
, *offset
);
12189 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_type
, tvb
, *offset
, 1, ENC_NA
);
12192 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) >= 4 && i
< schedule_entries_count
; i
++) {
12194 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_schedule_entry_start_time
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
12197 switch (calendar_type
) {
12198 /* Rate Start Time */
12199 case ZBEE_ZCL_SCHEDULE_TYPE_LINKY_SCHEDULE
:
12201 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_schedule_entry_price_tier
, tvb
, *offset
, 1, ENC_NA
);
12203 /* Auxiliary Load Switch State */
12204 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state
, tvb
, *offset
, 1, ENC_NA
);
12209 } /*dissect_zcl_daily_schedule_publish_day_profile*/
12212 *This function manages the Cancel Calendar payload
12214 *@param tvb pointer to buffer containing raw packet.
12215 *@param tree pointer to data tree Wireshark uses to display packet.
12216 *@param offset pointer to offset from caller
12219 dissect_zcl_daily_schedule_cancel_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
12222 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12225 /* Issuer Calendar ID */
12226 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12229 /* Schedule Type */
12230 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_type
, tvb
, *offset
, 1, ENC_NA
);
12232 } /*dissect_zcl_calendar_cancel*/
12235 *This function manages the Get Calendar payload
12237 *@param tvb pointer to buffer containing raw packet.
12238 *@param tree pointer to data tree Wireshark uses to display packet.
12239 *@param offset pointer to offset from caller
12242 dissect_zcl_daily_schedule_get_schedule(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
12245 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12248 /* Earliest Start Time */
12249 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_earliest_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
12252 /* Min Issuer Event ID */
12253 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_min_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12256 /* Number of Schedules */
12257 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_number_of_schedules
, tvb
, *offset
, 1, ENC_NA
);
12260 /* Schedule Type */
12261 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_type
, tvb
, *offset
, 1, ENC_NA
);
12263 } /*dissect_zcl_daily_schedule_get_schedule*/
12266 *This function manages the Get Day Profiles payload
12268 *@param tvb pointer to buffer containing raw packet.
12269 *@param tree pointer to data tree Wireshark uses to display packet.
12270 *@param offset pointer to offset from caller
12273 dissect_zcl_daily_schedule_get_day_profile(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
12276 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12280 proto_tree_add_item(tree
, hf_zbee_zcl_daily_schedule_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
12282 } /*dissect_zcl_daily_schedule_get_day_profile*/
12285 *This function is called by ZCL foundation dissector in order to decode
12287 *@param tree pointer to data tree Wireshark uses to display packet.
12288 *@param tvb pointer to buffer containing raw packet.
12289 *@param offset pointer to buffer offset
12290 *@param attr_id attribute identifier
12291 *@param data_type attribute data type
12294 dissect_zcl_daily_schedule_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
12298 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
12299 } /*dissect_zcl_calendar_attr_data*/
12302 *This function registers the ZCL Calendar dissector
12306 proto_register_zbee_zcl_daily_schedule(void)
12308 static hf_register_info hf
[] = {
12310 { &hf_zbee_zcl_daily_schedule_attr_server_id
,
12311 { "Attribute", "zbee_zcl_se.daily_schedule.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_daily_schedule_attr_names
),
12312 0x0, NULL
, HFILL
} },
12314 { &hf_zbee_zcl_daily_schedule_srv_tx_cmd_id
,
12315 { "Command", "zbee_zcl_se.daily_schedule.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_daily_schedule_srv_tx_cmd_names
),
12316 0x00, NULL
, HFILL
} },
12318 { &hf_zbee_zcl_daily_schedule_srv_rx_cmd_id
,
12319 { "Command", "zbee_zcl_se.daily_schedule.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_daily_schedule_srv_rx_cmd_names
),
12320 0x00, NULL
, HFILL
} },
12322 { &hf_zbee_zcl_daily_schedule_type
,
12323 { "Schedule Type", "zbee_zcl_se.daily_schedule.type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_daily_schedule_type_names
),
12324 0x00, NULL
, HFILL
} },
12326 { &hf_zbee_zcl_daily_schedule_start_time
,
12327 { "Start Time", "zbee_zcl_se.daily_schedule.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
12328 0x00, NULL
, HFILL
} },
12330 { &hf_zbee_zcl_daily_schedule_earliest_start_time
,
12331 { "Earliest Start Time", "zbee_zcl_se.daily_schedule.earliest_start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
12332 0x00, NULL
, HFILL
} },
12334 { &hf_zbee_zcl_daily_schedule_time_reference
,
12335 { "Schedule Time Reference", "zbee_zcl_se.daily_schedule.time_reference", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_daily_schedule_time_reference_names
),
12336 0x00, NULL
, HFILL
} },
12338 { &hf_zbee_zcl_daily_schedule_name
,
12339 { "Schedule Name", "zbee_zcl_se.daily_schedule.name", FT_UINT_STRING
, BASE_NONE
, NULL
,
12340 0x00, NULL
, HFILL
} },
12342 { &hf_zbee_zcl_daily_schedule_command_index
,
12343 { "Command Index", "zbee_zcl_se.daily_schedule.command_index", FT_UINT8
, BASE_DEC
, NULL
,
12344 0x00, NULL
, HFILL
} },
12346 { &hf_zbee_zcl_daily_schedule_provider_id
,
12347 { "Provider ID", "zbee_zcl_se.daily_schedule.provider_id", FT_UINT32
, BASE_DEC
, NULL
,
12348 0x00, NULL
, HFILL
} },
12350 { &hf_zbee_zcl_daily_schedule_issuer_event_id
,
12351 { "Issuer Event ID", "zbee_zcl_se.daily_schedule.issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
12352 0x00, NULL
, HFILL
} },
12354 { &hf_zbee_zcl_daily_schedule_min_issuer_event_id
,
12355 { "Min. Issuer Event ID", "zbee_zcl_se.daily_schedule.min_issuer_event_id", FT_UINT32
, BASE_DEC
, NULL
,
12356 0x00, NULL
, HFILL
} },
12358 { &hf_zbee_zcl_daily_schedule_id
,
12359 { "Schedule ID", "zbee_zcl_se.daily_schedule.id", FT_UINT32
, BASE_DEC
, NULL
,
12360 0x00, NULL
, HFILL
} },
12362 { &hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries
,
12363 { "Total Number of Schedule Entries", "zbee_zcl_se.daily_schedule.total_number_of_schedule_entries", FT_UINT8
, BASE_DEC
, NULL
,
12364 0x00, NULL
, HFILL
} },
12366 { &hf_zbee_zcl_daily_schedule_number_of_schedules
,
12367 { "Number of Schedules", "zbee_zcl_se.daily_schedule.number_of_schedules", FT_UINT8
, BASE_DEC
, NULL
,
12368 0x00, NULL
, HFILL
} },
12370 { &hf_zbee_zcl_daily_schedule_schedule_entry_start_time
,
12371 { "Start Time", "zbee_zcl_se.daily_schedule.schedule_entry.start_time", FT_UINT16
, BASE_DEC
, NULL
,
12372 0x00, NULL
, HFILL
} },
12374 { &hf_zbee_zcl_daily_schedule_schedule_entry_price_tier
,
12375 { "Price Tier", "zbee_zcl_se.daily_schedule.schedule_entry.price_tier", FT_UINT8
, BASE_DEC
, NULL
,
12376 0x00, NULL
, HFILL
} },
12378 { &hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state
,
12379 { "Auxiliary Load Switch State", "zbee_zcl_se.daily_schedule.schedule_entry.auxiliary_load_switch_state", FT_UINT8
, BASE_HEX
, NULL
,
12380 0x00, NULL
, HFILL
} },
12384 /* ZCL Daily Schedule subtrees */
12386 &ett_zbee_zcl_daily_schedule
,
12389 /* Register the ZigBee ZCL Calendar cluster protocol name and description */
12390 proto_zbee_zcl_daily_schedule
= proto_register_protocol("ZigBee ZCL Daily Schedule", "ZCL Daily Schedule", ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE
);
12391 proto_register_field_array(proto_zbee_zcl_daily_schedule
, hf
, array_length(hf
));
12392 proto_register_subtree_array(ett
, array_length(ett
));
12394 /* Register the ZigBee ZCL Daily Schedule dissector. */
12395 register_dissector(ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE
, dissect_zbee_zcl_daily_schedule
, proto_zbee_zcl_daily_schedule
);
12396 } /*proto_register_zbee_zcl_calendar*/
12399 proto_reg_handoff_zbee_zcl_daily_schedule(void)
12401 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE
,
12402 proto_zbee_zcl_daily_schedule
,
12403 ett_zbee_zcl_daily_schedule
,
12404 ZBEE_ZCL_CID_DAILY_SCHEDULE
,
12405 ZBEE_MFG_CODE_NONE
,
12406 hf_zbee_zcl_daily_schedule_attr_server_id
,
12408 hf_zbee_zcl_daily_schedule_srv_rx_cmd_id
,
12409 hf_zbee_zcl_daily_schedule_srv_tx_cmd_id
,
12410 (zbee_zcl_fn_attr_data
)dissect_zcl_daily_schedule_attr_data
12412 } /*proto_reg_handoff_zbee_zcl_calendar*/
12415 /* ########################################################################## */
12416 /* #### (0x0708) DEVICE_MANAGEMENT CLUSTER ############################################## */
12417 /* ########################################################################## */
12420 #define zbee_zcl_device_management_attr_server_names_VALUE_STRING_LIST(XXX) \
12421 /* Supplier Control Attribute Set */ \
12422 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_ID, 0x0100, "Provider ID" ) \
12423 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_NAME, 0x0101, "Provider Name" ) \
12424 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_CONTACT_DETAILS, 0x0102, "Provider Contact Details" ) \
12425 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_ID, 0x0110, "Proposed Provider ID" ) \
12426 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_NAME, 0x0111, "Proposed Provider Name" ) \
12427 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CHANGE_DATE_TIME, 0x0112, "Proposed Provider Change Date/Time" ) \
12428 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CHANGE_CONTROL, 0x0113, "Proposed Provider Change Control" ) \
12429 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CONTACT_DETAILS, 0x0114, "Proposed Provider Contact Details" ) \
12430 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_ID, 0x0120, "Received Provider ID" ) \
12431 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_NAME, 0x0121, "Received Provider Name" ) \
12432 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_CONTACT_DETAILS, 0x0122, "Received Provider Contact Details" ) \
12433 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_ID, 0x0130, "Received Proposed Provider ID" ) \
12434 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_NAME, 0x0131, "Received Proposed Provider Name" ) \
12435 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CHANGE_DATE_TIME, 0x0132, "Received Proposed Provider Change Date/Time" ) \
12436 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CHANGE_CONTROL, 0x0133, "Received Proposed Provider Change Control" ) \
12437 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CONTACT_DETAILS, 0x0134, "Received Proposed Provider Contact Details" ) \
12438 /* Tenancy Control Attribute Set */ \
12439 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CHANGE_OF_TENANCY_UPDATE_DATE_TIME, 0x0200, "Change of Tenancy Update Date/Time" ) \
12440 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_TENANCY_CHANGE_CONTROL, 0x0201, "Proposed Tenancy Change control" ) \
12441 /* Backhaul Control Attribute Set */ \
12442 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_WAN_STATUS, 0x0300, "WAN Status" ) \
12443 /* HAN Control Attribute Set */ \
12444 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_LOW_MEDIUM_THRESHOLD, 0x0400, "Low Medium Threshold" ) \
12445 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_MEDIUM_HIGH_THRESHOLD, 0x0401, "Medium High Threshold" ) \
12446 /* Add client attribute sets */ \
12447 /* Smart Energy */ \
12448 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT, 0xFFFE, "Attribute Reporting Status" )
12450 VALUE_STRING_ENUM(zbee_zcl_device_management_attr_server_names
);
12451 VALUE_STRING_ARRAY(zbee_zcl_device_management_attr_server_names
);
12453 #define zbee_zcl_device_management_attr_client_names_VALUE_STRING_LIST(XXX) \
12454 /* Supplier Attribute Set */ \
12455 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROVIDER_ID, 0x0000, "Provider ID" ) \
12456 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RECEIVED_PROVIDER_ID, 0x0010, "Received Provider ID" ) \
12457 /* Price Event Configuration Attribute Set */ \
12458 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOU_TARIFF_ACTIVATION, 0x0100, "TOU Tariff Activation" ) \
12459 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BLOCK_TARIFF_ACTIVATED, 0x0101, "Block Tariff Activated" ) \
12460 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BLOCK_TOU_TARIFF_ACTIVATED, 0x0102, "Block TOU Tariff Activated" ) \
12461 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SINGLE_TARIFF_RATE_ACTIVATED, 0x0103, "Single Tariff Rate Activated" ) \
12462 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ASYNCHRONOUS_BILLING_OCCURRED, 0x0104, "Asynchronous Billing Occurred" ) \
12463 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SYNCHRONOUS_BILLING_OCCURRED, 0x0105, "Synchronous Billing Occurred" ) \
12464 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_NOT_SUPPORTED, 0x0106, "Tariff Not Supported" ) \
12465 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_CLUSTER_NOT_FOUND, 0x0107, "Price Cluster Not Found" ) \
12466 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENCY_CHANGE_PASSIVE_ACTIVATED, 0x0108, "Currency Change Passive Activated" ) \
12467 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENCY_CHANGE_PASSIVE_UPDATED, 0x0109, "Currency Change Passive Updated" ) \
12468 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_MATRIX_PASSIVE_ACTIVATED, 0x010A, "Price Matrix Passive Activated" ) \
12469 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_MATRIX_PASSIVE_UPDATED, 0x010B, "Price Matrix Passive Updated" ) \
12470 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_CHANGE_PASSIVE_ACTIVATED, 0x010C, "Tariff Change Passive Activated" ) \
12471 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_CHANGED_PASSIVE_UPDATED, 0x010D, "Tariff Changed Passive Updated" ) \
12472 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_RECEIVED, 0x01B0, "Publish Price Received" ) \
12473 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_ACTIONED, 0x01B1, "Publish Price Actioned" ) \
12474 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_CANCELLED, 0x01B2, "Publish Price Cancelled" ) \
12475 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_REJECTED, 0x01B3, "Publish Price Rejected" ) \
12476 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_RECEIVED, 0x01B4, "Publish Tariff Information Received" ) \
12477 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_ACTIONED, 0x01B5, "Publish Tariff Information Actioned" ) \
12478 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_CANCELLED, 0x01B6, "Publish Tariff Information Cancelled" ) \
12479 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_REJECTED, 0x01B7, "Publish Tariff Information Rejected" ) \
12480 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_RECEIVED, 0x01B8, "Publish Price Matrix Received" ) \
12481 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_ACTIONED, 0x01B9, "Publish Price Matrix Actioned" ) \
12482 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_CANCELLED, 0x01BA, "Publish Price Matrix Cancelled" ) \
12483 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_REJECTED, 0x01BB, "Publish Price Matrix Rejected" ) \
12484 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_RECEIVED, 0x01BC, "Publish Block Thresholds Received" ) \
12485 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_ACTIONED, 0x01BD, "Publish Block Thresholds Actioned" ) \
12486 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_CANCELLED, 0x01BE, "Publish Block Thresholds Cancelled" ) \
12487 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_REJECTED, 0x01BF, "Publish Block Thresholds Rejected" ) \
12488 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_RECEIVED, 0x01C0, "Publish Calorific Value Received" ) \
12489 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_ACTIONED, 0x01C1, "Publish Calorific Value Actioned" ) \
12490 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_CANCELLED, 0x01C2, "Publish Calorific Value Cancelled" ) \
12491 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_REJECTED, 0x01C3, "Publish Calorific Value Rejected" ) \
12492 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_RECEIVED, 0x01C4, "Publish Conversion Factor Received" ) \
12493 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_ACTIONED, 0x01C5, "Publish Conversion Factor Actioned" ) \
12494 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_CANCELLED, 0x01C6, "Publish Conversion Factor Cancelled" ) \
12495 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_REJECTED, 0x01C7, "Publish Conversion Factor Rejected" ) \
12496 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_RECEIVED, 0x01C8, "Publish CO2 Value Received" ) \
12497 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_ACTIONED, 0x01C9, "Publish CO2 Value Actioned" ) \
12498 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_CANCELLED, 0x01CA, "Publish CO2 Value Cancelled" ) \
12499 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_REJECTED, 0x01CB, "Publish CO2 Value Rejected" ) \
12500 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_RECEIVED, 0x01CC, "Publish CPP event Received" ) \
12501 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_ACTIONED, 0x01CD, "Publish CPP event Actioned" ) \
12502 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_CANCELLED, 0x01CE, "Publish CPP event Cancelled" ) \
12503 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_REJECTED, 0x01CF, "Publish CPP event Rejected" ) \
12504 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_RECEIVED, 0x01D0, "Publish Tier Labels Received" ) \
12505 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_ACTIONED, 0x01D1, "Publish Tier Labels Actioned" ) \
12506 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_CANCELLED, 0x01D2, "Publish Tier Labels Cancelled" ) \
12507 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_REJECTED, 0x01D3, "Publish Tier Labels Rejected" ) \
12508 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_RECEIVED, 0x01D4, "Publish Billing Period Received" ) \
12509 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_ACTIONED, 0x01D5, "Publish Billing Period Actioned" ) \
12510 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_CANCELLED, 0x01D6, "Publish Billing Period Cancelled" ) \
12511 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_REJECTED, 0x01D7, "Publish Billing Period Rejected" ) \
12512 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_RECEIVED, 0x01D8, "Publish Consolidated Bill Received" ) \
12513 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_ACTIONED, 0x01D9, "Publish Consolidated Bill Actioned" ) \
12514 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_CANCELLED, 0x01DA, "Publish Consolidated Bill Cancelled" ) \
12515 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_REJECTED, 0x01DB, "Publish Consolidated Bill Rejected" ) \
12516 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_RECEIVED, 0x01DC, "Publish Block Period Received" ) \
12517 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_ACTIONED, 0x01DD, "Publish Block Period Actioned" ) \
12518 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_CANCELLED, 0x01DE, "Publish Block Period Cancelled" ) \
12519 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_REJECTED, 0x01DF, "Publish Block Period Rejected" ) \
12520 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_RECEIVED, 0x01E0, "Publish Credit Payment Info Received" ) \
12521 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_ACTIONED, 0x01E1, "Publish Credit Payment Info Actioned" ) \
12522 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_CANCELLED, 0x01E2, "Publish Credit Payment Info Cancelled" ) \
12523 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_REJECTED, 0x01E3, "Publish Credit Payment Info Rejected" ) \
12524 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_RECEIVED, 0x01E4, "Publish Currency Conversion Received" ) \
12525 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_ACTIONED, 0x01E5, "Publish Currency Conversion Actioned" ) \
12526 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_CANCELLED, 0x01E6, "Publish Currency Conversion Cancelled" ) \
12527 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_REJECTED, 0x01E7, "Publish Currency Conversion Rejected" ) \
12528 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_PRICE_CLUSTER_GROUP_ID, 0x01FF, "Reserved for Price Cluster Group ID" ) \
12529 /* Metering Event Configuration Attribute Set */ \
12530 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHECK_METER, 0x0200, "Check Meter" ) \
12531 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_BATTERY, 0x0201, "Low Battery" ) \
12532 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAMPER_DETECT, 0x0202, "Tamper Detect" ) \
12533 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_STATUS, 0x0203, "Supply Status" ) \
12534 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_QUALITY, 0x0204, "Supply Quality" ) \
12535 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LEAK_DETECT, 0x0205, "Leak Detect" ) \
12536 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SERVICE_DISCONNECT, 0x0206, "Service Disconnect" ) \
12537 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METERING_REVERSE_FLOW_GAS_WATER_HEAT, 0x0207, "Reverse Flow (Gas, Water, Heat/Cooling)" ) \
12538 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_COVER_REMOVED, 0x0208, "Meter Cover Removed" ) \
12539 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_COVER_CLOSED, 0x0209, "Meter Cover Closed" ) \
12540 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STRONG_MAGNETIC_FIELD, 0x020A, "Strong Magnetic Field" ) \
12541 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_STRONG_MAGNETIC_FIELD, 0x020B, "No Strong Magnetic Field" ) \
12542 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_FAILURE, 0x020C, "Battery Failure" ) \
12543 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROGRAM_MEMORY_ERROR, 0x020D, "Program Memory Error" ) \
12544 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RAM_ERROR, 0x020E, "RAM Error" ) \
12545 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NV_MEMORY_ERROR, 0x020F, "NV Memory Error" ) \
12546 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L1, 0x0210, "Low Voltage L1" ) \
12547 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L1, 0x0211, "High Voltage L1" ) \
12548 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L2, 0x0212, "Low Voltage L2" ) \
12549 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L2, 0x0213, "High Voltage L2" ) \
12550 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L3, 0x0214, "Low Voltage L3" ) \
12551 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L3, 0x0215, "High Voltage L3" ) \
12552 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L1, 0x0216, "Over Current L1" ) \
12553 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L2, 0x0217, "Over Current L2" ) \
12554 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L3, 0x0218, "Over Current L3" ) \
12555 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L1, 0x0219, "Frequency too Low L1" ) \
12556 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L1, 0x021A, "Frequency too High L1" ) \
12557 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L2, 0x021B, "Frequency too Low L2" ) \
12558 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L2, 0x021C, "Frequency too High L2" ) \
12559 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L3, 0x021D, "Frequency too Low L3" ) \
12560 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L3, 0x021E, "Frequency too High L3" ) \
12561 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GROUND_FAULT, 0x021F, "Ground Fault" ) \
12562 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ELECTRIC_TAMPER_DETECT, 0x0220, "Electric Tamper Detect" ) \
12563 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INCORRECT_POLARITY, 0x0221, "Incorrect Polarity" ) \
12564 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENT_NO_VOLTAGE, 0x0222, "Current No Voltage" ) \
12565 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNDER_VOLTAGE, 0x0223, "Under Voltage" ) \
12566 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_VOLTAGE, 0x0224, "Over Voltage" ) \
12567 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NORMAL_VOLTAGE, 0x0225, "Normal Voltage" ) \
12568 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PF_BELOW_THRESHOLD, 0x0226, "PF Below Threshold" ) \
12569 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PF_ABOVE_THRESHOLD, 0x0227, "PF Above Threshold" ) \
12570 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TERMINAL_COVER_REMOVED, 0x0228, "Terminal Cover Removed" ) \
12571 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TERMINAL_COVER_CLOSED, 0x0229, "Terminal Cover Closed" ) \
12572 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BURST_DETECT, 0x0230, "Burst Detect" ) \
12573 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRESSURE_TOO_LOW, 0x0231, "Pressure too Low" ) \
12574 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRESSURE_TOO_HIGH, 0x0232, "Pressure too High" ) \
12575 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_COMMUNICATION_ERROR, 0x0233, "Flow Sensor Communication Error" ) \
12576 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_MEASUREMENT_FAULT, 0x0234, "Flow Sensor Measurement Fault" ) \
12577 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_REVERSE_FLOW, 0x0235, "Flow Sensor Reverse Flow" ) \
12578 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_AIR_DETECT, 0x0236, "Flow Sensor Air Detect" ) \
12579 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PIPE_EMPTY, 0x0237, "Pipe Empty" ) \
12580 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INLET_TEMPERATURE_SENSOR_FAULT, 0x0250, "Inlet Temperature Sensor Fault" ) \
12581 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OUTLET_TEMPERATURE_SENSOR_FAULT, 0x0251, "Outlet Temperature Sensor Fault" ) \
12582 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REVERSE_FLOW, 0x0260, "Reverse Flow" ) \
12583 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TILT_TAMPER, 0x0261, "Tilt Tamper" ) \
12584 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_COVER_REMOVED, 0x0262, "Battery Cover Removed" ) \
12585 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_COVER_CLOSED, 0x0263, "Battery Cover Closed" ) \
12586 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EXCESS_FLOW, 0x0264, "Excess Flow" ) \
12587 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TILT_TAMPER_ENDED, 0x0265, "Tilt Tamper Ended" ) \
12588 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MEASUREMENT_SYSTEM_ERROR, 0x0270, "Measurement System Error" ) \
12589 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_WATCHDOG_ERROR, 0x0271, "Watchdog Error" ) \
12590 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_DISCONNECT_FAILURE, 0x0272, "Supply Disconnect Failure" ) \
12591 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_CONNECT_FAILURE, 0x0273, "Supply Connect Failure" ) \
12592 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MEASUREMENT_SOFTWARE_CHANGED, 0x0274, "Measurement Software Changed" ) \
12593 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DST_ENABLED, 0x0275, "DST Enabled" ) \
12594 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DST_DISABLED, 0x0276, "DST Disabled" ) \
12595 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_ADJUST_BACKWARD, 0x0277, "Clock Adjust Backward" ) \
12596 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_ADJUST_FORWARD, 0x0278, "Clock Adjust Forward" ) \
12597 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_INVALID, 0x0279, "Clock Invalid" ) \
12598 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMUNICATION_ERROR_HAN, 0x027A, "Communication Error HAN" ) \
12599 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMUNICATION_OK_HAN, 0x027B, "Communication OK HAN" ) \
12600 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_FRAUD_ATTEMPT, 0x027C, "Meter Fraud Attempt" ) \
12601 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_POWER_LOSS, 0x027D, "Power Loss" ) \
12602 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNUSUAL_HAN_TRAFFIC, 0x027E, "Unusual HAN Traffic" ) \
12603 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_CLOCK_CHANGE, 0x027F, "Unexpected Clock Change" ) \
12604 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMS_USING_UNAUTHENTICATED_COMPONENT, 0x0280, "Comms Using Unauthenticated Component" ) \
12605 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MET_ERROR_REGISTER_CLEAR, 0x0281, "Metering Error Register Clear" ) \
12606 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MET_ALARM_REGISTER_CLEAR, 0x0282, "Metering Alarm Register Clear" ) \
12607 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_HW_RESET, 0x0283, "Unexpected HW Reset" ) \
12608 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_PROGRAM_EXECUTION, 0x0284, "Unexpected Program Execution" ) \
12609 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_EXCEEDED, 0x0285, "Limit Threshold Exceeded" ) \
12610 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_OK, 0x0286, "Limit Threshold OK" ) \
12611 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_CHANGED, 0x0287, "Limit Threshold Changed" ) \
12612 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MAXIMUM_DEMAND_EXCEEDED, 0x0288, "Maximum Demand Exceeded" ) \
12613 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROFILE_CLEARED, 0x0289, "Profile Cleared" ) \
12614 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOAD_PROFILE_CLEARED, 0x028A, "Load Profile Cleared" ) \
12615 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_WARNING, 0x028B, "Battery Warning" ) \
12616 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_WRONG_SIGNATURE, 0x028C, "Wrong Signature" ) \
12617 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_SIGNATURE, 0x028D, "No Signature" ) \
12618 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SIGNATURE_NOT_VALID, 0x028E, "Signature Not Valid" ) \
12619 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNAUTHORISED_ACTION_FROM_HAN, 0x028F, "Unauthorized Action From HAN" ) \
12620 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FAST_POLLING_START, 0x0290, "Fast Polling Start" ) \
12621 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FAST_POLLING_END, 0x0291, "Fast Polling End" ) \
12622 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_REPORTING_INTERVAL_CHANGED, 0x0292, "Meter Reporting Interval Changed" ) \
12623 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCONNECT_TO_LOAD_LIMIT, 0x0293, "Disconnect to Load Limit" ) \
12624 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_SUPPLY_STATUS_REGISTER_CHANGED, 0x0294, "Meter Supply Status Register Changed" ) \
12625 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_ALARM_STATUS_REGISTER_CHANGED, 0x0295, "Meter Alarm Status Register Changed" ) \
12626 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EXTENDED_METER_ALARM_STATUS_REG_CHANGED,0x0296, "Extended Meter Alarm Status Register Changed." ) \
12627 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DATA_ACCESS_VIA_LOCAL_PORT, 0x0297, "Data Access Via Local Port" ) \
12628 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_MIRROR_SUCCESS, 0x0298, "Configure Mirror Success" ) \
12629 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_MIRROR_FAILURE, 0x0299, "Configure Mirror Failure" ) \
12630 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAG_SCHEME_SUCC,0x029A, "Configure Notification Flag Scheme Success" ) \
12631 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAG_SCHEME_FAIL,0x029B, "Configure Notification Flag Scheme Failure" ) \
12632 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAGS_SUCCESS, 0x029C, "Configure Notification Flags Success" ) \
12633 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAGS_FAILURE, 0x029D, "Configure Notification Flags Failure" ) \
12634 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STAY_AWAKE_REQUEST_HAN, 0x029E, "Stay Awake Request HAN" ) \
12635 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STAY_AWAKE_REQUEST_WAN, 0x029F, "Stay Awake Request WAN" ) \
12636 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_A, 0x02B0, "Manufacturer Specific A" ) \
12637 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_B, 0x02B1, "Manufacturer Specific B" ) \
12638 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_C, 0x02B2, "Manufacturer Specific C" ) \
12639 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_D, 0x02B3, "Manufacturer Specific D" ) \
12640 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_E, 0x02B4, "Manufacturer Specific E" ) \
12641 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_F, 0x02B5, "Manufacturer Specific F" ) \
12642 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_G, 0x02B6, "Manufacturer Specific G" ) \
12643 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_H, 0x02B7, "Manufacturer Specific H" ) \
12644 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_I, 0x02B8, "Manufacturer Specific I" ) \
12645 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_RECEIVED, 0x02C0, "Get Profile Command Received" ) \
12646 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_ACTIONED, 0x02C1, "Get Profile Command Actioned" ) \
12647 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_CANCELLED, 0x02C2, "Get Profile Command Cancelled" ) \
12648 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_REJECTED, 0x02C3, "Get Profile Command Rejected" ) \
12649 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_RECV, 0x02C4, "Request Mirror Response Command Received" ) \
12650 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_ACTION, 0x02C5, "Request Mirror Response Command Actioned" ) \
12651 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_CANCEL, 0x02C6, "Request Mirror Response Command Cancelled" ) \
12652 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_REJECT, 0x02C7, "Request Mirror Response Command Rejected" ) \
12653 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_RECEIVED, 0x02C8, "Mirror Removed Command Received" ) \
12654 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_ACTIONED, 0x02C9, "Mirror Removed Command Actioned" ) \
12655 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_CANCELLED, 0x02CA, "Mirror Removed Command Cancelled" ) \
12656 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_REJECTED, 0x02CB, "Mirror Removed Command Rejected" ) \
12657 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_RECEIVED, 0x02CC, "Get Snapshot Command Received" ) \
12658 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_ACTIONED, 0x02CD, "Get Snapshot Command Actioned" ) \
12659 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_CANCELLED, 0x02CE, "Get Snapshot Command Cancelled" ) \
12660 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_REJECTED, 0x02CF, "Get Snapshot Command Rejected" ) \
12661 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_RECEIVED, 0x02D0, "Take Snapshot Command Received" ) \
12662 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_ACTIONED, 0x02D1, "Take Snapshot Command Actioned" ) \
12663 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_CANCELLED, 0x02D2, "Take Snapshot Command Cancelled" ) \
12664 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_REJECTED, 0x02D3, "Take Snapshot Command Rejected" ) \
12665 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_RECV, 0x02D4, "Mirror Report Attribute Response Command Received" ) \
12666 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_ACTION, 0x02D5, "Mirror Report Attribute Response Command Actioned" ) \
12667 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_CANCEL, 0x02D6, "Mirror Report Attribute Response Command Cancelled" ) \
12668 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_REJECT, 0x02D7, "Mirror Report Attribute Response Command Rejected" ) \
12669 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_RECEIVED, 0x02D8, "Schedule Snapshot Command Received" ) \
12670 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_ACTIONED, 0x02D9, "Schedule Snapshot Command Actioned" ) \
12671 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_CANCELLED, 0x02DA, "Schedule Snapshot Command Cancelled" ) \
12672 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_REJECTED, 0x02DB, "Schedule Snapshot Command Rejected" ) \
12673 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_RECEIVED, 0x02DC, "Start Sampling Command Received" ) \
12674 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_ACTIONED, 0x02DD, "Start Sampling Command Actioned" ) \
12675 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_CANCELLED, 0x02DE, "Start Sampling Command Cancelled" ) \
12676 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_REJECTED, 0x02DF, "Start Sampling Command Rejected" ) \
12677 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_RECEIVED, 0x02E0, "Get Sampled Data Command Received" ) \
12678 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_ACTIONED, 0x02E1, "Get Sampled Data Command Actioned" ) \
12679 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_CANCELLED, 0x02E2, "Get Sampled Data Command Cancelled" ) \
12680 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_REJECTED, 0x02E3, "Get Sampled Data Command Rejected" ) \
12681 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_ON, 0x02E4, "Supply On" ) \
12682 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_ARMED, 0x02E5, "Supply Armed" ) \
12683 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_OFF, 0x02E6, "Supply Off" ) \
12684 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCONNECTED_DUE_TO_TAMPER_DETECTED, 0x02E7, "Disconnected due to Tamper Detected" ) \
12685 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUAL_DISCONNECT, 0x02E8, "Manual Disconnect" ) \
12686 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUAL_CONNECT, 0x02E9, "Manual Connect" ) \
12687 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REMOTE_DISCONNECTION, 0x02EA, "Remote Disconnection" ) \
12688 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REMOTE_CONNECT, 0x02EB, "Remote Connect" ) \
12689 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_DISCONNECTION, 0x02EC, "Local Disconnection" ) \
12690 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CONNECT, 0x02ED, "Local Connect" ) \
12691 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_RECEIVED, 0x02EE, "Change Supply Received" ) \
12692 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_ACTIONED, 0x02EF, "Change Supply Actioned" ) \
12693 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_CANCELLED, 0x02F0, "Change Supply Cancelled" ) \
12694 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_REJECTED, 0x02F1, "Change Supply Rejected" ) \
12695 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_RECEIVED, 0x02F2, "Local Change Supply Received" ) \
12696 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_ACTIONED, 0x02F3, "Local Change Supply Actioned" ) \
12697 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_CANCELLED, 0x02F4, "Local Change Supply Cancelled" ) \
12698 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_REJECTED, 0x02F5, "Local Change Supply Rejected" ) \
12699 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_RECV, 0x02F6, "Publish Uncontrolled Flow Threshold Received" ) \
12700 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_ACTION, 0x02F7, "Publish Uncontrolled Flow Threshold Actioned" ) \
12701 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_CANCEL, 0x02F8, "Publish Uncontrolled Flow Threshold Cancelled" ) \
12702 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_REJECY, 0x02F9, "Publish Uncontrolled Flow Threshold Rejected" ) \
12703 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_METERING_CLUSTER_GROUP_ID, 0x02FF, "Reserved for Metering Cluster Group Id" ) \
12704 /* Messaging Event Configuration Attribute Set */ \
12705 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MESSAGE_CONFIRMATION_SENT, 0x0300, "Message Confirmation Sent" ) \
12706 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_RECEIVED, 0x03C0, "Display Message Received" ) \
12707 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_ACTIONED, 0x03C1, "Display Message Actioned" ) \
12708 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_CANCELLED, 0x03C2, "Display Message Cancelled" ) \
12709 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_REJECTED, 0x03C3, "Display Message Rejected" ) \
12710 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_RECEIVED, 0x03C4, "Cancel Message Received" ) \
12711 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_ACTIONED, 0x03C5, "Cancel Message Actioned" ) \
12712 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_CANCELLED, 0x03C6, "Cancel Message Cancelled" ) \
12713 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_REJECTED, 0x03C7, "Cancel Message Rejected" ) \
12714 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_MESSAGING_CLUSTER_GROUP_ID,0x03FF, "Reserved for Messaging Cluster Group ID" ) \
12715 /* Prepayment Event Configuration Attribute Set */ \
12716 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_CREDIT, 0x0400, "Low Credit" ) \
12717 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_CREDIT_ZERO_CREDIT, 0x0401, "No Credit (Zero Credit)" ) \
12718 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_EXHAUSTED, 0x0402, "Credit Exhausted" ) \
12719 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_ENABLED, 0x0403, "Emergency Credit Enabled" ) \
12720 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_EXHAUSTED, 0x0404, "Emergency Credit Exhausted" ) \
12721 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IHD_LOW_CREDIT_WARNING, 0x0405, "IHD Low Credit Warning" ) \
12722 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PHYSICAL_ATTACK_ON_THE_PREPAY_METER, 0x0420, "Physical Attack on the Prepay Meter" ) \
12723 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER, 0x0421, "Electronic Attack on the Prepay Meter" ) \
12724 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCOUNT_APPLIED, 0x0422, "Discount Applied" ) \
12725 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT, 0x0423, "Credit Adjustment" ) \
12726 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUST_FAIL, 0x0424, "Credit Adjust Fail" ) \
12727 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DEBT_ADJUSTMENT, 0x0425, "Debt Adjustment" ) \
12728 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DEBT_ADJUST_FAIL, 0x0426, "Debt Adjust Fail" ) \
12729 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_CHANGE, 0x0427, "Mode Change" ) \
12730 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_CODE_ERROR, 0x0428, "Topup Code Error" ) \
12731 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ALREADY_USED, 0x0429, "Topup Already Used" ) \
12732 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_CODE_INVALID, 0x042A, "Topup Code Invalid" ) \
12733 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ACCEPTED_VIA_REMOTE, 0x042B, "Topup Accepted via Remote" ) \
12734 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ACCEPTED_VIA_MANUAL_ENTRY, 0x042C, "Topup Accepted via Manual Entry" ) \
12735 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_IN_USE, 0x042D, "Friendly Credit in Use" ) \
12736 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_PERIOD_END_WARNING, 0x042E, "Friendly Credit Period End Warning" ) \
12737 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_PERIOD_END, 0x042F, "Friendly Credit Period End" ) \
12738 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PP_ERROR_REGISTER_CLEAR, 0x0430, "Prepayment Error Register Clear" ) \
12739 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PP_ALARM_REGISTER_CLEAR, 0x0431, "Prepayment Alarm Register Clear" ) \
12740 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PREPAY_CLUSTER_NOT_FOUND, 0x0432, "Prepay Cluster Not Found" ) \
12741 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_VALUE_TOO_LARGE, 0x0433, "Topup Value too Large" ) \
12742 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_CREDIT_2_PREPAY, 0x0441, "Mode Credit 2 Prepay" ) \
12743 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_PREPAY_2_CREDIT, 0x0442, "Mode Prepay 2 Credit" ) \
12744 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_DEFAULT, 0x0443, "Mode Default" ) \
12745 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_RECV, 0x04C0, "Select Available Emergency Credit Received" ) \
12746 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_ACTION, 0x04C1, "Select Available Emergency Credit Actioned" ) \
12747 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_CANCEL, 0x04C2, "Select Available Emergency Credit Cancelled" ) \
12748 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_REJECT, 0x04C3, "Select Available Emergency Credit Rejected" ) \
12749 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_RECEIVED, 0x04C4, "Change Debt Received" ) \
12750 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_ACTIONED, 0x04C5, "Change Debt Actioned" ) \
12751 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_CANCELLED, 0x04C6, "Change Debt Cancelled" ) \
12752 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_REJECTED, 0x04C7, "Change Debt Rejected" ) \
12753 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_RECEIVED, 0x04C8, "Emergency Credit Setup Received" ) \
12754 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_ACTIONED, 0x04C9, "Emergency Credit Setup Actioned" ) \
12755 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_CANCELLED, 0x04CA, "Emergency Credit Setup Cancelled" ) \
12756 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_REJECTED, 0x04CB, "Emergency Credit Setup Rejected" ) \
12757 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_RECEIVED, 0x04CC, "Consumer Topup Received" ) \
12758 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_ACTIONED, 0x04CD, "Consumer Topup Actioned" ) \
12759 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_CANCELLED, 0x04CE, "Consumer Topup Cancelled" ) \
12760 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_REJECTED, 0x04CF, "Consumer Topup Rejected" ) \
12761 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_RECEIVED, 0x04D0, "Credit Adjustment Received" ) \
12762 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_ACTIONED, 0x04D1, "Credit Adjustment Actioned" ) \
12763 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_CANCELLED, 0x04D2, "Credit Adjustment Cancelled" ) \
12764 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_REJECTED, 0x04D3, "Credit Adjustment Rejected" ) \
12765 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_RECEIVED, 0x04D4, "Change Payment Mode Received" ) \
12766 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_ACTIONED, 0x04D5, "Change Payment Mode Actioned" ) \
12767 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_CANCELLED, 0x04D6, "Change Payment Mode Cancelled" ) \
12768 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_REJECTED, 0x04D7, "Change Payment Mode Rejected" ) \
12769 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_RECEIVED, 0x04D8, "Get Prepay Snapshot Received" ) \
12770 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_ACTIONED, 0x04D9, "Get Prepay Snapshot Actioned" ) \
12771 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_CANCELLED, 0x04DA, "Get Prepay Snapshot Cancelled" ) \
12772 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_REJECTED, 0x04DB, "Get Prepay Snapshot Rejected" ) \
12773 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_RECEIVED, 0x04DC, "Get Topup Log Received" ) \
12774 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_ACTIONED, 0x04DD, "Get Topup Log Actioned" ) \
12775 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_CANCELLED, 0x04DE, "Get Topup Log Cancelled" ) \
12776 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_REJECTED, 0x04DF, "Get Topup Log Rejected" ) \
12777 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_RECEIVED, 0x04E0, "Set Low Credit Warning Level Received" ) \
12778 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_ACTIONED, 0x04E1, "Set Low Credit Warning Level Actioned" ) \
12779 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_CANCELLED, 0x04E2, "Set Low Credit Warning Level Cancelled" ) \
12780 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_REJECTED, 0x04E3, "Set Low Credit Warning Level Rejected" ) \
12781 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_RECEIVED, 0x04E4, "Get Debt Repay Log Received" ) \
12782 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_ACTIONED, 0x04E5, "Get Debt Repay Log Actioned" ) \
12783 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_CANCELLED, 0x04E6, "Get Debt Repay Log Cancelled" ) \
12784 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_REJECTED, 0x04E7, "Get Debt Repay Log Rejected" ) \
12785 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_RECEIVED, 0x04E8, "Set Maximum Credit Limit Received" ) \
12786 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_ACTIONED, 0x04E9, "Set Maximum Credit Limit Actioned" ) \
12787 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_CANCELLED, 0x04EA, "Set Maximum Credit Limit Cancelled" ) \
12788 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_REJECTED, 0x04EB, "Set Maximum Credit Limit Rejected" ) \
12789 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_RECEIVED, 0x04EC, "Set Overall Debt Cap Received" ) \
12790 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_ACTIONED, 0x04ED, "Set Overall Debt Cap Actioned" ) \
12791 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_CANCELLED, 0x04EE, "Set Overall Debt Cap Cancelled" ) \
12792 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_REJECTED, 0x04EF, "Set Overall Debt Cap Rejected" ) \
12793 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_PP_CLUSTER_GROUP_ID, 0x04FF, "Reserved for Prepayment Cluster Group ID" ) \
12794 /* Calendar Event Configuration Attribute Set */ \
12795 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CLUSTER_NOT_FOUND, 0x0500, "Calendar Cluster Not Found" ) \
12796 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CHANGE_PASSIVE_ACTIVATED, 0x0501, "Calendar Change Passive Activated" ) \
12797 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CHANGE_PASSIVE_UPDATED, 0x0502, "Calendar Change Passive Updated" ) \
12798 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_RECEIVED, 0x05C0, "Publish Calendar Received" ) \
12799 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_ACTIONED, 0x05C1, "Publish Calendar Actioned" ) \
12800 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_CANCELLED, 0x05C2, "Publish Calendar Cancelled" ) \
12801 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_REJECTED, 0x05C3, "Publish Calendar Rejected" ) \
12802 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_RECEIVED, 0x05C4, "Publish Day Profile Received" ) \
12803 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_ACTIONED, 0x05C5, "Publish Day Profile Actioned" ) \
12804 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_CANCELLED, 0x05C6, "Publish Day Profile Cancelled" ) \
12805 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_REJECTED, 0x05C7, "Publish Day Profile Rejected" ) \
12806 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_RECEIVED, 0x05C8, "Publish Week Profile Received" ) \
12807 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_ACTIONED, 0x05C9, "Publish Week Profile Actioned" ) \
12808 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_CANCELLED, 0x05CA, "Publish Week Profile Cancelled" ) \
12809 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_REJECTED, 0x05CB, "Publish Week Profile Rejected" ) \
12810 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_RECEIVED, 0x05CC, "Publish Seasons Received" ) \
12811 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_ACTIONED, 0x05CD, "Publish Seasons Actioned" ) \
12812 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_CANCELLED, 0x05CE, "Publish Seasons Cancelled" ) \
12813 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_REJECTED, 0x05CF, "Publish Seasons Rejected" ) \
12814 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_RECEIVED, 0x05D0, "Publish Special Days Received" ) \
12815 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_ACTIONED, 0x05D1, "Publish Special Days Actioned" ) \
12816 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_CANCELLED, 0x05D2, "Publish Special Days Cancelled" ) \
12817 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_REJECTED, 0x05D3, "Publish Special Days Rejected" ) \
12818 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_CALENDAR_CLUSTER_GROUP_ID, 0x05FF, "Reserved For Calendar Cluster Group ID" ) \
12819 /* Device Management Event Configuration Attribute Set */ \
12820 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_1_CHANGE, 0x0600, "Password 1 Change" ) \
12821 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_2_CHANGE, 0x0601, "Password 2 Change" ) \
12822 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_3_CHANGE, 0x0602, "Password 3 Change" ) \
12823 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_4_CHANGE, 0x0603, "Password 4 Change" ) \
12824 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EVENT_LOG_CLEARED, 0x0604, "Event Log Cleared" ) \
12825 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_APS_TIMEOUT, 0x0610, "ZigBee APS Timeout" ) \
12826 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_IEEE_TRANS_FAILURE_OVER_THRES, 0x0611, "ZigBee IEEE Transmission Failure Over Threshold" ) \
12827 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_IEEE_FRAME_CHECK_SEQ_THRES, 0x0612, "ZigBee IEEE Frame Check Sequence Threshold" ) \
12828 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_CERTIFICATE, 0x0613, "Error Certificate" ) \
12829 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_SIGNATURE, 0x0614, "Error Signature" ) \
12830 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_PROGRAM_STORAGE, 0x0615, "Error Program Storage" ) \
12831 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_RECEIVED, 0x06C0, "Publish CoT Received" ) \
12832 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_ACTIONED, 0x06C1, "Publish CoT Actioned" ) \
12833 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_CANCELLED, 0x06C2, "Publish CoT Cancelled" ) \
12834 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_REJECTED, 0x06C3, "Publish CoT Rejected" ) \
12835 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_RECEIVED, 0x06C4, "Publish CoS Received" ) \
12836 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_ACTIONED, 0x06C5, "Publish CoS Actioned" ) \
12837 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_CANCELLED, 0x06C6, "Publish CoS Cancelled" ) \
12838 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_REJECTED, 0x06C7, "Publish CoS Rejected" ) \
12839 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_RECEIVED, 0x06C8, "Change Password Received" ) \
12840 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_ACTIONED, 0x06C9, "Change Password Actioned" ) \
12841 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_CANCELLED, 0x06CA, "Change Password Cancelled" ) \
12842 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_REJECTED, 0x06CB, "Change Password Rejected" ) \
12843 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_RECEIVED, 0x06CC, "Set Event Configuration Received" ) \
12844 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_ACTIONED, 0x06CD, "Set Event Configuration Actioned" ) \
12845 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_CANCELLED, 0x06CE, "Set Event Configuration Cancelled" ) \
12846 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_REJECTED, 0x06CF, "Set Event Configuration Rejected" ) \
12847 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_RECEIVED, 0x06D0, "Update Site ID Received" ) \
12848 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_ACTIONED, 0x06D1, "Update Site ID Actioned" ) \
12849 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_CANCELLED, 0x06D2, "Update Site ID Cancelled" ) \
12850 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_REJECTED, 0x06D3, "Update Site ID Rejected" ) \
12851 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_RECEIVED, 0x06D4, "Update CIN Received" ) \
12852 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_ACTIONED, 0x06D5, "Update CIN Actioned" ) \
12853 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_CANCELLED, 0x06D6, "Update CIN Cancelled" ) \
12854 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_REJECTED, 0x06D7, "Update CIN Rejected" ) \
12855 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_DM_CLUSTER_ID, 0x06FF, "Reserved for Device Management Cluster Group ID" ) \
12856 /* Tunnel Event Configuration Attribute Set */ \
12857 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TUNNELING_CLUSTER_NOT_FOUND, 0x0700, "Tunneling Cluster Not Found" ) \
12858 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNSUPPORTED_PROTOCOL, 0x0701, "Unsupported Protocol" ) \
12859 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INCORRECT_PROTOCOL, 0x0702, "Incorrect Protocol" ) \
12860 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_RECEIVED, 0x07C0, "Request Tunnel Command Received" ) \
12861 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_REJECTED, 0x07C1, "Request Tunnel Command Rejected" ) \
12862 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_GENERATED, 0x07C2, "Request Tunnel Command Generated" ) \
12863 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_RECEIVED, 0x07C3, "Close Tunnel Command Received" ) \
12864 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_REJECTED, 0x07C4, "Close Tunnel Command Rejected" ) \
12865 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_GENERATED, 0x07C5, "Close Tunnel Command Generated" ) \
12866 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_RECEIVED, 0x07C6, "Transfer Data Command Received" ) \
12867 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_REJECTED, 0x07C7, "Transfer Data Command Rejected" ) \
12868 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_GENERATED, 0x07C8, "Transfer Data Command Generated" ) \
12869 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_RECEIVED, 0x07C9, "Transfer Data Error Command Received" ) \
12870 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_REJECTED, 0x07CA, "Transfer Data Error Command Rejected" ) \
12871 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_GENERATED, 0x07CB, "Transfer Data Error Command Generated" ) \
12872 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_RECEIVED, 0x07CC, "Ack Transfer Data Command Received" ) \
12873 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_REJECTED, 0x07CD, "Ack Transfer Data Command Rejected" ) \
12874 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_GENERATED, 0x07CE, "Ack Transfer Data Command Generated" ) \
12875 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_RECEIVED, 0x07CF, "Ready Data Command Received" ) \
12876 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_REJECTED, 0x07D0, "Ready Data Command Rejected" ) \
12877 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_GENERATED, 0x07D1, "Ready Data Command Generated" ) \
12878 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_RECV, 0x07D2, "Get Supported Tunnel Protocols Command Received" ) \
12879 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_REJECT, 0x07D3, "Get Supported Tunnel Protocols Command Rejected" ) \
12880 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_GENERATED,0x07D4, "Get Supported Tunnel Protocols Command Generated" ) \
12881 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_TUNNEL_CLUSTER_GROUP_ID, 0x07FF, "Reserved for Tunnel Cluster Group ID" ) \
12882 /* OTA Event Configuration Attribute Set */ \
12883 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_READY_FOR_ACTIVATION, 0x0800, "Firmware Ready for Activation" ) \
12884 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_ACTIVATED, 0x0801, "Firmware Activated" ) \
12885 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_ACTIVATION_FAILURE, 0x0802, "Firmware Activation Failure" ) \
12886 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_READY_FOR_ACTIVATION, 0x0803, "Patch Ready for Activation" ) \
12887 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_ACTIVATED, 0x0804, "Patch Activated" ) \
12888 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_FAILURE, 0x0805, "Patch Failure" ) \
12889 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_NOTIFY_COMMAND_RECEIVED, 0x08C0, "Image Notify Command Received" ) \
12890 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_NOTIFY_COMMAND_REJECTED, 0x08C1, "Image Notify Command Rejected" ) \
12891 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_REQUEST_GENERATED, 0x08C2, "Query Next Image Request Generated" ) \
12892 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_RESPONSE_RECEIVED, 0x08C3, "Query Next Image Response Received" ) \
12893 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_RESPONSE_REJECTED, 0x08C4, "Query Next Image Response Rejected" ) \
12894 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_REQUEST_GENERATED, 0x08C5, "Image Block Request Generated" ) \
12895 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_PAGE_REQUEST_GENERATED, 0x08C6, "Image Page Request Generated" ) \
12896 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_RESPONSE_RECEIVED, 0x08C7, "Image Block Response Received" ) \
12897 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_RESPONSE_REJECTED, 0x08C8, "Image Block Response Rejected" ) \
12898 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_REQUEST_GENERATED, 0x08C9, "Upgrade End Request Generated" ) \
12899 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_RESPONSE_RECEIVED, 0x08CA, "Upgrade End Response Received" ) \
12900 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_RESPONSE_REJECTED, 0x08CB, "Upgrade End Response Rejected" ) \
12901 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_REQUEST_GENERATED, 0x08CC, "Query Specific File Request Generated" ) \
12902 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_RESPONSE_RECEIVED, 0x08CD, "Query Specific File Response Received" ) \
12903 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_RESPONSE_REJECTED, 0x08CE, "Query Specific File Response Rejected" ) \
12904 XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_OTA_CLUSTER_GROUP_ID, 0x08FF, "Reserved For OTA Cluster Group ID" ) \
12905 /* Smart Energy */ \
12906 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT_CLNT, 0xFFFE, "Attribute Reporting Status" )
12908 VALUE_STRING_ENUM(zbee_zcl_device_management_attr_client_names
);
12909 VALUE_STRING_ARRAY(zbee_zcl_device_management_attr_client_names
);
12910 static value_string_ext zbee_zcl_device_management_attr_client_names_ext
= VALUE_STRING_EXT_INIT(zbee_zcl_device_management_attr_client_names
);
12912 /* Server Commands Received */
12913 #define zbee_zcl_device_management_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
12914 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_TENANCY, 0x00, "Get Change Of Tenancy" ) \
12915 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_SUPPLIER, 0x01, "Get Change Of Supplier" ) \
12916 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD, 0x02, "Request New Password" ) \
12917 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_SITE_ID, 0x03, "Get Site ID" ) \
12918 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REPORT_EVENT_CONFIGURATION, 0x04, "Report Event Configuration" ) \
12919 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CIN, 0x05, "Get CIN" )
12921 VALUE_STRING_ENUM(zbee_zcl_device_management_srv_rx_cmd_names
);
12922 VALUE_STRING_ARRAY(zbee_zcl_device_management_srv_rx_cmd_names
);
12924 /* Server Commands Generated */
12925 #define zbee_zcl_device_management_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
12926 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_TENANCY, 0x00, "Publish Change Of Tenancy" ) \
12927 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_SUPPLIER, 0x01, "Publish Change Of Supplier" ) \
12928 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD_RESPONSE, 0x02, "Request New Password Response" ) \
12929 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_SITE_ID, 0x03, "Update Site ID" ) \
12930 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_SET_EVENT_CONFIGURATION, 0x04, "Set Event Configuration" ) \
12931 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_EVENT_CONFIGURATION, 0x05, "Get Event Configuration" ) \
12932 XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_CIN, 0x06, "Update CIN" )
12934 VALUE_STRING_ENUM(zbee_zcl_device_management_srv_tx_cmd_names
);
12935 VALUE_STRING_ARRAY(zbee_zcl_device_management_srv_tx_cmd_names
);
12937 #define zbee_zcl_device_management_password_types_VALUE_STRING_LIST(XXX) \
12938 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_RESERVED, 0x00, "Reserved") \
12939 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_1, 0x01, "Password 1") \
12940 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_2, 0x02, "Password 2") \
12941 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_3, 0x03, "Password 3") \
12942 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_4, 0x04, "Password 4")
12944 VALUE_STRING_ENUM(zbee_zcl_device_management_password_types
);
12945 VALUE_STRING_ARRAY(zbee_zcl_device_management_password_types
);
12947 #define zbee_zcl_device_management_event_configuration_log_types_VALUE_STRING_LIST(XXX) \
12948 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_DO_NOT_LOG, 0x0, "Do not Log") \
12949 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_TAMPER, 0x1, "Log as Tamper") \
12950 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_FAULT, 0x2, "Log as Fault") \
12951 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_GENERAL_EVENT, 0x3, "Log as General Event") \
12952 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_SECURITY_EVENT, 0x4, "Log as Security Event") \
12953 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_NETWORK_EVENT, 0x5, "Log as Network Event")
12955 VALUE_STRING_ENUM(zbee_zcl_device_management_event_configuration_log_types
);
12956 VALUE_STRING_ARRAY(zbee_zcl_device_management_event_configuration_log_types
);
12958 #define zbee_zcl_device_management_contactor_states_VALUE_STRING_LIST(XXX) \
12959 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_OFF, 0x0, "Supply OFF") \
12960 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_OFF_ARMED, 0x1, "Supply OFF / ARMED") \
12961 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_ON, 0x2, "Supply ON") \
12962 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_UNCHANGED, 0x3, "Supply UNCHANGED")
12964 VALUE_STRING_ENUM(zbee_zcl_device_management_contactor_states
);
12965 VALUE_STRING_ARRAY(zbee_zcl_device_management_contactor_states
);
12967 #define zbee_zcl_device_management_configuration_controls_VALUE_STRING_LIST(XXX) \
12968 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LIST, 0x00, "Apply by List") \
12969 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP, 0x01, "Apply by Event Group") \
12970 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE, 0x02, "Apply by Log Type") \
12971 XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH, 0x03, "Apply by Configuration Match")
12973 VALUE_STRING_ENUM(zbee_zcl_device_management_configuration_controls
);
12974 VALUE_STRING_ARRAY(zbee_zcl_device_management_configuration_controls
);
12976 /*************************/
12977 /* Function Declarations */
12978 /*************************/
12979 void proto_register_zbee_zcl_device_management(void);
12980 void proto_reg_handoff_zbee_zcl_device_management(void);
12982 /* Attribute Dissector Helpers */
12983 static void dissect_zcl_device_management_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
12985 /*************************/
12986 /* Global Variables */
12987 /*************************/
12989 /* Initialize the protocol and registered fields */
12990 static int proto_zbee_zcl_device_management
;
12992 static int hf_zbee_zcl_device_management_srv_tx_cmd_id
;
12993 static int hf_zbee_zcl_device_management_srv_rx_cmd_id
;
12994 static int hf_zbee_zcl_device_management_attr_server_id
;
12995 static int hf_zbee_zcl_device_management_attr_client_id
;
12996 static int hf_zbee_zcl_device_management_attr_reporting_status
;
12997 static int hf_zbee_zcl_device_management_password_type
;
12998 static int hf_zbee_zcl_device_management_command_index
;
12999 static int hf_zbee_zcl_device_management_total_commands
;
13000 static int hf_zbee_zcl_device_management_event_id
;
13001 static int hf_zbee_zcl_device_management_event_configuration
;
13002 static int hf_zbee_zcl_device_management_event_configuration_logging
;
13003 static int hf_zbee_zcl_device_management_event_configuration_push_event_to_wan
;
13004 static int hf_zbee_zcl_device_management_event_configuration_push_event_to_han
;
13005 static int hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee
;
13006 static int hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical
;
13007 static int hf_zbee_zcl_device_management_event_configuration_reserved
;
13008 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id
;
13009 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id
;
13010 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type
;
13011 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_implementation_date
;
13012 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control
;
13013 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot
;
13014 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot
;
13015 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register
;
13016 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register
;
13017 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period
;
13018 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan
;
13019 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge
;
13020 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information
;
13021 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information
;
13022 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer
;
13023 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier
;
13024 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state
;
13025 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log
;
13026 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data
;
13027 static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved
;
13029 static int hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id
;
13030 static int hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id
;
13031 static int hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type
;
13032 static int hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id
;
13033 static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_implementation_time
;
13034 static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control
;
13035 static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_name
;
13036 static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_contact_details
;
13038 static int hf_zbee_zcl_device_management_request_new_password_issuer_event_id
;
13039 static int hf_zbee_zcl_device_management_request_new_password_implementation_date
;
13040 static int hf_zbee_zcl_device_management_request_new_password_password
;
13041 static int hf_zbee_zcl_device_management_request_new_password_duration_in_minutes
;
13043 static int hf_zbee_zcl_device_management_update_site_id_issuer_event_id
;
13044 static int hf_zbee_zcl_device_management_update_site_id_site_id_time
;
13045 static int hf_zbee_zcl_device_management_update_site_id_provider_id
;
13046 static int hf_zbee_zcl_device_management_update_site_id_site_id
;
13048 static int hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id
;
13049 static int hf_zbee_zcl_device_management_set_event_configuration_start_time
;
13050 static int hf_zbee_zcl_device_management_set_event_configuration_configuration_control
;
13051 static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events
;
13052 static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id
;
13053 static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id
;
13054 static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id
;
13055 static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_configuration_value_match
;
13057 static int hf_zbee_zcl_device_management_get_event_configuration_event_id
;
13059 static int hf_zbee_zcl_device_management_update_cin_issuer_event_id
;
13060 static int hf_zbee_zcl_device_management_update_cin_cin_implementation_time
;
13061 static int hf_zbee_zcl_device_management_update_cin_provider_id
;
13062 static int hf_zbee_zcl_device_management_update_cin_customerid_number
;
13064 static int* const hf_zbee_zcl_device_management_event_configuration_flags
[] = {
13065 &hf_zbee_zcl_device_management_event_configuration_logging
,
13066 &hf_zbee_zcl_device_management_event_configuration_push_event_to_wan
,
13067 &hf_zbee_zcl_device_management_event_configuration_push_event_to_han
,
13068 &hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee
,
13069 &hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical
,
13070 &hf_zbee_zcl_device_management_event_configuration_reserved
,
13074 static int* const hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_flags
[] = {
13075 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot
,
13076 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot
,
13077 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register
,
13078 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register
,
13079 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period
,
13080 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan
,
13081 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge
,
13082 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information
,
13083 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information
,
13084 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer
,
13085 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier
,
13086 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state
,
13087 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log
,
13088 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data
,
13089 &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved
,
13093 /* Initialize the subtree pointers */
13094 static int ett_zbee_zcl_device_management
;
13095 static int ett_zbee_zcl_device_management_event_configuration_payload
;
13096 static int ett_zbee_zcl_device_management_event_configuration
;
13097 static int ett_zbee_zcl_device_management_proposed_tenancy_change_control
;
13099 /*************************/
13100 /* Function Bodies */
13101 /*************************/
13104 *This function is called by ZCL foundation dissector in order to decode
13106 *@param tree pointer to data tree Wireshark uses to display packet.
13107 *@param tvb pointer to buffer containing raw packet.
13108 *@param offset pointer to buffer offset
13109 *@param attr_id attribute identifier
13110 *@param data_type attribute data type
13111 *@param client_attr ZCL client
13114 dissect_zcl_device_management_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
13117 /* applies to all SE clusters */
13118 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT
:
13119 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
13123 default: /* Catch all */
13124 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
13127 } /*dissect_zcl_device_management_attr_data*/
13130 *This function is called by ZCL foundation dissector in order to decode
13132 *@param tree pointer to data tree Wireshark uses to display packet.
13133 *@param tvb pointer to buffer containing raw packet.
13134 *@param offset pointer to buffer offset
13137 dissect_zcl_device_management_request_new_password(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13139 /* Password Type */
13140 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_password_type
, tvb
, *offset
, 1, ENC_NA
);
13145 *This function is called by ZCL foundation dissector in order to decode
13147 *@param tree pointer to data tree Wireshark uses to display packet.
13148 *@param tvb pointer to buffer containing raw packet.
13149 *@param offset pointer to buffer offset
13152 dissect_zcl_device_management_report_event_configuration(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13154 proto_tree
*event_configuration_payload
;
13157 /* Command Index */
13158 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_command_index
, tvb
, *offset
, 1, ENC_NA
);
13161 /* Total Commands */
13162 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_total_commands
, tvb
, *offset
, 1, ENC_NA
);
13165 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
13166 /* Event Configuration Payload */
13167 event_configuration_payload
= proto_tree_add_subtree(tree
, tvb
, *offset
, rem_len
, ett_zbee_zcl_device_management_event_configuration_payload
, NULL
, "Event Configuration Payload");
13169 while(tvb_reported_length_remaining(tvb
, *offset
) > 2) {
13171 proto_tree_add_item(event_configuration_payload
, hf_zbee_zcl_device_management_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
13174 /* Event Configuration */
13175 proto_tree_add_bitmask(event_configuration_payload
, tvb
, *offset
, hf_zbee_zcl_device_management_event_configuration
,
13176 ett_zbee_zcl_device_management_event_configuration
, hf_zbee_zcl_device_management_event_configuration_flags
, ENC_NA
);
13182 *This function is called by ZCL foundation dissector in order to decode
13184 *@param tree pointer to data tree Wireshark uses to display packet.
13185 *@param tvb pointer to buffer containing raw packet.
13186 *@param offset pointer to buffer offset
13189 dissect_zcl_device_management_publish_change_of_tenancy(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13192 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13195 /* Issuer Event ID */
13196 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13200 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
13203 /* Implementation Date/Time */
13204 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_tenancy_implementation_date
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13207 /* Proposed Tenancy Change Control */
13208 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control
,
13209 ett_zbee_zcl_device_management_proposed_tenancy_change_control
, hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_flags
, ENC_NA
);
13212 } /*dissect_zcl_device_management_publish_change_of_tenancy*/
13215 *This function is called by ZCL foundation dissector in order to decode
13217 *@param tree pointer to data tree Wireshark uses to display packet.
13218 *@param tvb pointer to buffer containing raw packet.
13219 *@param offset pointer to buffer offset
13222 dissect_zcl_device_management_publish_change_of_supplier(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13227 /* Current Provider ID */
13228 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13231 /* Issuer Event ID */
13232 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13236 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type
, tvb
, *offset
, 1, ENC_NA
);
13239 /* Proposed Provider ID */
13240 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13243 /* Provider Change Implementation Time */
13244 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_implementation_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13247 /* Provider Change Control */
13248 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13251 /* Proposed Provider Name */
13252 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_name
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &name_length
);
13253 *offset
+= name_length
;
13255 /* Proposed Provider Contact Details */
13256 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_contact_details
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &detail_length
);
13257 *offset
+= detail_length
;
13259 } /*dissect_zcl_device_management_publish_change_of_supplier*/
13262 *This function is called by ZCL foundation dissector in order to decode
13264 *@param tree pointer to data tree Wireshark uses to display packet.
13265 *@param tvb pointer to buffer containing raw packet.
13266 *@param offset pointer to buffer offset
13269 dissect_zcl_device_management_request_new_password_response(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13271 int password_length
;
13273 /* Issuer Event ID */
13274 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_request_new_password_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13277 /* Implementation Date/Time */
13278 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_request_new_password_implementation_date
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13281 /* Duration in minutes */
13282 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_request_new_password_duration_in_minutes
, tvb
, *offset
, 2, ENC_NA
);
13285 /* Password Type */
13286 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_password_type
, tvb
, *offset
, 1, ENC_NA
);
13290 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_device_management_request_new_password_password
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &password_length
);
13291 *offset
+= password_length
;
13293 } /*dissect_zcl_device_management_request_new_password_response*/
13296 *This function is called by ZCL foundation dissector in order to decode
13298 *@param tree pointer to data tree Wireshark uses to display packet.
13299 *@param tvb pointer to buffer containing raw packet.
13300 *@param offset pointer to buffer offset
13303 dissect_zcl_device_management_update_site_id(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13307 /* Issuer Event ID */
13308 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_site_id_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13312 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_site_id_site_id_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13316 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_site_id_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13320 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_device_management_update_site_id_site_id
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &siteid_length
);
13321 *offset
+= siteid_length
;
13323 } /*dissect_zcl_device_management_update_site_id*/
13326 *This function is called by ZCL foundation dissector in order to decode
13328 *@param tree pointer to data tree Wireshark uses to display packet.
13329 *@param tvb pointer to buffer containing raw packet.
13330 *@param offset pointer to buffer offset
13333 dissect_zcl_device_management_set_event_configuration(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13335 uint8_t config_control
;
13336 uint8_t number_of_events
;
13338 /* Issuer Event ID */
13339 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13342 /* Start Date/Time */
13343 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13346 /* Event Configuration */
13347 proto_tree_add_bitmask(tree
, tvb
, *offset
, hf_zbee_zcl_device_management_event_configuration
,
13348 ett_zbee_zcl_device_management_event_configuration
, hf_zbee_zcl_device_management_event_configuration_flags
, ENC_NA
);
13351 /* Configuration Control */
13352 config_control
= tvb_get_uint8(tvb
, *offset
);
13353 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_configuration_control
, tvb
, *offset
, 1, ENC_NA
);
13356 /* Event Configuration Payload */
13357 switch (config_control
) {
13358 case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LIST
:
13359 number_of_events
= tvb_get_uint8(tvb
, *offset
);
13360 /* Number of Events */
13361 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events
, tvb
, *offset
, 1, ENC_NA
);
13365 for (unsigned i
= 0; tvb_reported_length_remaining(tvb
, *offset
) > 0 && i
< number_of_events
; i
++) {
13366 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
13370 case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP
:
13371 /* Event Group ID */
13372 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
13375 case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE
:
13377 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id
, tvb
, *offset
, 1, ENC_LITTLE_ENDIAN
);
13380 case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH
:
13381 /* Configuration Value Match */
13382 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_configuration_value_match
, tvb
, *offset
, 1, ENC_LITTLE_ENDIAN
);
13386 } /*dissect_zcl_device_management_set_event_configuration*/
13389 *This function is called by ZCL foundation dissector in order to decode
13391 *@param tree pointer to data tree Wireshark uses to display packet.
13392 *@param tvb pointer to buffer containing raw packet.
13393 *@param offset pointer to buffer offset
13396 dissect_zcl_device_management_get_event_configuration(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13399 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_get_event_configuration_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
13401 } /*dissect_zcl_device_management_get_event_configuration*/
13404 *This function is called by ZCL foundation dissector in order to decode
13406 *@param tree pointer to data tree Wireshark uses to display packet.
13407 *@param tvb pointer to buffer containing raw packet.
13408 *@param offset pointer to buffer offset
13411 dissect_zcl_device_management_update_cin(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
)
13413 int customer_id_length
;
13415 /* Issuer Event ID */
13416 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_cin_issuer_event_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13419 /* CIN Implementation Time */
13420 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_cin_cin_implementation_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
13424 proto_tree_add_item(tree
, hf_zbee_zcl_device_management_update_cin_provider_id
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
13427 /* CustomerID Number */
13428 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_device_management_update_cin_customerid_number
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &customer_id_length
);
13429 *offset
+= customer_id_length
;
13430 } /*dissect_zcl_device_management_update_cin*/
13433 *ZigBee ZCL Device Management cluster dissector for wireshark.
13435 *@param tvb pointer to buffer containing raw packet.
13436 *@param pinfo pointer to packet information fields
13437 *@param tree pointer to data tree Wireshark uses to display packet.
13440 dissect_zbee_zcl_device_management(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
13442 zbee_zcl_packet
*zcl
;
13443 proto_tree
*payload_tree
;
13444 unsigned offset
= 0;
13448 /* Reject the packet if data is NULL */
13451 zcl
= (zbee_zcl_packet
*)data
;
13452 cmd_id
= zcl
->cmd_id
;
13454 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
13455 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
13456 /* Append the command name to the info column. */
13457 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
13458 val_to_str_const(cmd_id
, zbee_zcl_device_management_srv_rx_cmd_names
, "Unknown Command"),
13461 /* Add the command ID. */
13462 proto_tree_add_uint(tree
, hf_zbee_zcl_device_management_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
13464 /* Check is this command has a payload, than add the payload tree */
13465 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
13467 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_device_management
, NULL
, "Payload");
13468 /* Call the appropriate command dissector */
13470 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_TENANCY
:
13473 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_SUPPLIER
:
13476 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD
:
13477 dissect_zcl_device_management_request_new_password(payload_tree
, tvb
, &offset
);
13480 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_SITE_ID
:
13484 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REPORT_EVENT_CONFIGURATION
:
13485 dissect_zcl_device_management_report_event_configuration(payload_tree
, tvb
, &offset
);
13488 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CIN
:
13497 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
13498 /* Append the command name to the info column. */
13499 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
13500 val_to_str_const(cmd_id
, zbee_zcl_device_management_srv_tx_cmd_names
, "Unknown Command"),
13503 /* Add the command ID. */
13504 proto_tree_add_uint(tree
, hf_zbee_zcl_device_management_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
13506 /* Check is this command has a payload, than add the payload tree */
13507 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
13509 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_device_management
, NULL
, "Payload");
13511 /* Call the appropriate command dissector */
13514 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_TENANCY
:
13515 dissect_zcl_device_management_publish_change_of_tenancy(payload_tree
, tvb
, &offset
);
13517 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_SUPPLIER
:
13518 dissect_zcl_device_management_publish_change_of_supplier(payload_tree
, tvb
, &offset
);
13521 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD_RESPONSE
:
13522 dissect_zcl_device_management_request_new_password_response(payload_tree
, tvb
, &offset
);
13525 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_SITE_ID
:
13526 dissect_zcl_device_management_update_site_id(payload_tree
, tvb
, &offset
);
13529 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_SET_EVENT_CONFIGURATION
:
13530 dissect_zcl_device_management_set_event_configuration(payload_tree
, tvb
, &offset
);
13533 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_EVENT_CONFIGURATION
:
13534 dissect_zcl_device_management_get_event_configuration(payload_tree
, tvb
, &offset
);
13537 case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_CIN
:
13538 dissect_zcl_device_management_update_cin(payload_tree
, tvb
, &offset
);
13547 return tvb_captured_length(tvb
);
13548 } /*dissect_zbee_zcl_device_management*/
13551 *This function registers the ZCL Device Management dissector
13555 proto_register_zbee_zcl_device_management(void)
13557 static hf_register_info hf
[] = {
13559 { &hf_zbee_zcl_device_management_attr_server_id
,
13560 { "Attribute", "zbee_zcl_se.device_management.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_device_management_attr_server_names
),
13561 0x0, NULL
, HFILL
} },
13563 { &hf_zbee_zcl_device_management_attr_client_id
,
13564 { "Attribute", "zbee_zcl_se.device_management.attr_client_id", FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &zbee_zcl_device_management_attr_client_names_ext
,
13565 0x0, NULL
, HFILL
} },
13567 { &hf_zbee_zcl_device_management_attr_reporting_status
, /* common to all SE clusters */
13568 { "Attribute Reporting Status", "zbee_zcl_se.device_management.attr.attr_reporting_status",
13569 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
13571 { &hf_zbee_zcl_device_management_srv_tx_cmd_id
,
13572 { "Command", "zbee_zcl_se.device_management.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_device_management_srv_tx_cmd_names
),
13573 0x00, NULL
, HFILL
} },
13575 { &hf_zbee_zcl_device_management_srv_rx_cmd_id
,
13576 { "Command", "zbee_zcl_se.device_management.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_device_management_srv_rx_cmd_names
),
13577 0x00, NULL
, HFILL
} },
13579 { &hf_zbee_zcl_device_management_password_type
,
13580 { "Password Type", "zbee_zcl_se.device_management.password_type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_device_management_password_types
),
13581 0x00, NULL
, HFILL
} },
13583 { &hf_zbee_zcl_device_management_command_index
,
13584 { "Command Index", "zbee_zcl_se.device_management.command_index", FT_UINT8
, BASE_HEX
, NULL
,
13585 0x00, NULL
, HFILL
} },
13587 { &hf_zbee_zcl_device_management_total_commands
,
13588 { "Total Commands", "zbee_zcl_se.device_management.total_commands", FT_UINT8
, BASE_HEX
, NULL
,
13589 0x00, NULL
, HFILL
} },
13591 { &hf_zbee_zcl_device_management_event_id
,
13592 { "Event ID", "zbee_zcl_se.device_management.event_id", FT_UINT16
, BASE_HEX
, NULL
,
13593 0x00, NULL
, HFILL
} },
13595 { &hf_zbee_zcl_device_management_event_configuration
,
13596 { "Event Configuration", "zbee_zcl_se.device_management.event_configuration", FT_UINT8
, BASE_HEX
, NULL
,
13597 0x00, NULL
, HFILL
} },
13599 { &hf_zbee_zcl_device_management_event_configuration_logging
,
13600 { "Logging", "zbee_zcl_se.device_management.event_configuration.logging", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_device_management_event_configuration_log_types
),
13601 0x07, NULL
, HFILL
} },
13603 { &hf_zbee_zcl_device_management_event_configuration_push_event_to_wan
,
13604 { "Push Event to WAN", "zbee_zcl_se.device_management.event_configuration.push_event_to_wan", FT_BOOLEAN
, 8, NULL
,
13605 0x08, NULL
, HFILL
} },
13607 { &hf_zbee_zcl_device_management_event_configuration_push_event_to_han
,
13608 { "Push Event to HAN", "zbee_zcl_se.device_management.event_configuration.push_event_to_han", FT_BOOLEAN
, 8, NULL
,
13609 0x10, NULL
, HFILL
} },
13611 { &hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee
,
13612 { "Raise Alarm (Zigbee)", "zbee_zcl_se.device_management.event_configuration.raise_alarm_zigbee", FT_BOOLEAN
, 8, NULL
,
13613 0x20, NULL
, HFILL
} },
13615 { &hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical
,
13616 { "Raise Alarm (Physical)", "zbee_zcl_se.device_management.event_configuration.raise_alarm_physical", FT_BOOLEAN
, 8, NULL
,
13617 0x40, NULL
, HFILL
} },
13619 { &hf_zbee_zcl_device_management_event_configuration_reserved
,
13620 { "Reserved", "zbee_zcl_se.device_management.event_configuration.reserved", FT_UINT8
, BASE_HEX
, NULL
,
13621 0x80, NULL
, HFILL
} },
13623 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id
,
13624 { "Provider ID", "zbee_zcl_se.device_management.publish_change_of_tenancy.provider_id", FT_UINT32
, BASE_HEX
, NULL
,
13625 0x0, NULL
, HFILL
} },
13627 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id
,
13628 { "Issuer Event ID", "zbee_zcl_se.device_management.publish_change_of_tenancy.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13629 0x0, NULL
, HFILL
} },
13631 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type
,
13632 { "Tariff Type", "zbee_zcl_se.device_management.publish_change_of_tenancy.tariff_type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_type_names
),
13633 0x0, NULL
, HFILL
} },
13635 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_implementation_date
,
13636 { "Implementation Date/Time", "zbee_zcl_se.device_management.publish_change_of_tenancy.implementation_date", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13637 0x0, NULL
, HFILL
} },
13639 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control
,
13640 { "Proposed Tenancy Change Control", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control", FT_UINT32
, BASE_HEX
, NULL
,
13641 0x0, NULL
, HFILL
} },
13643 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot
,
13644 { "Pre Snapshots", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.pre_snapshot", FT_BOOLEAN
, 32, NULL
,
13645 0x00000001, NULL
, HFILL
} },
13647 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot
,
13648 { "Post Snapshots", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.post_snapshot", FT_BOOLEAN
, 32, NULL
,
13649 0x00000002, NULL
, HFILL
} },
13651 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register
,
13652 { "Reset Credit Register", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_credit_register", FT_BOOLEAN
, 32, NULL
,
13653 0x00000004, NULL
, HFILL
} },
13655 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register
,
13656 { "Reset Debit Register", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_debit_register", FT_BOOLEAN
, 32, NULL
,
13657 0x00000008, NULL
, HFILL
} },
13659 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period
,
13660 { "Reset Billing Period", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_billing_period", FT_BOOLEAN
, 32, NULL
,
13661 0x00000010, NULL
, HFILL
} },
13663 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan
,
13664 { "Clear Tariff Plan", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_tariff_plan", FT_BOOLEAN
, 32, NULL
,
13665 0x00000020, NULL
, HFILL
} },
13667 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge
,
13668 { "Clear Standing Charge", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_standing_charge", FT_BOOLEAN
, 32, NULL
,
13669 0x00000040, NULL
, HFILL
} },
13671 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information
,
13672 { "Block Historical Load Profile Information", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.block_historical_load_profile_information", FT_BOOLEAN
, 32, NULL
,
13673 0x00000080, NULL
, HFILL
} },
13675 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information
,
13676 { "Clear Historical Load Profile Information", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_historical_load_profile_information", FT_BOOLEAN
, 32, NULL
,
13677 0x00000100, NULL
, HFILL
} },
13679 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer
,
13680 { "Clear IHD Data - Consumer", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_ihd_data_consumer", FT_BOOLEAN
, 32, NULL
,
13681 0x00000200, NULL
, HFILL
} },
13683 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier
,
13684 { "Clear IHD Data - Supplier", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_ihd_data_supplier", FT_BOOLEAN
, 32, NULL
,
13685 0x00000400, NULL
, HFILL
} },
13687 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state
,
13688 { "Meter Contactor State \"On / Off / Armed\"", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.meter_contactor_state", FT_UINT32
, BASE_HEX
, VALS(zbee_zcl_device_management_contactor_states
),
13689 0x00001800, NULL
, HFILL
} },
13691 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log
,
13692 { "Clear Transaction Log", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_transaction_log", FT_BOOLEAN
, 32, NULL
,
13693 0x00002000, NULL
, HFILL
} },
13695 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data
,
13696 { "Clear Prepayment Data", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_prepayment_data", FT_BOOLEAN
, 32, NULL
,
13697 0x00004000, NULL
, HFILL
} },
13699 { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved
,
13700 { "Reserved", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reserved", FT_UINT32
, BASE_HEX
, NULL
,
13701 0xFFFF8000, NULL
, HFILL
} },
13703 { &hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id
,
13704 { "Current Provider ID", "zbee_zcl_se.device_management.publish_change_of_supplier.current_provider_id", FT_UINT32
, BASE_HEX
, NULL
,
13705 0x0, NULL
, HFILL
} },
13707 { &hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id
,
13708 { "Issuer Event ID", "zbee_zcl_se.device_management.publish_change_of_supplier.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13709 0x0, NULL
, HFILL
} },
13711 { &hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type
,
13712 { "Tariff Type", "zbee_zcl_se.device_management.publish_change_of_supplier.tariff_type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_price_tariff_type_names
),
13713 0x0, NULL
, HFILL
} },
13715 { &hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id
,
13716 { "Proposed Provider ID", "zbee_zcl_se.device_management.publish_change_of_supplier.proposed_provider_id", FT_UINT32
, BASE_HEX
, NULL
,
13717 0x0, NULL
, HFILL
} },
13719 { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_implementation_time
,
13720 { "Provider Change Implementation Time", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_change_implementation_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13721 0x0, NULL
, HFILL
} },
13723 { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control
,
13724 { "Provider Change Control", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_change_control", FT_UINT32
, BASE_HEX
, NULL
,
13725 0x0, NULL
, HFILL
} },
13727 { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_name
,
13728 { "Proposed Provider Name", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_proposed_provider_name", FT_UINT_STRING
, BASE_NONE
, NULL
,
13729 0x0, NULL
, HFILL
} },
13731 { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_contact_details
,
13732 { "Proposed Provider Contact Details", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_proposed_provider_contact_details", FT_UINT_STRING
, BASE_NONE
, NULL
,
13733 0x0, NULL
, HFILL
} },
13735 { &hf_zbee_zcl_device_management_request_new_password_issuer_event_id
,
13736 { "Issuer Event ID", "zbee_zcl_se.device_management.request_new_password.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13737 0x0, NULL
, HFILL
} },
13739 { &hf_zbee_zcl_device_management_request_new_password_implementation_date
,
13740 { "Implementation Date/Time", "zbee_zcl_se.device_management.request_new_password.implementation_date", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13741 0x0, NULL
, HFILL
} },
13743 { &hf_zbee_zcl_device_management_request_new_password_duration_in_minutes
,
13744 { "Duration in minutes", "zbee_zcl_se.device_management.request_new_password.duration_in_minutes", FT_UINT16
, BASE_DEC
, NULL
,
13745 0x0, NULL
, HFILL
} },
13747 { &hf_zbee_zcl_device_management_request_new_password_password
,
13748 { "Password", "zbee_zcl_se.device_management.request_new_password.password", FT_UINT_STRING
, BASE_NONE
, NULL
,
13749 0x0, NULL
, HFILL
} },
13751 { &hf_zbee_zcl_device_management_update_site_id_issuer_event_id
,
13752 { "Issuer Event ID", "zbee_zcl_se.device_management.update_site_id.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13753 0x0, NULL
, HFILL
} },
13755 { &hf_zbee_zcl_device_management_update_site_id_site_id_time
,
13756 { "SiteID Time", "zbee_zcl_se.device_management.update_site_id.site_id_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13757 0x0, NULL
, HFILL
} },
13759 { &hf_zbee_zcl_device_management_update_site_id_provider_id
,
13760 { "Provider ID", "zbee_zcl_se.device_management.update_site_id.provider_id", FT_UINT32
, BASE_HEX
, NULL
,
13761 0x0, NULL
, HFILL
} },
13763 { &hf_zbee_zcl_device_management_update_site_id_site_id
,
13764 { "SiteID", "zbee_zcl_se.device_management.update_site_id.site_id", FT_UINT_STRING
, BASE_NONE
, NULL
,
13765 0x0, NULL
, HFILL
} },
13767 { &hf_zbee_zcl_device_management_get_event_configuration_event_id
,
13768 { "Event ID", "zbee_zcl_se.device_management.get_event_configuration.event_id", FT_UINT16
, BASE_HEX
, NULL
,
13769 0x0, NULL
, HFILL
} },
13771 { &hf_zbee_zcl_device_management_update_cin_issuer_event_id
,
13772 { "Issuer Event ID", "zbee_zcl_se.device_management.update_cin.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13773 0x0, NULL
, HFILL
} },
13775 { &hf_zbee_zcl_device_management_update_cin_cin_implementation_time
,
13776 { "CIN Implementation Time", "zbee_zcl_se.device_management.update_cin.cin_implementation_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13777 0x0, NULL
, HFILL
} },
13779 { &hf_zbee_zcl_device_management_update_cin_provider_id
,
13780 { "Provider ID", "zbee_zcl_se.device_management.update_cin.provider_id", FT_UINT32
, BASE_HEX
, NULL
,
13781 0x0, NULL
, HFILL
} },
13783 { &hf_zbee_zcl_device_management_update_cin_customerid_number
,
13784 { "CustomerID Number", "zbee_zcl_se.device_management.update_cin.customerid_number", FT_UINT_STRING
, BASE_NONE
, NULL
,
13785 0x0, NULL
, HFILL
} },
13787 { &hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id
,
13788 { "Issuer Event ID", "zbee_zcl_se.device_management.set_event_configuration.issuer_event_id", FT_UINT32
, BASE_HEX
, NULL
,
13789 0x0, NULL
, HFILL
} },
13791 { &hf_zbee_zcl_device_management_set_event_configuration_start_time
,
13792 { "Start Date/Time", "zbee_zcl_se.device_management.set_event_configuration.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
13793 0x0, NULL
, HFILL
} },
13795 { &hf_zbee_zcl_device_management_set_event_configuration_configuration_control
,
13796 { "Configuration Control", "zbee_zcl_se.device_management.set_event_configuration.configuration_control", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_device_management_configuration_controls
),
13797 0x0, NULL
, HFILL
} },
13799 { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events
,
13800 { "Number of Events", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.number_of_events", FT_UINT8
, BASE_DEC
, NULL
,
13801 0x0, NULL
, HFILL
} },
13803 { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id
,
13804 { "Event ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.event_id", FT_UINT16
, BASE_DEC
, NULL
,
13805 0x0, NULL
, HFILL
} },
13807 { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id
,
13808 { "Event Group ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.event_group_id", FT_UINT16
, BASE_DEC
, NULL
,
13809 0x0, NULL
, HFILL
} },
13811 { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id
,
13812 { "Log ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.log_id", FT_UINT8
, BASE_DEC
, NULL
,
13813 0x0, NULL
, HFILL
} },
13815 { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_configuration_value_match
,
13816 { "Configuration Value Match", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.configuration_value_match", FT_UINT8
, BASE_DEC
, NULL
,
13817 0x0, NULL
, HFILL
} },
13821 /* ZCL Device Management subtrees */
13823 &ett_zbee_zcl_device_management
,
13824 &ett_zbee_zcl_device_management_event_configuration_payload
,
13825 &ett_zbee_zcl_device_management_event_configuration
,
13826 &ett_zbee_zcl_device_management_proposed_tenancy_change_control
13829 /* Register the ZigBee ZCL Device Management cluster protocol name and description */
13830 proto_zbee_zcl_device_management
= proto_register_protocol("ZigBee ZCL Device Management", "ZCL Device Management", ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT
);
13831 proto_register_field_array(proto_zbee_zcl_device_management
, hf
, array_length(hf
));
13832 proto_register_subtree_array(ett
, array_length(ett
));
13834 /* Register the ZigBee ZCL Device Management dissector. */
13835 register_dissector(ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT
, dissect_zbee_zcl_device_management
, proto_zbee_zcl_device_management
);
13836 } /*proto_register_zbee_zcl_device_management*/
13839 *Hands off the ZCL Device Management dissector.
13843 proto_reg_handoff_zbee_zcl_device_management(void)
13845 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT
,
13846 proto_zbee_zcl_device_management
,
13847 ett_zbee_zcl_device_management
,
13848 ZBEE_ZCL_CID_DEVICE_MANAGEMENT
,
13849 ZBEE_MFG_CODE_NONE
,
13850 hf_zbee_zcl_device_management_attr_server_id
,
13851 hf_zbee_zcl_device_management_attr_client_id
,
13852 hf_zbee_zcl_device_management_srv_rx_cmd_id
,
13853 hf_zbee_zcl_device_management_srv_tx_cmd_id
,
13854 (zbee_zcl_fn_attr_data
)dissect_zcl_device_management_attr_data
13856 } /*proto_reg_handoff_zbee_zcl_device_management*/
13859 /* ########################################################################## */
13860 /* #### (0x0709) EVENTS CLUSTER ############################################# */
13861 /* ########################################################################## */
13863 /* Attributes - None */
13865 /* Server Commands Received */
13866 #define zbee_zcl_events_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
13867 XXX(ZBEE_ZCL_CMD_ID_EVENTS_GET_EVENT_LOG, 0x00, "Get Event Log" ) \
13868 XXX(ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_REQUEST, 0x01, "Clear Event Log Request" )
13870 VALUE_STRING_ENUM(zbee_zcl_events_srv_rx_cmd_names
);
13871 VALUE_STRING_ARRAY(zbee_zcl_events_srv_rx_cmd_names
);
13873 /* Server Commands Generated */
13874 #define zbee_zcl_events_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
13875 XXX(ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT, 0x00, "Publish Event" ) \
13876 XXX(ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT_LOG, 0x01, "Publish Event Log" ) \
13877 XXX(ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_RESPONSE, 0x02, "Clear Event Log Response" )
13879 VALUE_STRING_ENUM(zbee_zcl_events_srv_tx_cmd_names
);
13880 VALUE_STRING_ARRAY(zbee_zcl_events_srv_tx_cmd_names
);
13882 /*************************/
13883 /* Function Declarations */
13884 /*************************/
13885 void proto_register_zbee_zcl_events(void);
13886 void proto_reg_handoff_zbee_zcl_events(void);
13888 /* Command Dissector Helpers */
13889 static void dissect_zcl_events_get_event_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
13890 static void dissect_zcl_events_clear_event_log_request (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
13891 static void dissect_zcl_events_publish_event (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
13892 static void dissect_zcl_events_publish_event_log (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
13893 static void dissect_zcl_events_clear_event_log_response (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
13895 /*************************/
13896 /* Global Variables */
13897 /*************************/
13899 /* Initialize the protocol and registered fields */
13900 static int proto_zbee_zcl_events
;
13902 static int hf_zbee_zcl_events_srv_tx_cmd_id
;
13903 static int hf_zbee_zcl_events_srv_rx_cmd_id
;
13904 static int hf_zbee_zcl_events_get_event_log_event_control_log_id
;
13905 static int hf_zbee_zcl_events_get_event_log_event_id
;
13906 static int hf_zbee_zcl_events_get_event_log_start_time
;
13907 static int hf_zbee_zcl_events_get_event_log_end_time
;
13908 static int hf_zbee_zcl_events_get_event_log_number_of_events
;
13909 static int hf_zbee_zcl_events_get_event_log_event_offset
;
13910 static int hf_zbee_zcl_events_clear_event_log_request_log_id
;
13911 static int hf_zbee_zcl_events_publish_event_log_id
;
13912 static int hf_zbee_zcl_events_publish_event_event_id
;
13913 static int hf_zbee_zcl_events_publish_event_event_time
;
13914 static int hf_zbee_zcl_events_publish_event_event_control
;
13915 static int hf_zbee_zcl_events_publish_event_event_data
;
13916 static int hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events
;
13917 static int hf_zbee_zcl_events_publish_event_log_command_index
;
13918 static int hf_zbee_zcl_events_publish_event_log_total_commands
;
13919 static int hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control
;
13920 static int hf_zbee_zcl_events_publish_event_log_log_id
;
13921 static int hf_zbee_zcl_events_publish_event_log_event_id
;
13922 static int hf_zbee_zcl_events_publish_event_log_event_time
;
13923 static int hf_zbee_zcl_events_publish_event_log_event_data
;
13924 static int hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs
;
13926 /* Initialize the subtree pointers */
13927 #define ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT 1
13928 #define ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT 100 // The Great Britain Companion Specification (GBCS) allows up to 100 even though ZigBee only allows 15
13929 #define ZBEE_ZCL_SE_EVENTS_NUM_TOTAL_ETT (ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT + ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT)
13931 static int ett_zbee_zcl_events
;
13932 static int ett_zbee_zcl_events_publish_event_log_entry
[ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT
];
13934 /*************************/
13935 /* Function Bodies */
13936 /*************************/
13939 *ZigBee ZCL Events cluster dissector for wireshark.
13941 *@param tvb pointer to buffer containing raw packet.
13942 *@param pinfo pointer to packet information fields
13943 *@param tree pointer to data tree Wireshark uses to display packet.
13946 dissect_zbee_zcl_events(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
13948 proto_tree
*payload_tree
;
13949 zbee_zcl_packet
*zcl
;
13950 unsigned offset
= 0;
13954 /* Reject the packet if data is NULL */
13957 zcl
= (zbee_zcl_packet
*)data
;
13958 cmd_id
= zcl
->cmd_id
;
13960 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
13961 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
13962 /* Append the command name to the info column. */
13963 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
13964 val_to_str_const(cmd_id
, zbee_zcl_events_srv_rx_cmd_names
, "Unknown Command"),
13967 /* Add the command ID. */
13968 proto_tree_add_uint(tree
, hf_zbee_zcl_events_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
13970 /* Check is this command has a payload, than add the payload tree */
13971 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
13973 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_events
, NULL
, "Payload");
13975 /* Call the appropriate command dissector */
13978 case ZBEE_ZCL_CMD_ID_EVENTS_GET_EVENT_LOG
:
13979 dissect_zcl_events_get_event_log(tvb
, payload_tree
, &offset
);
13982 case ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_REQUEST
:
13983 dissect_zcl_events_clear_event_log_request(tvb
, payload_tree
, &offset
);
13991 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
13992 /* Append the command name to the info column. */
13993 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
13994 val_to_str_const(cmd_id
, zbee_zcl_events_srv_tx_cmd_names
, "Unknown Command"),
13997 /* Add the command ID. */
13998 proto_tree_add_uint(tree
, hf_zbee_zcl_events_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
14000 /* Check is this command has a payload, than add the payload tree */
14001 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
14003 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_events
, NULL
, "Payload");
14005 /* Call the appropriate command dissector */
14008 case ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT
:
14009 dissect_zcl_events_publish_event(tvb
, payload_tree
, &offset
);
14012 case ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT_LOG
:
14013 dissect_zcl_events_publish_event_log(tvb
, payload_tree
, &offset
);
14016 case ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_RESPONSE
:
14017 dissect_zcl_events_clear_event_log_response(tvb
, payload_tree
, &offset
);
14026 return tvb_captured_length(tvb
);
14027 } /*dissect_zbee_zcl_events*/
14030 *This function manages the Get Event Log payload
14032 *@param tvb pointer to buffer containing raw packet.
14033 *@param tree pointer to data tree Wireshark uses to display packet.
14034 *@param offset pointer to offset from caller
14037 dissect_zcl_events_get_event_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14039 /* Event Control / Log ID */
14040 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_event_control_log_id
, tvb
, *offset
, 1, ENC_NA
);
14044 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
14048 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_start_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
14052 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_end_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
14055 /* Number of Events */
14056 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_number_of_events
, tvb
, *offset
, 1, ENC_NA
);
14060 proto_tree_add_item(tree
, hf_zbee_zcl_events_get_event_log_event_offset
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
14062 } /*dissect_zcl_events_get_event_log*/
14065 *This function manages the Clear Event Log Request payload
14067 *@param tvb pointer to buffer containing raw packet.
14068 *@param tree pointer to data tree Wireshark uses to display packet.
14069 *@param offset pointer to offset from caller
14072 dissect_zcl_events_clear_event_log_request(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14075 proto_tree_add_item(tree
, hf_zbee_zcl_events_clear_event_log_request_log_id
, tvb
, *offset
, 1, ENC_NA
);
14077 } /*dissect_zcl_events_clear_event_log_request*/
14080 *This function manages the Publish Event payload
14082 *@param tvb pointer to buffer containing raw packet.
14083 *@param tree pointer to data tree Wireshark uses to display packet.
14084 *@param offset pointer to offset from caller
14087 dissect_zcl_events_publish_event(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14091 if (gPREF_zbee_se_protocol_version
>= ZBEE_SE_VERSION_1_2
) {
14092 /* Log ID - Introduced from ZCL version 1.2 */
14093 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_log_id
, tvb
, *offset
, 1, ENC_NA
);
14098 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
14102 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_event_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
14105 /* Event Control */
14106 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_event_control
, tvb
, *offset
, 1, ENC_NA
);
14110 proto_tree_add_item_ret_length(tree
, hf_zbee_zcl_events_publish_event_event_data
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
14112 } /*dissect_zcl_events_publish_event*/
14115 *This function manages the Publish Event Log payload
14117 *@param tvb pointer to buffer containing raw packet.
14118 *@param tree pointer to data tree Wireshark uses to display packet.
14119 *@param offset pointer to offset from caller
14122 dissect_zcl_events_publish_event_log(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14124 proto_tree
* event_log_tree
;
14127 /* Total Number of Matching Events */
14128 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
14131 /* Command Index */
14132 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_log_command_index
, tvb
, *offset
, 1, ENC_NA
);
14135 /* Total Commands */
14136 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_log_total_commands
, tvb
, *offset
, 1, ENC_NA
);
14139 /* Number of Events / Log Payload Control */
14140 proto_tree_add_item(tree
, hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control
, tvb
, *offset
, 1, ENC_NA
);
14143 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) > 0 && i
< ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT
; i
++) {
14145 event_log_tree
= proto_tree_add_subtree_format(tree
, tvb
, *offset
, 0, ett_zbee_zcl_events_publish_event_log_entry
[i
], NULL
, "Event Log %d", i
+ 1);
14147 if (gPREF_zbee_se_protocol_version
>= ZBEE_SE_VERSION_1_2
) {
14148 /* Log ID - Introduced from ZCL version 1.2 */
14149 proto_tree_add_item(event_log_tree
, hf_zbee_zcl_events_publish_event_log_log_id
, tvb
, *offset
, 1, ENC_NA
);
14154 proto_item_append_text(event_log_tree
, ", Event ID: 0x%04x", tvb_get_uint16(tvb
, *offset
, ENC_LITTLE_ENDIAN
));
14155 proto_tree_add_item(event_log_tree
, hf_zbee_zcl_events_publish_event_log_event_id
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
14159 proto_tree_add_item(event_log_tree
, hf_zbee_zcl_events_publish_event_log_event_time
, tvb
, *offset
, 4, ENC_TIME_ZBEE_ZCL
|ENC_LITTLE_ENDIAN
);
14163 proto_tree_add_item_ret_length(event_log_tree
, hf_zbee_zcl_events_publish_event_log_event_data
, tvb
, *offset
, 1, ENC_NA
|ENC_ZIGBEE
, &length
);
14166 /* Set length of subtree */
14167 proto_item_set_end(proto_tree_get_parent(event_log_tree
), tvb
, *offset
);
14169 } /*dissect_zcl_events_publish_event_log*/
14172 *This function manages the Clear Event Log Response payload
14174 *@param tvb pointer to buffer containing raw packet.
14175 *@param tree pointer to data tree Wireshark uses to display packet.
14176 *@param offset pointer to offset from caller
14179 dissect_zcl_events_clear_event_log_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14181 /* Cleared Event Logs */
14182 proto_tree_add_item(tree
, hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs
, tvb
, *offset
, 1, ENC_NA
);
14184 } /*dissect_zcl_events_clear_event_log_response*/
14187 *This function registers the ZCL Events dissector
14191 proto_register_zbee_zcl_events(void)
14193 static hf_register_info hf
[] = {
14195 { &hf_zbee_zcl_events_srv_tx_cmd_id
,
14196 { "Command", "zbee_zcl_se.events.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_events_srv_tx_cmd_names
),
14197 0x00, NULL
, HFILL
} },
14199 { &hf_zbee_zcl_events_srv_rx_cmd_id
,
14200 { "Command", "zbee_zcl_se.events.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_events_srv_rx_cmd_names
),
14201 0x00, NULL
, HFILL
} },
14203 { &hf_zbee_zcl_events_get_event_log_event_control_log_id
,
14204 { "Event Control / Log ID", "zbee_zcl_se.events.get_event_log.event_control_log_id", FT_UINT8
, BASE_HEX
, NULL
,
14205 0x00, NULL
, HFILL
} },
14207 { &hf_zbee_zcl_events_get_event_log_event_id
,
14208 { "Event ID", "zbee_zcl_se.events.get_event_log.event_id", FT_UINT16
, BASE_HEX
, NULL
,
14209 0x00, NULL
, HFILL
} },
14211 { &hf_zbee_zcl_events_get_event_log_start_time
,
14212 { "Start Time", "zbee_zcl_se.events.get_event_log.start_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
14213 0x00, NULL
, HFILL
} },
14215 { &hf_zbee_zcl_events_get_event_log_end_time
,
14216 { "End Time", "zbee_zcl_se.events.get_event_log.end_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
14217 0x00, NULL
, HFILL
} },
14219 { &hf_zbee_zcl_events_get_event_log_number_of_events
,
14220 { "Number of Events", "zbee_zcl_se.events.get_event_log.number_of_events", FT_UINT8
, BASE_DEC
, NULL
,
14221 0x00, NULL
, HFILL
} },
14223 { &hf_zbee_zcl_events_get_event_log_event_offset
,
14224 { "Event Offset", "zbee_zcl_se.events.get_event_log.event_offset", FT_UINT16
, BASE_DEC
, NULL
,
14225 0x00, NULL
, HFILL
} },
14227 { &hf_zbee_zcl_events_clear_event_log_request_log_id
,
14228 { "Log ID", "zbee_zcl_se.events.clear_event_log_request.log_id", FT_UINT8
, BASE_HEX
, NULL
,
14229 0x00, NULL
, HFILL
} },
14231 { &hf_zbee_zcl_events_publish_event_log_id
,
14232 { "Log ID", "zbee_zcl_se.events.publish_event.log_id", FT_UINT8
, BASE_HEX
, NULL
,
14233 0x00, NULL
, HFILL
} },
14235 { &hf_zbee_zcl_events_publish_event_event_id
,
14236 { "Event ID", "zbee_zcl_se.events.publish_event.event_id", FT_UINT16
, BASE_HEX
, NULL
,
14237 0x00, NULL
, HFILL
} },
14239 { &hf_zbee_zcl_events_publish_event_event_time
,
14240 { "Event Time", "zbee_zcl_se.events.publish_event.event_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
14241 0x00, NULL
, HFILL
} },
14243 { &hf_zbee_zcl_events_publish_event_event_control
,
14244 { "Event Control", "zbee_zcl_se.events.publish_event.event_control", FT_UINT8
, BASE_HEX
, NULL
,
14245 0x00, NULL
, HFILL
} },
14247 { &hf_zbee_zcl_events_publish_event_event_data
,
14248 { "Event Data", "zbee_zcl_se.events.publish_event.event_data", FT_UINT_BYTES
, SEP_COLON
, NULL
,
14249 0x00, NULL
, HFILL
} },
14251 { &hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events
,
14252 { "Total Number of Matching Events", "zbee_zcl_se.events.publish_event_log.matching_events", FT_UINT16
, BASE_DEC
, NULL
,
14253 0x00, NULL
, HFILL
} },
14255 { &hf_zbee_zcl_events_publish_event_log_command_index
,
14256 { "Command Index", "zbee_zcl_se.events.publish_event_log.command_index", FT_UINT8
, BASE_DEC
, NULL
,
14257 0x00, NULL
, HFILL
} },
14259 { &hf_zbee_zcl_events_publish_event_log_total_commands
,
14260 { "Total Commands", "zbee_zcl_se.events.publish_event_log.total_commands", FT_UINT8
, BASE_DEC
, NULL
,
14261 0x00, NULL
, HFILL
} },
14263 { &hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control
,
14264 { "Number of Events / Log Payload Control", "zbee_zcl_se.events.publish_event_log.number_of_events_log_payload_control", FT_UINT8
, BASE_HEX
, NULL
,
14265 0x00, NULL
, HFILL
} },
14267 { &hf_zbee_zcl_events_publish_event_log_log_id
,
14268 { "Log ID", "zbee_zcl_se.events.publish_event_log.log_id", FT_UINT8
, BASE_HEX
, NULL
,
14269 0x00, NULL
, HFILL
} },
14271 { &hf_zbee_zcl_events_publish_event_log_event_id
,
14272 { "Event ID", "zbee_zcl_se.events.publish_event_log.event_id", FT_UINT16
, BASE_HEX
, NULL
,
14273 0x00, NULL
, HFILL
} },
14275 { &hf_zbee_zcl_events_publish_event_log_event_time
,
14276 { "Event Time", "zbee_zcl_se.events.publish_event_log.event_time", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
14277 0x00, NULL
, HFILL
} },
14279 { &hf_zbee_zcl_events_publish_event_log_event_data
,
14280 { "Event Data", "zbee_zcl_se.events.publish_event_log.event_data", FT_UINT_BYTES
, SEP_COLON
, NULL
,
14281 0x00, NULL
, HFILL
} },
14283 { &hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs
,
14284 { "Cleared Event Logs", "zbee_zcl_se.events.clear_event_log_response.cleared_event_logs", FT_UINT8
, BASE_HEX
, NULL
,
14285 0x00, NULL
, HFILL
} },
14289 /* ZCL Events subtrees */
14290 int *ett
[ZBEE_ZCL_SE_EVENTS_NUM_TOTAL_ETT
];
14291 ett
[0] = &ett_zbee_zcl_events
;
14293 unsigned j
= ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT
;
14295 /* Initialize Publish Event Log subtrees */
14296 for (unsigned i
= 0; i
< ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT
; i
++, j
++) {
14297 ett
[j
] = &ett_zbee_zcl_events_publish_event_log_entry
[i
];
14300 /* Register the ZigBee ZCL Events cluster protocol name and description */
14301 proto_zbee_zcl_events
= proto_register_protocol("ZigBee ZCL Events", "ZCL Events", ZBEE_PROTOABBREV_ZCL_EVENTS
);
14302 proto_register_field_array(proto_zbee_zcl_events
, hf
, array_length(hf
));
14303 proto_register_subtree_array(ett
, array_length(ett
));
14305 /* Register the ZigBee ZCL Events dissector. */
14306 register_dissector(ZBEE_PROTOABBREV_ZCL_EVENTS
, dissect_zbee_zcl_events
, proto_zbee_zcl_events
);
14307 } /*proto_register_zbee_zcl_events*/
14310 *Hands off the ZCL Events dissector.
14314 proto_reg_handoff_zbee_zcl_events(void)
14316 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_EVENTS
,
14317 proto_zbee_zcl_events
,
14318 ett_zbee_zcl_events
,
14319 ZBEE_ZCL_CID_EVENTS
,
14320 ZBEE_MFG_CODE_NONE
,
14322 hf_zbee_zcl_events_srv_rx_cmd_id
,
14323 hf_zbee_zcl_events_srv_tx_cmd_id
,
14326 } /*proto_reg_handoff_zbee_zcl_events*/
14328 /* ########################################################################## */
14329 /* #### (0x070A) MDU PAIRING CLUSTER ############################################ */
14330 /* ########################################################################## */
14332 /* Attributes - None */
14334 /* Server Commands Received */
14335 #define zbee_zcl_mdu_pairing_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
14336 XXX(ZBEE_ZCL_CMD_ID_MDU_PAIRING_REQUEST, 0x00, "Pairing Request" )
14338 VALUE_STRING_ENUM(zbee_zcl_mdu_pairing_srv_rx_cmd_names
);
14339 VALUE_STRING_ARRAY(zbee_zcl_mdu_pairing_srv_rx_cmd_names
);
14341 /* Server Commands Generated */
14342 #define zbee_zcl_mdu_pairing_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
14343 XXX(ZBEE_ZCL_CMD_ID_MDU_PAIRING_RESPONSE, 0x00, "Pairing Response" )
14345 VALUE_STRING_ENUM(zbee_zcl_mdu_pairing_srv_tx_cmd_names
);
14346 VALUE_STRING_ARRAY(zbee_zcl_mdu_pairing_srv_tx_cmd_names
);
14348 /*************************/
14349 /* Function Declarations */
14350 /*************************/
14351 void proto_register_zbee_zcl_mdu_pairing(void);
14352 void proto_reg_handoff_zbee_zcl_mdu_pairing(void);
14354 /* Command Dissector Helpers */
14355 static void dissect_zcl_mdu_pairing_request (tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
14356 static void dissect_zcl_mdu_pairing_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
14358 /*************************/
14359 /* Global Variables */
14360 /*************************/
14362 /* Initialize the protocol and registered fields */
14363 static int proto_zbee_zcl_mdu_pairing
;
14365 static int hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id
;
14366 static int hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id
;
14367 static int hf_zbee_zcl_mdu_pairing_info_version
;
14368 static int hf_zbee_zcl_mdu_pairing_total_devices_number
;
14369 static int hf_zbee_zcl_mdu_pairing_cmd_id
;
14370 static int hf_zbee_zcl_mdu_pairing_total_commands_number
;
14371 static int hf_zbee_zcl_mdu_pairing_device_eui64
;
14372 static int hf_zbee_zcl_mdu_pairing_local_info_version
;
14373 static int hf_zbee_zcl_mdu_pairing_requesting_device_eui64
;
14375 /* Initialize the subtree pointers */
14376 static int ett_zbee_zcl_mdu_pairing
;
14378 /*************************/
14379 /* Function Bodies */
14380 /*************************/
14383 *ZigBee ZCL MDU Pairing cluster dissector for wireshark.
14385 *@param tvb pointer to buffer containing raw packet.
14386 *@param pinfo pointer to packet information fields
14387 *@param tree pointer to data tree Wireshark uses to display packet.
14390 dissect_zbee_zcl_mdu_pairing(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
14392 proto_tree
*payload_tree
;
14393 zbee_zcl_packet
*zcl
;
14394 unsigned offset
= 0;
14398 /* Reject the packet if data is NULL */
14401 zcl
= (zbee_zcl_packet
*)data
;
14402 cmd_id
= zcl
->cmd_id
;
14404 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
14405 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
14406 /* Append the command name to the info column. */
14407 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
14408 val_to_str_const(cmd_id
, zbee_zcl_mdu_pairing_srv_rx_cmd_names
, "Unknown Command"),
14411 /* Add the command ID. */
14412 proto_tree_add_uint(tree
, hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
14414 /* Check is this command has a payload, than add the payload tree */
14415 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
14417 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_mdu_pairing
, NULL
, "Payload");
14419 /* Call the appropriate command dissector */
14422 case ZBEE_ZCL_CMD_ID_MDU_PAIRING_REQUEST
:
14423 dissect_zcl_mdu_pairing_request(tvb
, payload_tree
, &offset
);
14431 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
14432 /* Append the command name to the info column. */
14433 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
14434 val_to_str_const(cmd_id
, zbee_zcl_mdu_pairing_srv_tx_cmd_names
, "Unknown Command"),
14437 /* Add the command ID. */
14438 proto_tree_add_uint(tree
, hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
14440 /* Check is this command has a payload, than add the payload tree */
14441 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
14443 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_mdu_pairing
, NULL
, "Payload");
14445 /* Call the appropriate command dissector */
14448 case ZBEE_ZCL_CMD_ID_MDU_PAIRING_RESPONSE
:
14449 dissect_zcl_mdu_pairing_response(tvb
, payload_tree
, &offset
);
14458 return tvb_captured_length(tvb
);
14459 } /*dissect_zbee_zcl_mdu_pairing*/
14462 *This function manages the Pairing Request payload
14464 *@param tvb pointer to buffer containing raw packet.
14465 *@param tree pointer to data tree Wireshark uses to display packet.
14466 *@param offset pointer to offset from caller
14469 dissect_zcl_mdu_pairing_request(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14471 /* Local pairing information version */
14472 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_local_info_version
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
14475 /* EUI64 of Requesting Device */
14476 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_requesting_device_eui64
, tvb
, *offset
, 8, ENC_LITTLE_ENDIAN
);
14478 } /*dissect_zcl_mdu_pairing_request*/
14481 *This function manages the Pairing Response payload
14483 *@param tvb pointer to buffer containing raw packet.
14484 *@param tree pointer to data tree Wireshark uses to display packet.
14485 *@param offset pointer to offset from caller
14488 dissect_zcl_mdu_pairing_response(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14490 uint8_t devices_num
;
14492 /* Pairing information version */
14493 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_info_version
, tvb
, *offset
, 4, ENC_LITTLE_ENDIAN
);
14496 /* Total Number of Devices */
14497 devices_num
= tvb_get_uint8(tvb
, *offset
);
14498 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_total_devices_number
, tvb
, *offset
, 1, ENC_NA
);
14501 /* Command index */
14502 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_cmd_id
, tvb
, *offset
, 1, ENC_NA
);
14505 /* Total Number of Commands */
14506 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_total_commands_number
, tvb
, *offset
, 1, ENC_NA
);
14509 /* EUI64 of Devices */
14510 for (int i
= 0; tvb_reported_length_remaining(tvb
, *offset
) >= 8 && i
< devices_num
; i
++) {
14511 /* EUI64 of Device i */
14512 proto_tree_add_item(tree
, hf_zbee_zcl_mdu_pairing_device_eui64
, tvb
, *offset
, 8, ENC_LITTLE_ENDIAN
);
14515 } /*dissect_zcl_mdu_pairing_response*/
14518 *This function registers the ZCL MDU Pairing dissector
14522 proto_register_zbee_zcl_mdu_pairing(void)
14524 static hf_register_info hf
[] = {
14526 { &hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id
,
14527 { "Command", "zbee_zcl_se.mdu_pairing.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_mdu_pairing_srv_tx_cmd_names
),
14528 0x00, NULL
, HFILL
} },
14530 { &hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id
,
14531 { "Command", "zbee_zcl_se.mdu_pairing.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_mdu_pairing_srv_rx_cmd_names
),
14532 0x00, NULL
, HFILL
} },
14534 { &hf_zbee_zcl_mdu_pairing_info_version
,
14535 { "Pairing information version", "zbee_zcl_se.mdu_pairing.info_version", FT_UINT32
, BASE_DEC
, NULL
,
14536 0x0, NULL
, HFILL
} },
14538 { &hf_zbee_zcl_mdu_pairing_total_devices_number
,
14539 { "Total Number of Devices", "zbee_zcl_se.mdu_pairing.total_devices_number", FT_UINT8
, BASE_DEC
, NULL
,
14540 0x0, NULL
, HFILL
} },
14542 { &hf_zbee_zcl_mdu_pairing_cmd_id
,
14543 { "Command Index", "zbee_zcl_se.mdu_pairing.command_index", FT_UINT8
, BASE_HEX
, NULL
,
14544 0x0, NULL
, HFILL
} },
14546 { &hf_zbee_zcl_mdu_pairing_total_commands_number
,
14547 { "Total Number of Commands", "zbee_zcl_se.mdu_pairing.total_commands_number", FT_UINT8
, BASE_DEC
, NULL
,
14548 0x0, NULL
, HFILL
} },
14550 { &hf_zbee_zcl_mdu_pairing_device_eui64
,
14551 { "Device EUI64", "zbee_zcl_se.mdu_pairing.device_eui64", FT_EUI64
, BASE_NONE
, NULL
,
14552 0x0, NULL
, HFILL
} },
14554 { &hf_zbee_zcl_mdu_pairing_local_info_version
,
14555 { "Local Pairing Information Version", "zbee_zcl_se.mdu_pairing.local_info_version", FT_UINT32
, BASE_DEC
, NULL
,
14556 0x0, NULL
, HFILL
} },
14558 { &hf_zbee_zcl_mdu_pairing_requesting_device_eui64
,
14559 { "EUI64 of Requesting Device", "zbee_zcl_se.mdu_pairing.requesting_device_eui64", FT_EUI64
, BASE_NONE
, NULL
,
14560 0x0, NULL
, HFILL
} },
14563 /* ZCL MDU Pairing subtrees */
14565 &ett_zbee_zcl_mdu_pairing
14568 /* Register the ZigBee ZCL MDU Pairing cluster protocol name and description */
14569 proto_zbee_zcl_mdu_pairing
= proto_register_protocol("ZigBee ZCL MDU Pairing", "ZCL MDU Pairing", ZBEE_PROTOABBREV_ZCL_MDU_PAIRING
);
14570 proto_register_field_array(proto_zbee_zcl_mdu_pairing
, hf
, array_length(hf
));
14571 proto_register_subtree_array(ett
, array_length(ett
));
14573 /* Register the ZigBee ZCL MDU Pairing dissector. */
14574 register_dissector(ZBEE_PROTOABBREV_ZCL_MDU_PAIRING
, dissect_zbee_zcl_mdu_pairing
, proto_zbee_zcl_mdu_pairing
);
14575 } /*proto_register_zbee_zcl_mdu_pairing*/
14578 *Hands off the ZCL MDU Pairing dissector.
14582 proto_reg_handoff_zbee_zcl_mdu_pairing(void)
14584 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MDU_PAIRING
,
14585 proto_zbee_zcl_mdu_pairing
,
14586 ett_zbee_zcl_mdu_pairing
,
14587 ZBEE_ZCL_CID_MDU_PAIRING
,
14588 ZBEE_MFG_CODE_NONE
,
14590 hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id
,
14591 hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id
,
14594 } /*proto_reg_handoff_zbee_zcl_mdu_pairing*/
14596 /* ########################################################################## */
14597 /* #### (0x070B) SUB-GHZ CLUSTER ############################################ */
14598 /* ########################################################################## */
14601 #define zbee_zcl_sub_ghz_attr_names_VALUE_STRING_LIST(XXX) \
14602 XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_CHANNEL_CHANGE, 0x0000, "Channel Change" ) \
14603 XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_28_CHANNEL_MASK, 0x0001, "Page 28 Channel Mask" ) \
14604 XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_29_CHANNEL_MASK, 0x0002, "Page 29 Channel Mask" ) \
14605 XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_30_CHANNEL_MASK, 0x0003, "Page 30 Channel Mask" ) \
14606 XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_31_CHANNEL_MASK, 0x0004, "Page 31 Channel Mask" ) \
14607 XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_SUB_GHZ, 0xFFFE, "Attribute Reporting Status" )
14609 VALUE_STRING_ENUM(zbee_zcl_sub_ghz_attr_names
);
14610 VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_attr_names
);
14612 /* Server Commands Received */
14613 #define zbee_zcl_sub_ghz_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
14614 XXX(ZBEE_ZCL_CMD_ID_SUB_GHZ_GET_SUSPEND_ZCL_MESSAGES_STATUS, 0x00, "Get Suspend ZCL Messages Status" )
14616 VALUE_STRING_ENUM(zbee_zcl_sub_ghz_srv_rx_cmd_names
);
14617 VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_srv_rx_cmd_names
);
14619 /* Server Commands Generated */
14620 #define zbee_zcl_sub_ghz_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
14621 XXX(ZBEE_ZCL_CMD_ID_SUB_GHZ_SUSPEND_ZCL_MESSAGES, 0x00, "Suspend ZCL Messages" )
14623 VALUE_STRING_ENUM(zbee_zcl_sub_ghz_srv_tx_cmd_names
);
14624 VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_srv_tx_cmd_names
);
14626 /*************************/
14627 /* Function Declarations */
14628 /*************************/
14629 void proto_register_zbee_zcl_sub_ghz(void);
14630 void proto_reg_handoff_zbee_zcl_sub_ghz(void);
14632 /* Attribute Dissector Helpers */
14633 static void dissect_zcl_sub_ghz_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
);
14635 /* Command Dissector Helpers */
14636 static void dissect_zcl_sub_ghz_suspend_zcl_messages(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
);
14638 /*************************/
14639 /* Global Variables */
14640 /*************************/
14642 /* Initialize the protocol and registered fields */
14643 static int proto_zbee_zcl_sub_ghz
;
14645 static int hf_zbee_zcl_sub_ghz_srv_tx_cmd_id
;
14646 static int hf_zbee_zcl_sub_ghz_srv_rx_cmd_id
;
14647 static int hf_zbee_zcl_sub_ghz_attr_id
;
14648 static int hf_zbee_zcl_sub_ghz_attr_reporting_status
;
14649 static int hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period
;
14651 /* Initialize the subtree pointers */
14652 static int ett_zbee_zcl_sub_ghz
;
14654 /*************************/
14655 /* Function Bodies */
14656 /*************************/
14659 *This function is called by ZCL foundation dissector in order to decode
14661 *@param tree pointer to data tree Wireshark uses to display packet.
14662 *@param tvb pointer to buffer containing raw packet.
14663 *@param offset pointer to buffer offset
14664 *@param attr_id attribute identifier
14665 *@param data_type attribute data type
14666 *@param client_attr ZCL client
14669 dissect_zcl_sub_ghz_attr_data(proto_tree
*tree
, tvbuff_t
*tvb
, unsigned *offset
, uint16_t attr_id
, unsigned data_type
, bool client_attr
)
14671 /* Dissect attribute data type and data */
14673 /* applies to all SE clusters */
14674 case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_SUB_GHZ
:
14675 proto_tree_add_item(tree
, hf_zbee_zcl_sub_ghz_attr_reporting_status
, tvb
, *offset
, 1, ENC_NA
);
14679 case ZBEE_ZCL_ATTR_ID_SUB_GHZ_CHANNEL_CHANGE
:
14680 case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_28_CHANNEL_MASK
:
14681 case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_29_CHANNEL_MASK
:
14682 case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_30_CHANNEL_MASK
:
14683 case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_31_CHANNEL_MASK
:
14684 default: /* Catch all */
14685 dissect_zcl_attr_data(tvb
, tree
, offset
, data_type
, client_attr
);
14688 } /*dissect_zcl_sub_ghz_attr_data*/
14692 *ZigBee ZCL Sub-Ghz cluster dissector for wireshark.
14694 *@param tvb pointer to buffer containing raw packet.
14695 *@param pinfo pointer to packet information fields
14696 *@param tree pointer to data tree Wireshark uses to display packet.
14699 dissect_zbee_zcl_sub_ghz(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
14701 proto_tree
*payload_tree
;
14702 zbee_zcl_packet
*zcl
;
14703 unsigned offset
= 0;
14707 /* Reject the packet if data is NULL */
14710 zcl
= (zbee_zcl_packet
*)data
;
14711 cmd_id
= zcl
->cmd_id
;
14713 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
14714 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
14715 /* Append the command name to the info column. */
14716 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
14717 val_to_str_const(cmd_id
, zbee_zcl_sub_ghz_srv_rx_cmd_names
, "Unknown Command"),
14720 /* Add the command ID. */
14721 proto_tree_add_uint(tree
, hf_zbee_zcl_sub_ghz_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
14723 /* Check is this command has a payload, than add the payload tree */
14724 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
14726 /* payload_tree = */proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_sub_ghz
, NULL
, "Payload");
14728 /* Call the appropriate command dissector */
14731 case ZBEE_ZCL_CMD_ID_SUB_GHZ_GET_SUSPEND_ZCL_MESSAGES_STATUS
:
14740 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
14741 /* Append the command name to the info column. */
14742 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
14743 val_to_str_const(cmd_id
, zbee_zcl_sub_ghz_srv_tx_cmd_names
, "Unknown Command"),
14746 /* Add the command ID. */
14747 proto_tree_add_uint(tree
, hf_zbee_zcl_sub_ghz_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
14749 /* Check is this command has a payload, than add the payload tree */
14750 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
14752 payload_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, rem_len
, ett_zbee_zcl_sub_ghz
, NULL
, "Payload");
14754 /* Call the appropriate command dissector */
14757 case ZBEE_ZCL_CMD_ID_SUB_GHZ_SUSPEND_ZCL_MESSAGES
:
14758 dissect_zcl_sub_ghz_suspend_zcl_messages(tvb
, payload_tree
, &offset
);
14767 return tvb_captured_length(tvb
);
14768 } /*dissect_zbee_zcl_sub_ghz*/
14771 *This function manages the Suspend ZCL Messages payload
14773 *@param tvb pointer to buffer containing raw packet.
14774 *@param tree pointer to data tree Wireshark uses to display packet.
14775 *@param offset pointer to offset from caller
14778 dissect_zcl_sub_ghz_suspend_zcl_messages(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14780 /* (Optional) Suspension Period */
14781 if (tvb_reported_length_remaining(tvb
, *offset
) > 0) {
14782 proto_tree_add_item(tree
, hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period
, tvb
, *offset
, 1, ENC_NA
);
14785 } /*dissect_zcl_sub_ghz_suspend_zcl_messages*/
14788 *This function registers the ZCL Sub-Ghz dissector
14792 proto_register_zbee_zcl_sub_ghz(void)
14794 static hf_register_info hf
[] = {
14796 { &hf_zbee_zcl_sub_ghz_attr_id
,
14797 { "Attribute", "zbee_zcl_se.sub_ghz.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_sub_ghz_attr_names
),
14798 0x0, NULL
, HFILL
} },
14800 { &hf_zbee_zcl_sub_ghz_attr_reporting_status
, /* common to all SE clusters */
14801 { "Attribute Reporting Status", "zbee_zcl_se.sub_ghz.attr.attr_reporting_status",
14802 FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_se_reporting_status_names
), 0x00, NULL
, HFILL
} },
14804 { &hf_zbee_zcl_sub_ghz_srv_tx_cmd_id
,
14805 { "Command", "zbee_zcl_se.sub_ghz.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_sub_ghz_srv_tx_cmd_names
),
14806 0x00, NULL
, HFILL
} },
14808 { &hf_zbee_zcl_sub_ghz_srv_rx_cmd_id
,
14809 { "Command", "zbee_zcl_se.sub_ghz.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_sub_ghz_srv_rx_cmd_names
),
14810 0x00, NULL
, HFILL
} },
14812 { &hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period
,
14813 { "ZCL Messages Suspension Period", "zbee_zcl_se.sub_ghz.zcl_messages_suspension_period", FT_UINT8
, BASE_DEC
, NULL
,
14814 0x0, NULL
, HFILL
} },
14817 /* ZCL Sub-Ghz subtrees */
14819 &ett_zbee_zcl_sub_ghz
14822 /* Register the ZigBee ZCL Sub-Ghz cluster protocol name and description */
14823 proto_zbee_zcl_sub_ghz
= proto_register_protocol("ZigBee ZCL Sub-Ghz", "ZCL Sub-Ghz", ZBEE_PROTOABBREV_ZCL_SUB_GHZ
);
14824 proto_register_field_array(proto_zbee_zcl_sub_ghz
, hf
, array_length(hf
));
14825 proto_register_subtree_array(ett
, array_length(ett
));
14827 /* Register the ZigBee ZCL Sub-Ghz dissector. */
14828 register_dissector(ZBEE_PROTOABBREV_ZCL_SUB_GHZ
, dissect_zbee_zcl_sub_ghz
, proto_zbee_zcl_sub_ghz
);
14829 } /*proto_register_zbee_zcl_sub_ghz*/
14832 *Hands off the ZCL Sub-Ghz dissector.
14836 proto_reg_handoff_zbee_zcl_sub_ghz(void)
14838 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_SUB_GHZ
,
14839 proto_zbee_zcl_sub_ghz
,
14840 ett_zbee_zcl_sub_ghz
,
14841 ZBEE_ZCL_CID_SUB_GHZ
,
14842 ZBEE_MFG_CODE_NONE
,
14843 hf_zbee_zcl_sub_ghz_attr_id
,
14845 hf_zbee_zcl_sub_ghz_srv_rx_cmd_id
,
14846 hf_zbee_zcl_sub_ghz_srv_tx_cmd_id
,
14847 (zbee_zcl_fn_attr_data
)dissect_zcl_sub_ghz_attr_data
14849 } /*proto_reg_handoff_zbee_zcl_sub_ghz*/
14851 /* ########################################################################## */
14852 /* #### (0x0800) KEY ESTABLISHMENT ########################################## */
14853 /* ########################################################################## */
14855 /*************************/
14857 /*************************/
14859 #define ZBEE_ZCL_KE_USAGE_KEY_AGREEMENT 0x08
14860 #define ZBEE_ZCL_KE_USAGE_DIGITAL_SIGNATURE 0x80
14863 #define zbee_zcl_ke_attr_names_VALUE_STRING_LIST(XXX) \
14864 XXX(ZBEE_ZCL_ATTR_ID_KE_SUITE, 0x0000, "Supported Key Establishment Suites" )
14866 VALUE_STRING_ARRAY(zbee_zcl_ke_attr_names
);
14868 /* Server Commands Received */
14869 #define zbee_zcl_ke_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \
14870 XXX(ZBEE_ZCL_CMD_ID_KE_INITIATE_REQ, 0x00, "Initiate Key Establishment Request" ) \
14871 XXX(ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_REQ, 0x01, "Ephemeral Data Request" ) \
14872 XXX(ZBEE_ZCL_CMD_ID_KE_CONFIRM_REQ, 0x02, "Confirm Key Data Request" ) \
14873 XXX(ZBEE_ZCL_CMD_ID_KE_CLNT_TERMINATE, 0x03, "Terminate Key Establishment" )
14875 VALUE_STRING_ENUM(zbee_zcl_ke_srv_rx_cmd_names
);
14876 VALUE_STRING_ARRAY(zbee_zcl_ke_srv_rx_cmd_names
);
14878 /* Server Commands Generated */
14879 #define zbee_zcl_ke_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \
14880 XXX(ZBEE_ZCL_CMD_ID_KE_INITIATE_RSP, 0x00, "Initiate Key Establishment Response" ) \
14881 XXX(ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_RSP, 0x01, "Ephemeral Data Response" ) \
14882 XXX(ZBEE_ZCL_CMD_ID_KE_CONFIRM_RSP, 0x02, "Confirm Key Data Response" ) \
14883 XXX(ZBEE_ZCL_CMD_ID_KE_SRV_TERMINATE, 0x03, "Terminate Key Establishment" )
14885 VALUE_STRING_ENUM(zbee_zcl_ke_srv_tx_cmd_names
);
14886 VALUE_STRING_ARRAY(zbee_zcl_ke_srv_tx_cmd_names
);
14889 #define zbee_zcl_ke_suite_names_VALUE_STRING_LIST(XXX) \
14890 XXX(ZBEE_ZCL_KE_SUITE_1, 0x0001, "Crypto Suite 1 (CBKE K163)" ) \
14891 XXX(ZBEE_ZCL_KE_SUITE_2, 0x0002, "Crypto Suite 2 (CBKE K283)" )
14893 VALUE_STRING_ENUM(zbee_zcl_ke_suite_names
);
14894 VALUE_STRING_ARRAY(zbee_zcl_ke_suite_names
);
14896 /* Crypto Suite 2 Type Names */
14897 #define zbee_zcl_ke_type_names_VALUE_STRING_LIST(XXX) \
14898 XXX(ZBEE_ZCL_KE_TYPE_NO_EXT, 0x00, "No Extensions" )
14900 VALUE_STRING_ARRAY(zbee_zcl_ke_type_names
);
14902 /* Crypto Suite 2 Curve Names */
14903 #define zbee_zcl_ke_curve_names_VALUE_STRING_LIST(XXX) \
14904 XXX(ZBEE_ZCL_KE_CURVE_SECT283K1, 0x0D, "sect283k1" )
14906 VALUE_STRING_ARRAY(zbee_zcl_ke_curve_names
);
14908 /* Crypto Suite 2 Hash Names */
14909 #define zbee_zcl_ke_hash_names_VALUE_STRING_LIST(XXX) \
14910 XXX(ZBEE_ZCL_KE_HASH_AES_MMO, 0x08, "AES MMO" )
14912 VALUE_STRING_ARRAY(zbee_zcl_ke_hash_names
);
14914 #define zbee_zcl_ke_status_names_VALUE_STRING_LIST(XXX) \
14915 XXX(ZBEE_ZCL_KE_STATUS_RESERVED, 0x00, "Reserved" ) \
14916 XXX(ZBEE_ZCL_KE_STATUS_UNKNOWN_ISSUER, 0x01, "Unknown Issuer" ) \
14917 XXX(ZBEE_ZCL_KE_STATUS_BAD_KEY_CONFIRM, 0x02, "Bad Key Confirm" ) \
14918 XXX(ZBEE_ZCL_KE_STATUS_BAD_MESSAGE, 0x03, "Bad Message" ) \
14919 XXX(ZBEE_ZCL_KE_STATUS_NO_RESOURCES, 0x04, "No Resources" ) \
14920 XXX(ZBEE_ZCL_KE_STATUS_UNSUPPORTED_SUITE, 0x05, "Unsupported Suite" ) \
14921 XXX(ZBEE_ZCL_KE_STATUS_INVALID_CERTIFICATE, 0x06, "Invalid Certificate" )
14923 VALUE_STRING_ARRAY(zbee_zcl_ke_status_names
);
14925 /*************************/
14926 /* Function Declarations */
14927 /*************************/
14929 void proto_register_zbee_zcl_ke(void);
14930 void proto_reg_handoff_zbee_zcl_ke(void);
14932 /* Private functions prototype */
14934 /*************************/
14935 /* Global Variables */
14936 /*************************/
14938 /* Initialize the protocol and registered fields */
14939 static int proto_zbee_zcl_ke
;
14940 static int hf_zbee_zcl_ke_srv_tx_cmd_id
;
14941 static int hf_zbee_zcl_ke_srv_rx_cmd_id
;
14942 static int hf_zbee_zcl_ke_attr_id
;
14943 static int hf_zbee_zcl_ke_attr_client_id
;
14944 static int hf_zbee_zcl_ke_suite
;
14945 static int hf_zbee_zcl_ke_ephemeral_time
;
14946 static int hf_zbee_zcl_ke_confirm_time
;
14947 static int hf_zbee_zcl_ke_status
;
14948 static int hf_zbee_zcl_ke_wait_time
;
14949 static int hf_zbee_zcl_ke_cert_reconstr
;
14950 static int hf_zbee_zcl_ke_cert_subject
;
14951 static int hf_zbee_zcl_ke_cert_issuer
;
14952 static int hf_zbee_zcl_ke_cert_profile_attr
;
14953 static int hf_zbee_zcl_ke_cert_type
;
14954 static int hf_zbee_zcl_ke_cert_serialno
;
14955 static int hf_zbee_zcl_ke_cert_curve
;
14956 static int hf_zbee_zcl_ke_cert_hash
;
14957 static int hf_zbee_zcl_ke_cert_valid_from
;
14958 static int hf_zbee_zcl_ke_cert_valid_to
;
14959 static int hf_zbee_zcl_ke_cert_key_usage_agreement
;
14960 static int hf_zbee_zcl_ke_cert_key_usage_signature
;
14961 static int hf_zbee_zcl_ke_ephemeral_qeu
;
14962 static int hf_zbee_zcl_ke_ephemeral_qev
;
14963 static int hf_zbee_zcl_ke_macu
;
14964 static int hf_zbee_zcl_ke_macv
;
14966 /* Initialize the subtree pointers */
14967 static int ett_zbee_zcl_ke
;
14968 static int ett_zbee_zcl_ke_cert
;
14969 static int ett_zbee_zcl_ke_key_usage
;
14971 /*************************/
14972 /* Function Bodies */
14973 /*************************/
14976 *This function dissects the Suite 1 Certificate
14978 *@param tvb pointer to buffer containing raw packet.
14979 *@param tree pointer to data tree Wireshark uses to display packet.
14980 *@param offset pointer to offset from caller
14983 dissect_zcl_ke_suite1_certificate(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
14985 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_reconstr
, tvb
, *offset
, 22, ENC_NA
);
14988 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_subject
, tvb
, *offset
, 8, ENC_NA
);
14991 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_issuer
, tvb
, *offset
, 8, ENC_NA
);
14994 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_profile_attr
, tvb
, *offset
, 10, ENC_NA
);
14997 } /*dissect_zcl_ke_suite1_certificate*/
15000 *This function dissects the Suite 2 Certificate
15002 *@param tvb pointer to buffer containing raw packet.
15003 *@param tree pointer to data tree Wireshark uses to display packet.
15004 *@param offset pointer to offset from caller
15007 dissect_zcl_ke_suite2_certificate(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15009 nstime_t valid_from_time
;
15010 nstime_t valid_to_time
;
15013 proto_tree
*usage_tree
;
15015 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_type
, tvb
, *offset
, 1, ENC_NA
);
15018 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_serialno
, tvb
, *offset
, 8, ENC_NA
);
15021 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_curve
, tvb
, *offset
, 1, ENC_NA
);
15024 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_hash
, tvb
, *offset
, 1, ENC_NA
);
15027 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_issuer
, tvb
, *offset
, 8, ENC_NA
);
15030 valid_from_time
.secs
= (time_t)tvb_get_ntoh40(tvb
, *offset
);
15031 valid_from_time
.nsecs
= 0;
15032 proto_tree_add_time(tree
, hf_zbee_zcl_ke_cert_valid_from
, tvb
, *offset
, 5, &valid_from_time
);
15035 valid_to
= tvb_get_ntohl(tvb
, *offset
);
15036 if (valid_to
== 0xFFFFFFFF) {
15037 proto_tree_add_time_format(tree
, hf_zbee_zcl_ke_cert_valid_to
, tvb
, *offset
, 4, &valid_to_time
, "Valid To: does not expire (0xFFFFFFFF)");
15040 valid_to_time
.secs
= valid_from_time
.secs
+ valid_to
;
15041 valid_to_time
.nsecs
= 0;
15042 proto_tree_add_time(tree
, hf_zbee_zcl_ke_cert_valid_to
, tvb
, *offset
, 4, &valid_to_time
);
15046 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_subject
, tvb
, *offset
, 8, ENC_NA
);
15049 key_usage
= tvb_get_uint8(tvb
, *offset
);
15050 usage_tree
= proto_tree_add_subtree_format(tree
, tvb
, *offset
, 1, ett_zbee_zcl_ke_key_usage
, NULL
, "Key Usage (0x%02x)", key_usage
);
15052 proto_tree_add_item(usage_tree
, hf_zbee_zcl_ke_cert_key_usage_agreement
, tvb
, *offset
, 1, ENC_NA
);
15053 proto_tree_add_item(usage_tree
, hf_zbee_zcl_ke_cert_key_usage_signature
, tvb
, *offset
, 1, ENC_NA
);
15056 proto_tree_add_item(tree
, hf_zbee_zcl_ke_cert_reconstr
, tvb
, *offset
, 37, ENC_NA
);
15059 } /*dissect_zcl_ke_suite2_certificate*/
15062 *This function manages the Initiate Key Establishment message
15064 *@param tvb pointer to buffer containing raw packet.
15065 *@param tree pointer to data tree Wireshark uses to display packet.
15066 *@param offset pointer to offset from caller
15069 dissect_zcl_ke_initiate(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15072 proto_tree
*subtree
;
15075 suite
= tvb_get_letohs(tvb
, *offset
);
15077 proto_tree_add_item(tree
, hf_zbee_zcl_ke_suite
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
15080 proto_tree_add_item(tree
, hf_zbee_zcl_ke_ephemeral_time
, tvb
, *offset
, 1, ENC_NA
);
15083 proto_tree_add_item(tree
, hf_zbee_zcl_ke_confirm_time
, tvb
, *offset
, 1, ENC_NA
);
15086 rem_len
= tvb_reported_length_remaining(tvb
, *offset
);
15087 subtree
= proto_tree_add_subtree(tree
, tvb
, *offset
, rem_len
, ett_zbee_zcl_ke_cert
, NULL
, "Implicit Certificate");
15090 case ZBEE_ZCL_KE_SUITE_1
:
15091 dissect_zcl_ke_suite1_certificate(tvb
, subtree
, offset
);
15094 case ZBEE_ZCL_KE_SUITE_2
:
15095 dissect_zcl_ke_suite2_certificate(tvb
, subtree
, offset
);
15101 } /* dissect_zcl_ke_initiate */
15104 *This function dissects the Ephemeral Data QEU
15106 *@param tvb pointer to buffer containing raw packet.
15107 *@param tree pointer to data tree Wireshark uses to display packet.
15108 *@param offset pointer to offset from caller
15111 dissect_zcl_ke_ephemeral_qeu(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15115 /* size depends on suite but without a session we don't know that here */
15116 /* so just report what we have */
15117 length
= tvb_reported_length_remaining(tvb
, *offset
);
15118 proto_tree_add_item(tree
, hf_zbee_zcl_ke_ephemeral_qeu
, tvb
, *offset
, length
, ENC_NA
);
15120 return tvb_captured_length(tvb
);
15124 *This function dissects the Ephemeral Data QEV
15126 *@param tvb pointer to buffer containing raw packet.
15127 *@param tree pointer to data tree Wireshark uses to display packet.
15128 *@param offset pointer to offset from caller
15131 dissect_zcl_ke_ephemeral_qev(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15135 /* size depends on suite but without a session we don't know that here */
15136 /* so just report what we have */
15137 length
= tvb_reported_length_remaining(tvb
, *offset
);
15138 proto_tree_add_item(tree
, hf_zbee_zcl_ke_ephemeral_qev
, tvb
, *offset
, length
, ENC_NA
);
15140 return tvb_captured_length(tvb
);
15144 *This function dissects the Confirm MACU
15146 *@param tvb pointer to buffer containing raw packet.
15147 *@param tree pointer to data tree Wireshark uses to display packet.
15148 *@param offset pointer to offset from caller
15151 dissect_zcl_ke_confirm_macu(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15153 proto_tree_add_item(tree
, hf_zbee_zcl_ke_macu
, tvb
, *offset
, ZBEE_SEC_CONST_BLOCKSIZE
, ENC_NA
);
15154 *offset
+= ZBEE_SEC_CONST_BLOCKSIZE
;
15155 return tvb_captured_length(tvb
);
15159 *This function dissects the Confirm MACV
15161 *@param tvb pointer to buffer containing raw packet.
15162 *@param tree pointer to data tree Wireshark uses to display packet.
15163 *@param offset pointer to offset from caller
15166 dissect_zcl_ke_confirm_macv(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15168 proto_tree_add_item(tree
, hf_zbee_zcl_ke_macv
, tvb
, *offset
, ZBEE_SEC_CONST_BLOCKSIZE
, ENC_NA
);
15169 *offset
+= ZBEE_SEC_CONST_BLOCKSIZE
;
15170 return tvb_captured_length(tvb
);
15174 *This function dissects the Terminate Key Establishment message
15176 *@param tvb pointer to buffer containing raw packet.
15177 *@param tree pointer to data tree Wireshark uses to display packet.
15178 *@param offset pointer to offset from caller
15181 dissect_zcl_ke_terminate(tvbuff_t
*tvb
, proto_tree
*tree
, unsigned *offset
)
15183 proto_tree_add_item(tree
, hf_zbee_zcl_ke_status
, tvb
, *offset
, 1, ENC_NA
);
15186 proto_tree_add_item(tree
, hf_zbee_zcl_ke_wait_time
, tvb
, *offset
, 1, ENC_NA
);
15189 proto_tree_add_item(tree
, hf_zbee_zcl_ke_suite
, tvb
, *offset
, 2, ENC_LITTLE_ENDIAN
);
15194 *ZigBee ZCL Key Establishment cluster dissector for wireshark.
15196 *@param tvb pointer to buffer containing raw packet.
15197 *@param pinfo pointer to packet information fields
15198 *@param tree pointer to data tree Wireshark uses to display packet.
15201 dissect_zbee_zcl_ke(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
15203 zbee_zcl_packet
*zcl
;
15204 unsigned offset
= 0;
15208 /* Reject the packet if data is NULL */
15211 zcl
= (zbee_zcl_packet
*)data
;
15212 cmd_id
= zcl
->cmd_id
;
15214 /* Create a subtree for the ZCL Command frame, and add the command ID to it. */
15215 if (zcl
->direction
== ZBEE_ZCL_FCF_TO_SERVER
) {
15216 /* Append the command name to the info column. */
15217 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
15218 val_to_str_const(cmd_id
, zbee_zcl_ke_srv_rx_cmd_names
, "Unknown Command"),
15221 /* Add the command ID. */
15222 proto_tree_add_uint(tree
, hf_zbee_zcl_ke_srv_rx_cmd_id
, tvb
, offset
, 1, cmd_id
);
15224 /* Check is this command has a payload, than add the payload tree */
15225 rem_len
= tvb_reported_length_remaining(tvb
, offset
);
15226 offset
+= 1; /* delay from last add_item */
15229 /* Call the appropriate command dissector */
15231 case ZBEE_ZCL_CMD_ID_KE_INITIATE_REQ
:
15232 dissect_zcl_ke_initiate(tvb
, tree
, &offset
);
15235 case ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_REQ
:
15236 return dissect_zcl_ke_ephemeral_qeu(tvb
, tree
, &offset
);
15238 case ZBEE_ZCL_CMD_ID_KE_CONFIRM_REQ
:
15239 return dissect_zcl_ke_confirm_macu(tvb
, tree
, &offset
);
15241 case ZBEE_ZCL_CMD_ID_KE_CLNT_TERMINATE
:
15242 dissect_zcl_ke_terminate(tvb
, tree
, &offset
);
15250 else { /* ZBEE_ZCL_FCF_TO_CLIENT */
15251 /* Append the command name to the info column. */
15252 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "%s, Seq: %u",
15253 val_to_str_const(cmd_id
, zbee_zcl_ke_srv_tx_cmd_names
, "Unknown Command"),
15256 /* Add the command ID. */
15257 proto_tree_add_uint(tree
, hf_zbee_zcl_ke_srv_tx_cmd_id
, tvb
, offset
, 1, cmd_id
);
15259 /* Check is this command has a payload, than add the payload tree */
15260 rem_len
= tvb_reported_length_remaining(tvb
, ++offset
);
15262 /* Call the appropriate command dissector */
15264 case ZBEE_ZCL_CMD_ID_KE_INITIATE_RSP
:
15265 dissect_zcl_ke_initiate(tvb
, tree
, &offset
);
15268 case ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_RSP
:
15269 return dissect_zcl_ke_ephemeral_qev(tvb
, tree
, &offset
);
15271 case ZBEE_ZCL_CMD_ID_KE_CONFIRM_RSP
:
15272 return dissect_zcl_ke_confirm_macv(tvb
, tree
, &offset
);
15274 case ZBEE_ZCL_CMD_ID_KE_SRV_TERMINATE
:
15275 dissect_zcl_ke_terminate(tvb
, tree
, &offset
);
15284 return tvb_captured_length(tvb
);
15285 } /*dissect_zbee_zcl_ke*/
15289 *This function registers the ZCL Key Establishment dissector
15293 proto_register_zbee_zcl_ke(void)
15295 static hf_register_info hf
[] = {
15297 { &hf_zbee_zcl_ke_attr_id
,
15298 { "Attribute", "zbee_zcl_se.ke.attr_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_ke_attr_names
),
15299 0x00, NULL
, HFILL
} },
15301 /* Server and client attributes are the same but should of cause be put in the correct field */
15302 { &hf_zbee_zcl_ke_attr_client_id
,
15303 { "Attribute", "zbee_zcl_se.ke.attr_client_id", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_ke_attr_names
),
15304 0x00, NULL
, HFILL
} },
15306 { &hf_zbee_zcl_ke_srv_tx_cmd_id
,
15307 { "Command", "zbee_zcl_se.ke.cmd.srv_tx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_srv_tx_cmd_names
),
15308 0x00, NULL
, HFILL
} },
15310 { &hf_zbee_zcl_ke_srv_rx_cmd_id
,
15311 { "Command", "zbee_zcl_se.ke.cmd.srv_rx.id", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_srv_rx_cmd_names
),
15312 0x00, NULL
, HFILL
} },
15314 { &hf_zbee_zcl_ke_suite
,
15315 { "Key Establishment Suite", "zbee_zcl_se.ke.attr.suite", FT_UINT16
, BASE_HEX
, VALS(zbee_zcl_ke_suite_names
),
15316 0x00, NULL
, HFILL
} },
15318 { &hf_zbee_zcl_ke_ephemeral_time
,
15319 { "Ephemeral Data Generate Time", "zbee_zcl_se.ke.init.ephemeral.time", FT_UINT8
, BASE_DEC
, NULL
,
15320 0, NULL
, HFILL
} },
15322 { &hf_zbee_zcl_ke_confirm_time
,
15323 { "Confirm Key Generate Time", "zbee_zcl_se.ke.init.confirm.time", FT_UINT8
, BASE_DEC
, NULL
,
15324 0, NULL
, HFILL
} },
15326 { &hf_zbee_zcl_ke_status
,
15327 { "Status", "zbee_zcl_se.ke.terminate.status", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_status_names
),
15328 0x00, NULL
, HFILL
} },
15330 { &hf_zbee_zcl_ke_wait_time
,
15331 { "Wait Time", "zbee_zcl_se.ke.terminate.wait.time", FT_UINT8
, BASE_DEC
, NULL
,
15332 0, NULL
, HFILL
} },
15334 { &hf_zbee_zcl_ke_cert_reconstr
,
15335 { "Public Key", "zbee_zcl_se.ke.cert.reconst", FT_BYTES
, BASE_NONE
, NULL
,
15336 0, NULL
, HFILL
} },
15338 { &hf_zbee_zcl_ke_cert_subject
,
15339 { "Subject", "zbee_zcl_se.ke.cert.subject", FT_BYTES
, BASE_NONE
, NULL
,
15340 0, NULL
, HFILL
} },
15342 { &hf_zbee_zcl_ke_cert_issuer
,
15343 { "Issuer", "zbee_zcl_se.ke.cert.issuer", FT_BYTES
, BASE_NONE
, NULL
,
15344 0, NULL
, HFILL
} },
15346 { &hf_zbee_zcl_ke_cert_profile_attr
,
15347 { "Profile Attribute Data", "zbee_zcl_se.ke.cert.profile", FT_BYTES
, BASE_NONE
, NULL
,
15348 0, NULL
, HFILL
} },
15350 { &hf_zbee_zcl_ke_cert_type
,
15351 { "Type", "zbee_zcl_se.ke.cert.type", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_type_names
),
15352 0, NULL
, HFILL
} },
15354 { &hf_zbee_zcl_ke_cert_serialno
,
15355 { "Serial No", "zbee_zcl_se.ke.cert.serialno", FT_UINT64
, BASE_HEX
, NULL
,
15356 0, NULL
, HFILL
} },
15358 { &hf_zbee_zcl_ke_cert_curve
,
15359 { "Curve", "zbee_zcl_se.ke.cert.curve", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_curve_names
),
15360 0, NULL
, HFILL
} },
15362 { &hf_zbee_zcl_ke_cert_hash
,
15363 { "Hash", "zbee_zcl_se.ke.cert.hash", FT_UINT8
, BASE_HEX
, VALS(zbee_zcl_ke_hash_names
),
15364 0, NULL
, HFILL
} },
15366 { &hf_zbee_zcl_ke_cert_valid_from
,
15367 { "Valid From", "zbee_zcl_se.ke.cert.valid.from", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
15368 0, NULL
, HFILL
} },
15370 { &hf_zbee_zcl_ke_cert_valid_to
,
15371 { "Valid To", "zbee_zcl_se.ke.cert.valid.to", FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
,
15372 0, NULL
, HFILL
} },
15374 { &hf_zbee_zcl_ke_cert_key_usage_agreement
,
15375 { "Key Agreement", "zbee_zcl_se.ke.cert.key.usage.agreement", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
),
15376 ZBEE_ZCL_KE_USAGE_KEY_AGREEMENT
, NULL
, HFILL
}},
15378 { &hf_zbee_zcl_ke_cert_key_usage_signature
,
15379 { "Digital Signature", "zbee_zcl_se.ke.cert.key.usage.signature", FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
),
15380 ZBEE_ZCL_KE_USAGE_DIGITAL_SIGNATURE
, NULL
, HFILL
}},
15382 { &hf_zbee_zcl_ke_ephemeral_qeu
,
15383 { "Ephemeral Data (QEU)", "zbee_zcl_se.ke.qeu", FT_BYTES
, BASE_NONE
, NULL
,
15384 0, NULL
, HFILL
} },
15386 { &hf_zbee_zcl_ke_ephemeral_qev
,
15387 { "Ephemeral Data (QEV)", "zbee_zcl_se.ke.qev", FT_BYTES
, BASE_NONE
, NULL
,
15388 0, NULL
, HFILL
} },
15390 { &hf_zbee_zcl_ke_macu
,
15391 { "Message Authentication Code (MACU)", "zbee_zcl_se.ke.macu", FT_BYTES
, BASE_NONE
, NULL
,
15392 0, NULL
, HFILL
} },
15394 { &hf_zbee_zcl_ke_macv
,
15395 { "Message Authentication Code (MACV)", "zbee_zcl_se.ke.macv", FT_BYTES
, BASE_NONE
, NULL
,
15396 0, NULL
, HFILL
} },
15402 &ett_zbee_zcl_ke_cert
,
15403 &ett_zbee_zcl_ke_key_usage
,
15406 /* Register the ZigBee ZCL Key Establishment cluster protocol name and description */
15407 proto_zbee_zcl_ke
= proto_register_protocol("ZigBee ZCL Key Establishment", "ZCL Key Establishment", ZBEE_PROTOABBREV_ZCL_KE
);
15408 proto_register_field_array(proto_zbee_zcl_ke
, hf
, array_length(hf
));
15409 proto_register_subtree_array(ett
, array_length(ett
));
15411 /* Register the ZigBee ZCL Key Establishment dissector. */
15412 register_dissector(ZBEE_PROTOABBREV_ZCL_KE
, dissect_zbee_zcl_ke
, proto_zbee_zcl_ke
);
15413 } /*proto_register_zbee_zcl_ke*/
15416 *Hands off the ZCL Key Establishment dissector.
15420 proto_reg_handoff_zbee_zcl_ke(void)
15422 zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_KE
,
15426 ZBEE_MFG_CODE_NONE
,
15427 hf_zbee_zcl_ke_attr_id
,
15428 hf_zbee_zcl_ke_attr_client_id
,
15429 hf_zbee_zcl_ke_srv_rx_cmd_id
,
15430 hf_zbee_zcl_ke_srv_tx_cmd_id
,
15433 } /*proto_reg_handoff_zbee_zcl_ke*/
15436 * Editor modelines - https://www.wireshark.org/tools/modelines.html
15439 * c-basic-offset: 4
15441 * indent-tabs-mode: nil
15444 * vi: set shiftwidth=4 tabstop=8 expandtab:
15445 * :indentSize=4:tabSize=8:noTabs=true: