/src/wireshark/epan/dissectors/packet-zbee-zcl-se.c
Line | Count | Source |
1 | | /* packet-zbee-zcl-se.c |
2 | | * Dissector routines for the ZigBee ZCL SE clusters like |
3 | | * Messaging |
4 | | * By Fabio Tarabelloni <fabio.tarabelloni@reloc.it> |
5 | | * Copyright 2013 RELOC s.r.l. |
6 | | * |
7 | | * Wireshark - Network traffic analyzer |
8 | | * By Gerald Combs <gerald@wireshark.org> |
9 | | * Copyright 1998 Gerald Combs |
10 | | * |
11 | | * SPDX-License-Identifier: GPL-2.0-or-later |
12 | | */ |
13 | | |
14 | | /* Include Files */ |
15 | | #include "config.h" |
16 | | |
17 | | |
18 | | #include <epan/packet.h> |
19 | | #include <epan/expert.h> |
20 | | #include <epan/to_str.h> |
21 | | #include <epan/tfs.h> |
22 | | #include <epan/unit_strings.h> |
23 | | |
24 | | #include <wsutil/array.h> |
25 | | |
26 | | #include "packet-zbee.h" |
27 | | #include "packet-zbee-aps.h" |
28 | | #include "packet-zbee-zcl.h" |
29 | | #include "packet-zbee-security.h" |
30 | | |
31 | | /* ########################################################################## */ |
32 | | /* #### common to all SE clusters ########################################### */ |
33 | | /* ########################################################################## */ |
34 | | |
35 | | #define ZBEE_ZCL_SE_ATTR_REPORT_PENDING 0x00 |
36 | | #define ZBEE_ZCL_SE_ATTR_REPORT_COMPLETE 0x01 |
37 | | |
38 | | static const value_string zbee_zcl_se_reporting_status_names[] = { |
39 | | { ZBEE_ZCL_SE_ATTR_REPORT_PENDING, "Pending" }, |
40 | | { ZBEE_ZCL_SE_ATTR_REPORT_COMPLETE, "Complete" }, |
41 | | { 0, NULL } |
42 | | }; |
43 | | |
44 | | /** |
45 | | * These tables match Zigbee time values of 0x00000000 and 0xFFFFFFFF, |
46 | | * which have special meanings when used in a Smart Energy context |
47 | | */ |
48 | | static const time_value_string zero_is_invalid_strings[] = { |
49 | | { NSTIME_INIT_ZBEE(0x00000000), "Invalid" }, |
50 | | { NSTIME_INIT_ZERO, NULL } |
51 | | }; |
52 | | |
53 | | /** |
54 | | * XXX - we use thie for all Start Time fields; the 1.4a Zigbee Smart |
55 | | * Energy specification describes most, but not all, Start Time fields |
56 | | * as having 0xFFFFFFFF meaning "cancel a previous pending request". |
57 | | */ |
58 | | static const time_value_string now_or_cancel_strings[] = { |
59 | | { NSTIME_INIT_ZBEE(0x00000000), "Now" }, |
60 | | { NSTIME_INIT_ZBEE(0xFFFFFFFF), "Cancel pending" }, |
61 | | { NSTIME_INIT_ZERO, NULL } |
62 | | }; |
63 | | |
64 | | /** |
65 | | *Dissect a ZigBee Date |
66 | | * |
67 | | *@param tvb pointer to buffer containing raw packet. |
68 | | *@param tree pointer to data tree Wireshark uses to display packet. |
69 | | *@param offset pointer to buffer offset |
70 | | *@param subtree_name name for the subtree |
71 | | *@param idx one of the ett_ array elements registered with proto_register_subtree_array() |
72 | | *@param hfindex_yy year field |
73 | | *@param hfindex_mm month field |
74 | | *@param hfindex_md month day field |
75 | | *@param hfindex_wd week day field |
76 | | */ |
77 | | static void dissect_zcl_date(tvbuff_t *tvb, proto_tree *tree, unsigned *offset, |
78 | | int idx, const char* subtree_name, int hfindex_yy, int hfindex_mm, int hfindex_md, |
79 | | int hfindex_wd) |
80 | 0 | { |
81 | 0 | uint8_t yy; |
82 | 0 | proto_tree* subtree; |
83 | | |
84 | | /* Add subtree */ |
85 | 0 | subtree = proto_tree_add_subtree(tree, tvb, *offset, 4, idx, NULL, subtree_name); |
86 | | |
87 | | /* Year */ |
88 | 0 | yy = tvb_get_uint8(tvb, *offset); |
89 | 0 | proto_tree_add_uint(subtree, hfindex_yy, tvb, *offset, 1, yy + 1900); |
90 | 0 | *offset += 1; |
91 | | |
92 | | /* Month */ |
93 | 0 | proto_tree_add_item(subtree, hfindex_mm, tvb, *offset, 1, ENC_NA); |
94 | 0 | *offset += 1; |
95 | | |
96 | | /* Month Day */ |
97 | 0 | proto_tree_add_item(subtree, hfindex_md, tvb, *offset, 1, ENC_NA); |
98 | 0 | *offset += 1; |
99 | | |
100 | | /* Week Day */ |
101 | 0 | proto_tree_add_item(subtree, hfindex_wd, tvb, *offset, 1, ENC_NA); |
102 | 0 | *offset += 1; |
103 | 0 | } /*dissect_zcl_date*/ |
104 | | |
105 | | /*************************/ |
106 | | /* Global Variables */ |
107 | | /*************************/ |
108 | | |
109 | | /* ########################################################################## */ |
110 | | /* #### (0x0025) KEEP-ALIVE CLUSTER ######################################### */ |
111 | | /* ########################################################################## */ |
112 | | |
113 | | /* Attributes */ |
114 | | #define zbee_zcl_keep_alive_attr_names_VALUE_STRING_LIST(XXX) \ |
115 | | XXX(ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_BASE, 0x0000, "Keep-Alive Base" ) \ |
116 | | XXX(ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_JITTER, 0x0001, "Keep-Alive Jitter" ) \ |
117 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_KEEP_ALIVE, 0xFFFE, "Attribute Reporting Status" ) |
118 | | |
119 | | VALUE_STRING_ENUM(zbee_zcl_keep_alive_attr_names); |
120 | | VALUE_STRING_ARRAY(zbee_zcl_keep_alive_attr_names); |
121 | | |
122 | | /*************************/ |
123 | | /* Function Declarations */ |
124 | | /*************************/ |
125 | | void proto_register_zbee_zcl_keep_alive(void); |
126 | | void proto_reg_handoff_zbee_zcl_keep_alive(void); |
127 | | |
128 | | /*************************/ |
129 | | /* Global Variables */ |
130 | | /*************************/ |
131 | | |
132 | | /* Initialize the protocol and registered fields */ |
133 | | static int proto_zbee_zcl_keep_alive; |
134 | | |
135 | | static int hf_zbee_zcl_keep_alive_attr_id; |
136 | | static int hf_zbee_zcl_keep_alive_attr_reporting_status; |
137 | | static int hf_zbee_zcl_keep_alive_base; |
138 | | static int hf_zbee_zcl_keep_alive_jitter; |
139 | | |
140 | | /* Initialize the subtree pointers */ |
141 | | static int ett_zbee_zcl_keep_alive; |
142 | | |
143 | | /*************************/ |
144 | | /* Function Bodies */ |
145 | | /*************************/ |
146 | | |
147 | | /** |
148 | | *This function is called by ZCL foundation dissector in order to decode |
149 | | * |
150 | | *@param tree pointer to data tree Wireshark uses to display packet. |
151 | | *@param tvb pointer to buffer containing raw packet. |
152 | | *@param offset pointer to buffer offset |
153 | | *@param attr_id attribute identifier |
154 | | *@param data_type attribute data type |
155 | | *@param client_attr ZCL client |
156 | | */ |
157 | | static void |
158 | | dissect_zcl_keep_alive_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
159 | 326 | { |
160 | | /* Dissect attribute data type and data */ |
161 | 326 | switch (attr_id) { |
162 | | /* applies to all SE clusters */ |
163 | 2 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_KEEP_ALIVE: |
164 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_keep_alive_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
165 | 2 | *offset += 1; |
166 | 2 | break; |
167 | | |
168 | 126 | case ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_BASE: |
169 | 126 | proto_tree_add_item(tree, hf_zbee_zcl_keep_alive_base, tvb, *offset, 1, ENC_NA); |
170 | 126 | *offset += 1; |
171 | 126 | break; |
172 | | |
173 | 7 | case ZBEE_ZCL_ATTR_ID_KEEP_ALIVE_JITTER: |
174 | 7 | proto_tree_add_item(tree, hf_zbee_zcl_keep_alive_jitter, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
175 | 7 | *offset += 2; |
176 | 7 | break; |
177 | | |
178 | 191 | default: /* Catch all */ |
179 | 191 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
180 | 191 | break; |
181 | 326 | } |
182 | 326 | } /*dissect_zcl_keep_alive_attr_data*/ |
183 | | |
184 | | |
185 | | /** |
186 | | *ZigBee ZCL Keep-Alive cluster dissector for wireshark. |
187 | | * |
188 | | *@param tvb pointer to buffer containing raw packet. |
189 | | *@param pinfo pointer to packet information fields |
190 | | *@param tree pointer to data tree Wireshark uses to display packet. |
191 | | */ |
192 | | static int |
193 | | dissect_zbee_zcl_keep_alive(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void* data _U_) |
194 | 14 | { |
195 | 14 | return tvb_captured_length(tvb); |
196 | 14 | } /*dissect_zbee_zcl_keep_alive*/ |
197 | | |
198 | | /** |
199 | | *This function registers the ZCL Keep-Alive dissector |
200 | | * |
201 | | */ |
202 | | void |
203 | | proto_register_zbee_zcl_keep_alive(void) |
204 | 15 | { |
205 | 15 | static hf_register_info hf[] = { |
206 | | |
207 | 15 | { &hf_zbee_zcl_keep_alive_attr_id, |
208 | 15 | { "Attribute", "zbee_zcl_se.keep_alive.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_keep_alive_attr_names), |
209 | 15 | 0x0, NULL, HFILL } }, |
210 | | |
211 | 15 | { &hf_zbee_zcl_keep_alive_attr_reporting_status, /* common to all SE clusters */ |
212 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.keep_alive.attr.attr_reporting_status", |
213 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
214 | | |
215 | 15 | { &hf_zbee_zcl_keep_alive_base, |
216 | 15 | { "Keep-Alive Base", "zbee_zcl_se.keep_alive.attr.base", FT_UINT8, BASE_DEC, NULL, |
217 | 15 | 0x00, NULL, HFILL } }, |
218 | | |
219 | 15 | { &hf_zbee_zcl_keep_alive_jitter, |
220 | 15 | { "Keep-Alive Jitter", "zbee_zcl_se.keep_alive.attr.jitter", FT_UINT16, BASE_DEC, NULL, |
221 | 15 | 0x00, NULL, HFILL } }, |
222 | 15 | }; |
223 | | |
224 | | /* ZCL Keep-Alive subtrees */ |
225 | 15 | int *ett[] = { |
226 | 15 | &ett_zbee_zcl_keep_alive |
227 | 15 | }; |
228 | | |
229 | | /* Register the ZigBee ZCL Keep-Alive cluster protocol name and description */ |
230 | 15 | proto_zbee_zcl_keep_alive = proto_register_protocol("ZigBee ZCL Keep-Alive", "ZCL Keep-Alive", ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE); |
231 | 15 | proto_register_field_array(proto_zbee_zcl_keep_alive, hf, array_length(hf)); |
232 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
233 | | |
234 | | /* Register the ZigBee ZCL Keep-Alive dissector. */ |
235 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE, dissect_zbee_zcl_keep_alive, proto_zbee_zcl_keep_alive); |
236 | 15 | } /*proto_register_zbee_zcl_keep_alive*/ |
237 | | |
238 | | /** |
239 | | *Hands off the ZCL Keep-Alive dissector. |
240 | | * |
241 | | */ |
242 | | void |
243 | | proto_reg_handoff_zbee_zcl_keep_alive(void) |
244 | 15 | { |
245 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_KEEP_ALIVE, |
246 | 15 | proto_zbee_zcl_keep_alive, |
247 | 15 | ett_zbee_zcl_keep_alive, |
248 | 15 | ZBEE_ZCL_CID_KEEP_ALIVE, |
249 | 15 | ZBEE_MFG_CODE_NONE, |
250 | 15 | hf_zbee_zcl_keep_alive_attr_id, |
251 | 15 | -1, |
252 | 15 | -1, -1, |
253 | 15 | dissect_zcl_keep_alive_attr_data |
254 | 15 | ); |
255 | 15 | } /*proto_reg_handoff_zbee_zcl_keep_alive*/ |
256 | | |
257 | | /* ########################################################################## */ |
258 | | /* #### (0x0700) PRICE CLUSTER ############################################## */ |
259 | | /* ########################################################################## */ |
260 | | |
261 | | /* Attributes */ |
262 | | #define zbee_zcl_price_attr_server_names_VALUE_STRING_LIST(XXX) \ |
263 | | /* Tier Label (Delivered) Set */ \ |
264 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_PRICE_LABEL, 0x0000, "Tier 1 Price Label" ) \ |
265 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_PRICE_LABEL, 0x0001, "Tier 2 Price Label" ) \ |
266 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_PRICE_LABEL, 0x0002, "Tier 3 Price Label" ) \ |
267 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_PRICE_LABEL, 0x0003, "Tier 4 Price Label" ) \ |
268 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_PRICE_LABEL, 0x0004, "Tier 5 Price Label" ) \ |
269 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_PRICE_LABEL, 0x0005, "Tier 6 Price Label" ) \ |
270 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_PRICE_LABEL, 0x0006, "Tier 7 Price Label" ) \ |
271 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_PRICE_LABEL, 0x0007, "Tier 8 Price Label" ) \ |
272 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_PRICE_LABEL, 0x0008, "Tier 9 Price Label" ) \ |
273 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_PRICE_LABEL, 0x0009, "Tier 10 Price Label" ) \ |
274 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_PRICE_LABEL, 0x000A, "Tier 11 Price Label" ) \ |
275 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_PRICE_LABEL, 0x000B, "Tier 12 Price Label" ) \ |
276 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_PRICE_LABEL, 0x000C, "Tier 13 Price Label" ) \ |
277 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_PRICE_LABEL, 0x000D, "Tier 14 Price Label" ) \ |
278 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_PRICE_LABEL, 0x000E, "Tier 15 Price Label" ) \ |
279 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_16_PRICE_LABEL, 0x000F, "Tier 16 Price Label" ) \ |
280 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_17_PRICE_LABEL, 0x0010, "Tier 17 Price Label" ) \ |
281 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_18_PRICE_LABEL, 0x0011, "Tier 18 Price Label" ) \ |
282 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_19_PRICE_LABEL, 0x0012, "Tier 19 Price Label" ) \ |
283 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_20_PRICE_LABEL, 0x0013, "Tier 20 Price Label" ) \ |
284 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_21_PRICE_LABEL, 0x0014, "Tier 21 Price Label" ) \ |
285 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_22_PRICE_LABEL, 0x0015, "Tier 22 Price Label" ) \ |
286 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_23_PRICE_LABEL, 0x0016, "Tier 23 Price Label" ) \ |
287 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_24_PRICE_LABEL, 0x0017, "Tier 24 Price Label" ) \ |
288 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_25_PRICE_LABEL, 0x0018, "Tier 25 Price Label" ) \ |
289 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_26_PRICE_LABEL, 0x0019, "Tier 26 Price Label" ) \ |
290 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_27_PRICE_LABEL, 0x001A, "Tier 27 Price Label" ) \ |
291 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_28_PRICE_LABEL, 0x001B, "Tier 28 Price Label" ) \ |
292 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_29_PRICE_LABEL, 0x001C, "Tier 29 Price Label" ) \ |
293 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_30_PRICE_LABEL, 0x001D, "Tier 30 Price Label" ) \ |
294 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_31_PRICE_LABEL, 0x001E, "Tier 31 Price Label" ) \ |
295 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_32_PRICE_LABEL, 0x001F, "Tier 32 Price Label" ) \ |
296 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_33_PRICE_LABEL, 0x0020, "Tier 33 Price Label" ) \ |
297 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_34_PRICE_LABEL, 0x0021, "Tier 34 Price Label" ) \ |
298 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_35_PRICE_LABEL, 0x0022, "Tier 35 Price Label" ) \ |
299 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_36_PRICE_LABEL, 0x0023, "Tier 36 Price Label" ) \ |
300 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_37_PRICE_LABEL, 0x0024, "Tier 37 Price Label" ) \ |
301 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_38_PRICE_LABEL, 0x0025, "Tier 38 Price Label" ) \ |
302 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_39_PRICE_LABEL, 0x0026, "Tier 39 Price Label" ) \ |
303 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_40_PRICE_LABEL, 0x0027, "Tier 40 Price Label" ) \ |
304 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_41_PRICE_LABEL, 0x0028, "Tier 41 Price Label" ) \ |
305 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_42_PRICE_LABEL, 0x0029, "Tier 42 Price Label" ) \ |
306 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_43_PRICE_LABEL, 0x002A, "Tier 43 Price Label" ) \ |
307 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_44_PRICE_LABEL, 0x002B, "Tier 44 Price Label" ) \ |
308 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_45_PRICE_LABEL, 0x002C, "Tier 45 Price Label" ) \ |
309 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_46_PRICE_LABEL, 0x002D, "Tier 46 Price Label" ) \ |
310 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_47_PRICE_LABEL, 0x002E, "Tier 47 Price Label" ) \ |
311 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_48_PRICE_LABEL, 0x002F, "Tier 48 Price Label" ) \ |
312 | | /* Block Threshold (Delivered) Set */ \ |
313 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_1_THRESHOLD, 0x0100, "Block 1 Threshold" ) \ |
314 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_2_THRESHOLD, 0x0101, "Block 2 Threshold" ) \ |
315 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_3_THRESHOLD, 0x0102, "Block 3 Threshold" ) \ |
316 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_4_THRESHOLD, 0x0103, "Block 4 Threshold" ) \ |
317 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_5_THRESHOLD, 0x0104, "Block 5 Threshold" ) \ |
318 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_6_THRESHOLD, 0x0105, "Block 6 Threshold" ) \ |
319 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_7_THRESHOLD, 0x0106, "Block 7 Threshold" ) \ |
320 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_8_THRESHOLD, 0x0107, "Block 8 Threshold" ) \ |
321 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_9_THRESHOLD, 0x0108, "Block 9 Threshold" ) \ |
322 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_10_THRESHOLD, 0x0109, "Block 10 Threshold" ) \ |
323 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_11_THRESHOLD, 0x010A, "Block 11 Threshold" ) \ |
324 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_12_THRESHOLD, 0x010B, "Block 12 Threshold" ) \ |
325 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_13_THRESHOLD, 0x010C, "Block 13 Threshold" ) \ |
326 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_14_THRESHOLD, 0x010D, "Block 14 Threshold" ) \ |
327 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_15_THRESHOLD, 0x010E, "Block 15 Threshold" ) \ |
328 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_THRESHOLD_COUNT, 0x010F, "Block Threshold Count" ) \ |
329 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_1_THRESHOLD, 0x0110, "Tier 1 Block 1 Threshold" ) \ |
330 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_2_THRESHOLD, 0x0111, "Tier 1 Block 2 Threshold" ) \ |
331 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_3_THRESHOLD, 0x0112, "Tier 1 Block 3 Threshold" ) \ |
332 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_4_THRESHOLD, 0x0113, "Tier 1 Block 4 Threshold" ) \ |
333 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_5_THRESHOLD, 0x0114, "Tier 1 Block 5 Threshold" ) \ |
334 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_6_THRESHOLD, 0x0115, "Tier 1 Block 6 Threshold" ) \ |
335 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_7_THRESHOLD, 0x0116, "Tier 1 Block 7 Threshold" ) \ |
336 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_8_THRESHOLD, 0x0117, "Tier 1 Block 8 Threshold" ) \ |
337 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_9_THRESHOLD, 0x0118, "Tier 1 Block 9 Threshold" ) \ |
338 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_10_THRESHOLD, 0x0119, "Tier 1 Block 10 Threshold" ) \ |
339 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_11_THRESHOLD, 0x011A, "Tier 1 Block 11 Threshold" ) \ |
340 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_12_THRESHOLD, 0x011B, "Tier 1 Block 12 Threshold" ) \ |
341 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_13_THRESHOLD, 0x011C, "Tier 1 Block 13 Threshold" ) \ |
342 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_14_THRESHOLD, 0x011D, "Tier 1 Block 14 Threshold" ) \ |
343 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_15_THRESHOLD, 0x011E, "Tier 1 Block 15 Threshold" ) \ |
344 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_THRESHOLD_COUNT, 0x011F, "Tier 1 Block Threshold Count" ) \ |
345 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_1_THRESHOLD, 0x0120, "Tier 2 Block 1 Threshold" ) \ |
346 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_2_THRESHOLD, 0x0121, "Tier 2 Block 2 Threshold" ) \ |
347 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_3_THRESHOLD, 0x0122, "Tier 2 Block 3 Threshold" ) \ |
348 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_4_THRESHOLD, 0x0123, "Tier 2 Block 4 Threshold" ) \ |
349 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_5_THRESHOLD, 0x0124, "Tier 2 Block 5 Threshold" ) \ |
350 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_6_THRESHOLD, 0x0125, "Tier 2 Block 6 Threshold" ) \ |
351 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_7_THRESHOLD, 0x0126, "Tier 2 Block 7 Threshold" ) \ |
352 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_8_THRESHOLD, 0x0127, "Tier 2 Block 8 Threshold" ) \ |
353 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_9_THRESHOLD, 0x0128, "Tier 2 Block 9 Threshold" ) \ |
354 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_10_THRESHOLD, 0x0129, "Tier 2 Block 10 Threshold" ) \ |
355 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_11_THRESHOLD, 0x012A, "Tier 2 Block 11 Threshold" ) \ |
356 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_12_THRESHOLD, 0x012B, "Tier 2 Block 12 Threshold" ) \ |
357 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_13_THRESHOLD, 0x012C, "Tier 2 Block 13 Threshold" ) \ |
358 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_14_THRESHOLD, 0x012D, "Tier 2 Block 14 Threshold" ) \ |
359 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_15_THRESHOLD, 0x012E, "Tier 2 Block 15 Threshold" ) \ |
360 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_THRESHOLD_COUNT, 0x012F, "Tier 2 Block Threshold Count" ) \ |
361 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_1_THRESHOLD, 0x0130, "Tier 3 Block 1 Threshold" ) \ |
362 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_2_THRESHOLD, 0x0131, "Tier 3 Block 2 Threshold" ) \ |
363 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_3_THRESHOLD, 0x0132, "Tier 3 Block 3 Threshold" ) \ |
364 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_4_THRESHOLD, 0x0133, "Tier 3 Block 4 Threshold" ) \ |
365 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_5_THRESHOLD, 0x0134, "Tier 3 Block 5 Threshold" ) \ |
366 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_6_THRESHOLD, 0x0135, "Tier 3 Block 6 Threshold" ) \ |
367 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_7_THRESHOLD, 0x0136, "Tier 3 Block 7 Threshold" ) \ |
368 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_8_THRESHOLD, 0x0137, "Tier 3 Block 8 Threshold" ) \ |
369 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_9_THRESHOLD, 0x0138, "Tier 3 Block 9 Threshold" ) \ |
370 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_10_THRESHOLD, 0x0139, "Tier 3 Block 10 Threshold" ) \ |
371 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_11_THRESHOLD, 0x013A, "Tier 3 Block 11 Threshold" ) \ |
372 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_12_THRESHOLD, 0x013B, "Tier 3 Block 12 Threshold" ) \ |
373 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_13_THRESHOLD, 0x013C, "Tier 3 Block 13 Threshold" ) \ |
374 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_14_THRESHOLD, 0x013D, "Tier 3 Block 14 Threshold" ) \ |
375 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_15_THRESHOLD, 0x013E, "Tier 3 Block 15 Threshold" ) \ |
376 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_THRESHOLD_COUNT, 0x013F, "Tier 3 Block Threshold Count" ) \ |
377 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_1_THRESHOLD, 0x0140, "Tier 4 Block 1 Threshold" ) \ |
378 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_2_THRESHOLD, 0x0141, "Tier 4 Block 2 Threshold" ) \ |
379 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_3_THRESHOLD, 0x0142, "Tier 4 Block 3 Threshold" ) \ |
380 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_4_THRESHOLD, 0x0143, "Tier 4 Block 4 Threshold" ) \ |
381 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_5_THRESHOLD, 0x0144, "Tier 4 Block 5 Threshold" ) \ |
382 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_6_THRESHOLD, 0x0145, "Tier 4 Block 6 Threshold" ) \ |
383 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_7_THRESHOLD, 0x0146, "Tier 4 Block 7 Threshold" ) \ |
384 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_8_THRESHOLD, 0x0147, "Tier 4 Block 8 Threshold" ) \ |
385 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_9_THRESHOLD, 0x0148, "Tier 4 Block 9 Threshold" ) \ |
386 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_10_THRESHOLD, 0x0149, "Tier 4 Block 10 Threshold" ) \ |
387 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_11_THRESHOLD, 0x014A, "Tier 4 Block 11 Threshold" ) \ |
388 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_12_THRESHOLD, 0x014B, "Tier 4 Block 12 Threshold" ) \ |
389 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_13_THRESHOLD, 0x014C, "Tier 4 Block 13 Threshold" ) \ |
390 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_14_THRESHOLD, 0x014D, "Tier 4 Block 14 Threshold" ) \ |
391 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_15_THRESHOLD, 0x014E, "Tier 4 Block 15 Threshold" ) \ |
392 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_THRESHOLD_COUNT, 0x014F, "Tier 4 Block Threshold Count" ) \ |
393 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_1_THRESHOLD, 0x0150, "Tier 5 Block 1 Threshold" ) \ |
394 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_2_THRESHOLD, 0x0151, "Tier 5 Block 2 Threshold" ) \ |
395 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_3_THRESHOLD, 0x0152, "Tier 5 Block 3 Threshold" ) \ |
396 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_4_THRESHOLD, 0x0153, "Tier 5 Block 4 Threshold" ) \ |
397 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_5_THRESHOLD, 0x0154, "Tier 5 Block 5 Threshold" ) \ |
398 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_6_THRESHOLD, 0x0155, "Tier 5 Block 6 Threshold" ) \ |
399 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_7_THRESHOLD, 0x0156, "Tier 5 Block 7 Threshold" ) \ |
400 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_8_THRESHOLD, 0x0157, "Tier 5 Block 8 Threshold" ) \ |
401 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_9_THRESHOLD, 0x0158, "Tier 5 Block 9 Threshold" ) \ |
402 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_10_THRESHOLD, 0x0159, "Tier 5 Block 10 Threshold" ) \ |
403 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_11_THRESHOLD, 0x015A, "Tier 5 Block 11 Threshold" ) \ |
404 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_12_THRESHOLD, 0x015B, "Tier 5 Block 12 Threshold" ) \ |
405 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_13_THRESHOLD, 0x015C, "Tier 5 Block 13 Threshold" ) \ |
406 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_14_THRESHOLD, 0x015D, "Tier 5 Block 14 Threshold" ) \ |
407 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_15_THRESHOLD, 0x015E, "Tier 5 Block 15 Threshold" ) \ |
408 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_THRESHOLD_COUNT, 0x015F, "Tier 5 Block Threshold Count" ) \ |
409 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_1_THRESHOLD, 0x0160, "Tier 6 Block 1 Threshold" ) \ |
410 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_2_THRESHOLD, 0x0161, "Tier 6 Block 2 Threshold" ) \ |
411 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_3_THRESHOLD, 0x0162, "Tier 6 Block 3 Threshold" ) \ |
412 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_4_THRESHOLD, 0x0163, "Tier 6 Block 4 Threshold" ) \ |
413 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_5_THRESHOLD, 0x0164, "Tier 6 Block 5 Threshold" ) \ |
414 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_6_THRESHOLD, 0x0165, "Tier 6 Block 6 Threshold" ) \ |
415 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_7_THRESHOLD, 0x0166, "Tier 6 Block 7 Threshold" ) \ |
416 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_8_THRESHOLD, 0x0167, "Tier 6 Block 8 Threshold" ) \ |
417 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_9_THRESHOLD, 0x0168, "Tier 6 Block 9 Threshold" ) \ |
418 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_10_THRESHOLD, 0x0169, "Tier 6 Block 10 Threshold" ) \ |
419 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_11_THRESHOLD, 0x016A, "Tier 6 Block 11 Threshold" ) \ |
420 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_12_THRESHOLD, 0x016B, "Tier 6 Block 12 Threshold" ) \ |
421 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_13_THRESHOLD, 0x016C, "Tier 6 Block 13 Threshold" ) \ |
422 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_14_THRESHOLD, 0x016D, "Tier 6 Block 14 Threshold" ) \ |
423 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_15_THRESHOLD, 0x016E, "Tier 6 Block 15 Threshold" ) \ |
424 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_THRESHOLD_COUNT, 0x016F, "Tier 6 Block Threshold Count" ) \ |
425 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_1_THRESHOLD, 0x0170, "Tier 7 Block 1 Threshold" ) \ |
426 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_2_THRESHOLD, 0x0171, "Tier 7 Block 2 Threshold" ) \ |
427 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_3_THRESHOLD, 0x0172, "Tier 7 Block 3 Threshold" ) \ |
428 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_4_THRESHOLD, 0x0173, "Tier 7 Block 4 Threshold" ) \ |
429 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_5_THRESHOLD, 0x0174, "Tier 7 Block 5 Threshold" ) \ |
430 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_6_THRESHOLD, 0x0175, "Tier 7 Block 6 Threshold" ) \ |
431 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_7_THRESHOLD, 0x0176, "Tier 7 Block 7 Threshold" ) \ |
432 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_8_THRESHOLD, 0x0177, "Tier 7 Block 8 Threshold" ) \ |
433 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_9_THRESHOLD, 0x0178, "Tier 7 Block 9 Threshold" ) \ |
434 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_10_THRESHOLD, 0x0179, "Tier 7 Block 10 Threshold" ) \ |
435 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_11_THRESHOLD, 0x017A, "Tier 7 Block 11 Threshold" ) \ |
436 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_12_THRESHOLD, 0x017B, "Tier 7 Block 12 Threshold" ) \ |
437 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_13_THRESHOLD, 0x017C, "Tier 7 Block 13 Threshold" ) \ |
438 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_14_THRESHOLD, 0x017D, "Tier 7 Block 14 Threshold" ) \ |
439 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_15_THRESHOLD, 0x017E, "Tier 7 Block 15 Threshold" ) \ |
440 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_THRESHOLD_COUNT, 0x017F, "Tier 7 Block Threshold Count" ) \ |
441 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_1_THRESHOLD, 0x0180, "Tier 8 Block 1 Threshold" ) \ |
442 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_2_THRESHOLD, 0x0181, "Tier 8 Block 2 Threshold" ) \ |
443 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_3_THRESHOLD, 0x0182, "Tier 8 Block 3 Threshold" ) \ |
444 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_4_THRESHOLD, 0x0183, "Tier 8 Block 4 Threshold" ) \ |
445 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_5_THRESHOLD, 0x0184, "Tier 8 Block 5 Threshold" ) \ |
446 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_6_THRESHOLD, 0x0185, "Tier 8 Block 6 Threshold" ) \ |
447 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_7_THRESHOLD, 0x0186, "Tier 8 Block 7 Threshold" ) \ |
448 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_8_THRESHOLD, 0x0187, "Tier 8 Block 8 Threshold" ) \ |
449 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_9_THRESHOLD, 0x0188, "Tier 8 Block 9 Threshold" ) \ |
450 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_10_THRESHOLD, 0x0189, "Tier 8 Block 10 Threshold" ) \ |
451 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_11_THRESHOLD, 0x018A, "Tier 8 Block 11 Threshold" ) \ |
452 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_12_THRESHOLD, 0x018B, "Tier 8 Block 12 Threshold" ) \ |
453 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_13_THRESHOLD, 0x018C, "Tier 8 Block 13 Threshold" ) \ |
454 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_14_THRESHOLD, 0x018D, "Tier 8 Block 14 Threshold" ) \ |
455 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_15_THRESHOLD, 0x018E, "Tier 8 Block 15 Threshold" ) \ |
456 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_THRESHOLD_COUNT, 0x018F, "Tier 8 Block Threshold Count" ) \ |
457 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_1_THRESHOLD, 0x0190, "Tier 9 Block 1 Threshold" ) \ |
458 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_2_THRESHOLD, 0x0191, "Tier 9 Block 2 Threshold" ) \ |
459 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_3_THRESHOLD, 0x0192, "Tier 9 Block 3 Threshold" ) \ |
460 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_4_THRESHOLD, 0x0193, "Tier 9 Block 4 Threshold" ) \ |
461 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_5_THRESHOLD, 0x0194, "Tier 9 Block 5 Threshold" ) \ |
462 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_6_THRESHOLD, 0x0195, "Tier 9 Block 6 Threshold" ) \ |
463 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_7_THRESHOLD, 0x0196, "Tier 9 Block 7 Threshold" ) \ |
464 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_8_THRESHOLD, 0x0197, "Tier 9 Block 8 Threshold" ) \ |
465 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_9_THRESHOLD, 0x0198, "Tier 9 Block 9 Threshold" ) \ |
466 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_10_THRESHOLD, 0x0199, "Tier 9 Block 10 Threshold" ) \ |
467 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_11_THRESHOLD, 0x019A, "Tier 9 Block 11 Threshold" ) \ |
468 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_12_THRESHOLD, 0x019B, "Tier 9 Block 12 Threshold" ) \ |
469 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_13_THRESHOLD, 0x019C, "Tier 9 Block 13 Threshold" ) \ |
470 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_14_THRESHOLD, 0x019D, "Tier 9 Block 14 Threshold" ) \ |
471 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_15_THRESHOLD, 0x019E, "Tier 9 Block 15 Threshold" ) \ |
472 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_THRESHOLD_COUNT, 0x019F, "Tier 9 Block Threshold Count" ) \ |
473 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_1_THRESHOLD, 0x01A0, "Tier 10 Block 1 Threshold" ) \ |
474 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_2_THRESHOLD, 0x01A1, "Tier 10 Block 2 Threshold" ) \ |
475 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_3_THRESHOLD, 0x01A2, "Tier 10 Block 3 Threshold" ) \ |
476 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_4_THRESHOLD, 0x01A3, "Tier 10 Block 4 Threshold" ) \ |
477 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_5_THRESHOLD, 0x01A4, "Tier 10 Block 5 Threshold" ) \ |
478 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_6_THRESHOLD, 0x01A5, "Tier 10 Block 6 Threshold" ) \ |
479 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_7_THRESHOLD, 0x01A6, "Tier 10 Block 7 Threshold" ) \ |
480 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_8_THRESHOLD, 0x01A7, "Tier 10 Block 8 Threshold" ) \ |
481 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_9_THRESHOLD, 0x01A8, "Tier 10 Block 9 Threshold" ) \ |
482 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_10_THRESHOLD, 0x01A9, "Tier 10 Block 10 Threshold" ) \ |
483 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_11_THRESHOLD, 0x01AA, "Tier 10 Block 11 Threshold" ) \ |
484 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_12_THRESHOLD, 0x01AB, "Tier 10 Block 12 Threshold" ) \ |
485 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_13_THRESHOLD, 0x01AC, "Tier 10 Block 13 Threshold" ) \ |
486 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_14_THRESHOLD, 0x01AD, "Tier 10 Block 14 Threshold" ) \ |
487 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_15_THRESHOLD, 0x01AE, "Tier 10 Block 15 Threshold" ) \ |
488 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_THRESHOLD_COUNT, 0x01AF, "Tier 10 Block Threshold Count" ) \ |
489 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_1_THRESHOLD, 0x01B0, "Tier 11 Block 1 Threshold" ) \ |
490 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_2_THRESHOLD, 0x01B1, "Tier 11 Block 2 Threshold" ) \ |
491 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_3_THRESHOLD, 0x01B2, "Tier 11 Block 3 Threshold" ) \ |
492 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_4_THRESHOLD, 0x01B3, "Tier 11 Block 4 Threshold" ) \ |
493 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_5_THRESHOLD, 0x01B4, "Tier 11 Block 5 Threshold" ) \ |
494 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_6_THRESHOLD, 0x01B5, "Tier 11 Block 6 Threshold" ) \ |
495 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_7_THRESHOLD, 0x01B6, "Tier 11 Block 7 Threshold" ) \ |
496 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_8_THRESHOLD, 0x01B7, "Tier 11 Block 8 Threshold" ) \ |
497 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_9_THRESHOLD, 0x01B8, "Tier 11 Block 9 Threshold" ) \ |
498 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_10_THRESHOLD, 0x01B9, "Tier 11 Block 10 Threshold" ) \ |
499 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_11_THRESHOLD, 0x01BA, "Tier 11 Block 11 Threshold" ) \ |
500 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_12_THRESHOLD, 0x01BB, "Tier 11 Block 12 Threshold" ) \ |
501 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_13_THRESHOLD, 0x01BC, "Tier 11 Block 13 Threshold" ) \ |
502 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_14_THRESHOLD, 0x01BD, "Tier 11 Block 14 Threshold" ) \ |
503 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_15_THRESHOLD, 0x01BE, "Tier 11 Block 15 Threshold" ) \ |
504 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_THRESHOLD_COUNT, 0x01BF, "Tier 11 Block Threshold Count" ) \ |
505 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_1_THRESHOLD, 0x01C0, "Tier 12 Block 1 Threshold" ) \ |
506 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_2_THRESHOLD, 0x01C1, "Tier 12 Block 2 Threshold" ) \ |
507 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_3_THRESHOLD, 0x01C2, "Tier 12 Block 3 Threshold" ) \ |
508 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_4_THRESHOLD, 0x01C3, "Tier 12 Block 4 Threshold" ) \ |
509 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_5_THRESHOLD, 0x01C4, "Tier 12 Block 5 Threshold" ) \ |
510 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_6_THRESHOLD, 0x01C5, "Tier 12 Block 6 Threshold" ) \ |
511 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_7_THRESHOLD, 0x01C6, "Tier 12 Block 7 Threshold" ) \ |
512 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_8_THRESHOLD, 0x01C7, "Tier 12 Block 8 Threshold" ) \ |
513 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_9_THRESHOLD, 0x01C8, "Tier 12 Block 9 Threshold" ) \ |
514 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_10_THRESHOLD, 0x01C9, "Tier 12 Block 10 Threshold" ) \ |
515 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_11_THRESHOLD, 0x01CA, "Tier 12 Block 11 Threshold" ) \ |
516 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_12_THRESHOLD, 0x01CB, "Tier 12 Block 12 Threshold" ) \ |
517 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_13_THRESHOLD, 0x01CC, "Tier 12 Block 13 Threshold" ) \ |
518 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_14_THRESHOLD, 0x01CD, "Tier 12 Block 14 Threshold" ) \ |
519 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_15_THRESHOLD, 0x01CE, "Tier 12 Block 15 Threshold" ) \ |
520 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_THRESHOLD_COUNT, 0x01CF, "Tier 12 Block Threshold Count" ) \ |
521 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_1_THRESHOLD, 0x01D0, "Tier 13 Block 1 Threshold" ) \ |
522 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_2_THRESHOLD, 0x01D1, "Tier 13 Block 2 Threshold" ) \ |
523 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_3_THRESHOLD, 0x01D2, "Tier 13 Block 3 Threshold" ) \ |
524 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_4_THRESHOLD, 0x01D3, "Tier 13 Block 4 Threshold" ) \ |
525 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_5_THRESHOLD, 0x01D4, "Tier 13 Block 5 Threshold" ) \ |
526 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_6_THRESHOLD, 0x01D5, "Tier 13 Block 6 Threshold" ) \ |
527 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_7_THRESHOLD, 0x01D6, "Tier 13 Block 7 Threshold" ) \ |
528 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_8_THRESHOLD, 0x01D7, "Tier 13 Block 8 Threshold" ) \ |
529 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_9_THRESHOLD, 0x01D8, "Tier 13 Block 9 Threshold" ) \ |
530 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_10_THRESHOLD, 0x01D9, "Tier 13 Block 10 Threshold" ) \ |
531 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_11_THRESHOLD, 0x01DA, "Tier 13 Block 11 Threshold" ) \ |
532 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_12_THRESHOLD, 0x01DB, "Tier 13 Block 12 Threshold" ) \ |
533 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_13_THRESHOLD, 0x01DC, "Tier 13 Block 13 Threshold" ) \ |
534 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_14_THRESHOLD, 0x01DD, "Tier 13 Block 14 Threshold" ) \ |
535 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_15_THRESHOLD, 0x01DE, "Tier 13 Block 15 Threshold" ) \ |
536 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_THRESHOLD_COUNT, 0x01DF, "Tier 13 Block Threshold Count" ) \ |
537 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_1_THRESHOLD, 0x01E0, "Tier 14 Block 1 Threshold" ) \ |
538 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_2_THRESHOLD, 0x01E1, "Tier 14 Block 2 Threshold" ) \ |
539 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_3_THRESHOLD, 0x01E2, "Tier 14 Block 3 Threshold" ) \ |
540 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_4_THRESHOLD, 0x01E3, "Tier 14 Block 4 Threshold" ) \ |
541 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_5_THRESHOLD, 0x01E4, "Tier 14 Block 5 Threshold" ) \ |
542 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_6_THRESHOLD, 0x01E5, "Tier 14 Block 6 Threshold" ) \ |
543 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_7_THRESHOLD, 0x01E6, "Tier 14 Block 7 Threshold" ) \ |
544 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_8_THRESHOLD, 0x01E7, "Tier 14 Block 8 Threshold" ) \ |
545 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_9_THRESHOLD, 0x01E8, "Tier 14 Block 9 Threshold" ) \ |
546 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_10_THRESHOLD, 0x01E9, "Tier 14 Block 10 Threshold" ) \ |
547 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_11_THRESHOLD, 0x01EA, "Tier 14 Block 11 Threshold" ) \ |
548 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_12_THRESHOLD, 0x01EB, "Tier 14 Block 12 Threshold" ) \ |
549 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_13_THRESHOLD, 0x01EC, "Tier 14 Block 13 Threshold" ) \ |
550 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_14_THRESHOLD, 0x01ED, "Tier 14 Block 14 Threshold" ) \ |
551 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_15_THRESHOLD, 0x01EE, "Tier 14 Block 15 Threshold" ) \ |
552 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_THRESHOLD_COUNT, 0x01EF, "Tier 14 Block Threshold Count" ) \ |
553 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_1_THRESHOLD, 0x01F0, "Tier 15 Block 1 Threshold" ) \ |
554 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_2_THRESHOLD, 0x01F1, "Tier 15 Block 2 Threshold" ) \ |
555 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_3_THRESHOLD, 0x01F2, "Tier 15 Block 3 Threshold" ) \ |
556 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_4_THRESHOLD, 0x01F3, "Tier 15 Block 4 Threshold" ) \ |
557 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_5_THRESHOLD, 0x01F4, "Tier 15 Block 5 Threshold" ) \ |
558 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_6_THRESHOLD, 0x01F5, "Tier 15 Block 6 Threshold" ) \ |
559 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_7_THRESHOLD, 0x01F6, "Tier 15 Block 7 Threshold" ) \ |
560 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_8_THRESHOLD, 0x01F7, "Tier 15 Block 8 Threshold" ) \ |
561 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_9_THRESHOLD, 0x01F8, "Tier 15 Block 9 Threshold" ) \ |
562 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_10_THRESHOLD, 0x01F9, "Tier 15 Block 10 Threshold" ) \ |
563 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_11_THRESHOLD, 0x01FA, "Tier 15 Block 11 Threshold" ) \ |
564 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_12_THRESHOLD, 0x01FB, "Tier 15 Block 12 Threshold" ) \ |
565 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_13_THRESHOLD, 0x01FC, "Tier 15 Block 13 Threshold" ) \ |
566 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_14_THRESHOLD, 0x01FD, "Tier 15 Block 14 Threshold" ) \ |
567 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_15_THRESHOLD, 0x01FE, "Tier 15 Block 15 Threshold" ) \ |
568 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_THRESHOLD_COUNT, 0x01FF, "Tier 15 Block Threshold Count" ) \ |
569 | | /* Block Period (Delivered) Set */ \ |
570 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_START_OF_BLOCK_PERIOD, 0x0200, "Start of Block Period" ) \ |
571 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_PERIOD_DURATION, 0x0201, "Block Period Duration" ) \ |
572 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_THRESHOLD_MULTIPLIER, 0x0202, "Threshold Multiplier" ) \ |
573 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_THRESHOLD_DIVISOR, 0x0203, "Threshold Divisor" ) \ |
574 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_BLOCK_PERIOD_DURATION_TYPE, 0x0204, "Block Period Duration Type" ) \ |
575 | | /* Commodity */ \ |
576 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_COMMODITY_TYPE, 0x0300, "Commodity Type" ) \ |
577 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_STANDING_CHARGE, 0x0301, "Standing Charge" ) \ |
578 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CONVERSION_FACTOR, 0x0302, "Conversion Factor" ) \ |
579 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT,0x0303, "Conversion Factor TrailingDigit" ) \ |
580 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE, 0x0304, "Calorific Value" ) \ |
581 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE_UNIT, 0x0305, "Calorific Value Unit" ) \ |
582 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT, 0x0306, "Calorific Value Trailing Digit" ) \ |
583 | | /* Block Price Information (Delivered) */ \ |
584 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_1_PRICE, 0x0400, "No Tier Block 1 Price" ) \ |
585 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_2_PRICE, 0x0401, "No Tier Block 2 Price" ) \ |
586 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_3_PRICE, 0x0402, "No Tier Block 3 Price" ) \ |
587 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_4_PRICE, 0x0403, "No Tier Block 4 Price" ) \ |
588 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_5_PRICE, 0x0404, "No Tier Block 5 Price" ) \ |
589 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_6_PRICE, 0x0405, "No Tier Block 6 Price" ) \ |
590 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_7_PRICE, 0x0406, "No Tier Block 7 Price" ) \ |
591 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_8_PRICE, 0x0407, "No Tier Block 8 Price" ) \ |
592 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_9_PRICE, 0x0408, "No Tier Block 9 Price" ) \ |
593 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_10_PRICE, 0x0409, "No Tier Block 10 Price" ) \ |
594 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_11_PRICE, 0x040A, "No Tier Block 11 Price" ) \ |
595 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_12_PRICE, 0x040B, "No Tier Block 12 Price" ) \ |
596 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_13_PRICE, 0x040C, "No Tier Block 13 Price" ) \ |
597 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_14_PRICE, 0x040D, "No Tier Block 14 Price" ) \ |
598 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_15_PRICE, 0x040E, "No Tier Block 15 Price" ) \ |
599 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NO_TIER_BLOCK_16_PRICE, 0x040F, "No Tier Block 16 Price" ) \ |
600 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_1_PRICE, 0x0410, "Tier 1 Block 1 Price" ) \ |
601 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_2_PRICE, 0x0411, "Tier 1 Block 2 Price" ) \ |
602 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_3_PRICE, 0x0412, "Tier 1 Block 3 Price" ) \ |
603 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_4_PRICE, 0x0413, "Tier 1 Block 4 Price" ) \ |
604 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_5_PRICE, 0x0414, "Tier 1 Block 5 Price" ) \ |
605 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_6_PRICE, 0x0415, "Tier 1 Block 6 Price" ) \ |
606 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_7_PRICE, 0x0416, "Tier 1 Block 7 Price" ) \ |
607 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_8_PRICE, 0x0417, "Tier 1 Block 8 Price" ) \ |
608 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_9_PRICE, 0x0418, "Tier 1 Block 9 Price" ) \ |
609 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_10_PRICE, 0x0419, "Tier 1 Block 10 Price" ) \ |
610 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_11_PRICE, 0x041A, "Tier 1 Block 11 Price" ) \ |
611 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_12_PRICE, 0x041B, "Tier 1 Block 12 Price" ) \ |
612 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_13_PRICE, 0x041C, "Tier 1 Block 13 Price" ) \ |
613 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_14_PRICE, 0x041D, "Tier 1 Block 14 Price" ) \ |
614 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_15_PRICE, 0x041E, "Tier 1 Block 15 Price" ) \ |
615 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_1_BLOCK_16_PRICE, 0x041F, "Tier 1 Block 16 Price" ) \ |
616 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_1_PRICE, 0x0420, "Tier 2 Block 1 Price" ) \ |
617 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_2_PRICE, 0x0421, "Tier 2 Block 2 Price" ) \ |
618 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_3_PRICE, 0x0422, "Tier 2 Block 3 Price" ) \ |
619 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_4_PRICE, 0x0423, "Tier 2 Block 4 Price" ) \ |
620 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_5_PRICE, 0x0424, "Tier 2 Block 5 Price" ) \ |
621 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_6_PRICE, 0x0425, "Tier 2 Block 6 Price" ) \ |
622 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_7_PRICE, 0x0426, "Tier 2 Block 7 Price" ) \ |
623 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_8_PRICE, 0x0427, "Tier 2 Block 8 Price" ) \ |
624 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_9_PRICE, 0x0428, "Tier 2 Block 9 Price" ) \ |
625 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_10_PRICE, 0x0429, "Tier 2 Block 10 Price" ) \ |
626 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_11_PRICE, 0x042A, "Tier 2 Block 11 Price" ) \ |
627 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_12_PRICE, 0x042B, "Tier 2 Block 12 Price" ) \ |
628 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_13_PRICE, 0x042C, "Tier 2 Block 13 Price" ) \ |
629 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_14_PRICE, 0x042D, "Tier 2 Block 14 Price" ) \ |
630 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_15_PRICE, 0x042E, "Tier 2 Block 15 Price" ) \ |
631 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_2_BLOCK_16_PRICE, 0x042F, "Tier 2 Block 16 Price" ) \ |
632 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_1_PRICE, 0x0430, "Tier 3 Block 1 Price" ) \ |
633 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_2_PRICE, 0x0431, "Tier 3 Block 2 Price" ) \ |
634 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_3_PRICE, 0x0432, "Tier 3 Block 3 Price" ) \ |
635 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_4_PRICE, 0x0433, "Tier 3 Block 4 Price" ) \ |
636 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_5_PRICE, 0x0434, "Tier 3 Block 5 Price" ) \ |
637 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_6_PRICE, 0x0435, "Tier 3 Block 6 Price" ) \ |
638 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_7_PRICE, 0x0436, "Tier 3 Block 7 Price" ) \ |
639 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_8_PRICE, 0x0437, "Tier 3 Block 8 Price" ) \ |
640 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_9_PRICE, 0x0438, "Tier 3 Block 9 Price" ) \ |
641 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_10_PRICE, 0x0439, "Tier 3 Block 10 Price" ) \ |
642 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_11_PRICE, 0x043A, "Tier 3 Block 11 Price" ) \ |
643 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_12_PRICE, 0x043B, "Tier 3 Block 12 Price" ) \ |
644 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_13_PRICE, 0x043C, "Tier 3 Block 13 Price" ) \ |
645 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_14_PRICE, 0x043D, "Tier 3 Block 14 Price" ) \ |
646 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_15_PRICE, 0x043E, "Tier 3 Block 15 Price" ) \ |
647 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_3_BLOCK_16_PRICE, 0x043F, "Tier 3 Block 16 Price" ) \ |
648 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_1_PRICE, 0x0440, "Tier 4 Block 1 Price" ) \ |
649 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_2_PRICE, 0x0441, "Tier 4 Block 2 Price" ) \ |
650 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_3_PRICE, 0x0442, "Tier 4 Block 3 Price" ) \ |
651 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_4_PRICE, 0x0443, "Tier 4 Block 4 Price" ) \ |
652 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_5_PRICE, 0x0444, "Tier 4 Block 5 Price" ) \ |
653 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_6_PRICE, 0x0445, "Tier 4 Block 6 Price" ) \ |
654 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_7_PRICE, 0x0446, "Tier 4 Block 7 Price" ) \ |
655 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_8_PRICE, 0x0447, "Tier 4 Block 8 Price" ) \ |
656 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_9_PRICE, 0x0448, "Tier 4 Block 9 Price" ) \ |
657 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_10_PRICE, 0x0449, "Tier 4 Block 10 Price" ) \ |
658 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_11_PRICE, 0x044A, "Tier 4 Block 11 Price" ) \ |
659 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_12_PRICE, 0x044B, "Tier 4 Block 12 Price" ) \ |
660 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_13_PRICE, 0x044C, "Tier 4 Block 13 Price" ) \ |
661 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_14_PRICE, 0x044D, "Tier 4 Block 14 Price" ) \ |
662 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_15_PRICE, 0x044E, "Tier 4 Block 15 Price" ) \ |
663 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_4_BLOCK_16_PRICE, 0x044F, "Tier 4 Block 16 Price" ) \ |
664 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_1_PRICE, 0x0450, "Tier 5 Block 1 Price" ) \ |
665 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_2_PRICE, 0x0451, "Tier 5 Block 2 Price" ) \ |
666 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_3_PRICE, 0x0452, "Tier 5 Block 3 Price" ) \ |
667 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_4_PRICE, 0x0453, "Tier 5 Block 4 Price" ) \ |
668 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_5_PRICE, 0x0454, "Tier 5 Block 5 Price" ) \ |
669 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_6_PRICE, 0x0455, "Tier 5 Block 6 Price" ) \ |
670 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_7_PRICE, 0x0456, "Tier 5 Block 7 Price" ) \ |
671 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_8_PRICE, 0x0457, "Tier 5 Block 8 Price" ) \ |
672 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_9_PRICE, 0x0458, "Tier 5 Block 9 Price" ) \ |
673 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_10_PRICE, 0x0459, "Tier 5 Block 10 Price" ) \ |
674 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_11_PRICE, 0x045A, "Tier 5 Block 11 Price" ) \ |
675 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_12_PRICE, 0x045B, "Tier 5 Block 12 Price" ) \ |
676 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_13_PRICE, 0x045C, "Tier 5 Block 13 Price" ) \ |
677 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_14_PRICE, 0x045D, "Tier 5 Block 14 Price" ) \ |
678 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_15_PRICE, 0x045E, "Tier 5 Block 15 Price" ) \ |
679 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_5_BLOCK_16_PRICE, 0x045F, "Tier 5 Block 16 Price" ) \ |
680 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_1_PRICE, 0x0460, "Tier 6 Block 1 Price" ) \ |
681 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_2_PRICE, 0x0461, "Tier 6 Block 2 Price" ) \ |
682 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_3_PRICE, 0x0462, "Tier 6 Block 3 Price" ) \ |
683 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_4_PRICE, 0x0463, "Tier 6 Block 4 Price" ) \ |
684 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_5_PRICE, 0x0464, "Tier 6 Block 5 Price" ) \ |
685 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_6_PRICE, 0x0465, "Tier 6 Block 6 Price" ) \ |
686 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_7_PRICE, 0x0466, "Tier 6 Block 7 Price" ) \ |
687 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_8_PRICE, 0x0467, "Tier 6 Block 8 Price" ) \ |
688 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_9_PRICE, 0x0468, "Tier 6 Block 9 Price" ) \ |
689 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_10_PRICE, 0x0469, "Tier 6 Block 10 Price" ) \ |
690 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_11_PRICE, 0x046A, "Tier 6 Block 11 Price" ) \ |
691 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_12_PRICE, 0x046B, "Tier 6 Block 12 Price" ) \ |
692 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_13_PRICE, 0x046C, "Tier 6 Block 13 Price" ) \ |
693 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_14_PRICE, 0x046D, "Tier 6 Block 14 Price" ) \ |
694 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_15_PRICE, 0x046E, "Tier 6 Block 15 Price" ) \ |
695 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_6_BLOCK_16_PRICE, 0x046F, "Tier 6 Block 16 Price" ) \ |
696 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_1_PRICE, 0x0470, "Tier 7 Block 1 Price" ) \ |
697 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_2_PRICE, 0x0471, "Tier 7 Block 2 Price" ) \ |
698 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_3_PRICE, 0x0472, "Tier 7 Block 3 Price" ) \ |
699 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_4_PRICE, 0x0473, "Tier 7 Block 4 Price" ) \ |
700 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_5_PRICE, 0x0474, "Tier 7 Block 5 Price" ) \ |
701 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_6_PRICE, 0x0475, "Tier 7 Block 6 Price" ) \ |
702 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_7_PRICE, 0x0476, "Tier 7 Block 7 Price" ) \ |
703 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_8_PRICE, 0x0477, "Tier 7 Block 8 Price" ) \ |
704 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_9_PRICE, 0x0478, "Tier 7 Block 9 Price" ) \ |
705 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_10_PRICE, 0x0479, "Tier 7 Block 10 Price" ) \ |
706 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_11_PRICE, 0x047A, "Tier 7 Block 11 Price" ) \ |
707 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_12_PRICE, 0x047B, "Tier 7 Block 12 Price" ) \ |
708 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_13_PRICE, 0x047C, "Tier 7 Block 13 Price" ) \ |
709 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_14_PRICE, 0x047D, "Tier 7 Block 14 Price" ) \ |
710 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_15_PRICE, 0x047E, "Tier 7 Block 15 Price" ) \ |
711 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_7_BLOCK_16_PRICE, 0x047F, "Tier 7 Block 16 Price" ) \ |
712 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_1_PRICE, 0x0480, "Tier 8 Block 1 Price" ) \ |
713 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_2_PRICE, 0x0481, "Tier 8 Block 2 Price" ) \ |
714 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_3_PRICE, 0x0482, "Tier 8 Block 3 Price" ) \ |
715 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_4_PRICE, 0x0483, "Tier 8 Block 4 Price" ) \ |
716 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_5_PRICE, 0x0484, "Tier 8 Block 5 Price" ) \ |
717 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_6_PRICE, 0x0485, "Tier 8 Block 6 Price" ) \ |
718 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_7_PRICE, 0x0486, "Tier 8 Block 7 Price" ) \ |
719 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_8_PRICE, 0x0487, "Tier 8 Block 8 Price" ) \ |
720 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_9_PRICE, 0x0488, "Tier 8 Block 9 Price" ) \ |
721 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_10_PRICE, 0x0489, "Tier 8 Block 10 Price" ) \ |
722 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_11_PRICE, 0x048A, "Tier 8 Block 11 Price" ) \ |
723 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_12_PRICE, 0x048B, "Tier 8 Block 12 Price" ) \ |
724 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_13_PRICE, 0x048C, "Tier 8 Block 13 Price" ) \ |
725 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_14_PRICE, 0x048D, "Tier 8 Block 14 Price" ) \ |
726 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_15_PRICE, 0x048E, "Tier 8 Block 15 Price" ) \ |
727 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_8_BLOCK_16_PRICE, 0x048F, "Tier 8 Block 16 Price" ) \ |
728 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_1_PRICE, 0x0490, "Tier 9 Block 1 Price" ) \ |
729 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_2_PRICE, 0x0491, "Tier 9 Block 2 Price" ) \ |
730 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_3_PRICE, 0x0492, "Tier 9 Block 3 Price" ) \ |
731 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_4_PRICE, 0x0493, "Tier 9 Block 4 Price" ) \ |
732 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_5_PRICE, 0x0494, "Tier 9 Block 5 Price" ) \ |
733 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_6_PRICE, 0x0495, "Tier 9 Block 6 Price" ) \ |
734 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_7_PRICE, 0x0496, "Tier 9 Block 7 Price" ) \ |
735 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_8_PRICE, 0x0497, "Tier 9 Block 8 Price" ) \ |
736 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_9_PRICE, 0x0498, "Tier 9 Block 9 Price" ) \ |
737 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_10_PRICE, 0x0499, "Tier 9 Block 10 Price" ) \ |
738 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_11_PRICE, 0x049A, "Tier 9 Block 11 Price" ) \ |
739 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_12_PRICE, 0x049B, "Tier 9 Block 12 Price" ) \ |
740 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_13_PRICE, 0x049C, "Tier 9 Block 13 Price" ) \ |
741 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_14_PRICE, 0x049D, "Tier 9 Block 14 Price" ) \ |
742 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_15_PRICE, 0x049E, "Tier 9 Block 15 Price" ) \ |
743 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_9_BLOCK_16_PRICE, 0x049F, "Tier 9 Block 16 Price" ) \ |
744 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_1_PRICE, 0x04A0, "Tier 10 Block 1 Price" ) \ |
745 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_2_PRICE, 0x04A1, "Tier 10 Block 2 Price" ) \ |
746 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_3_PRICE, 0x04A2, "Tier 10 Block 3 Price" ) \ |
747 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_4_PRICE, 0x04A3, "Tier 10 Block 4 Price" ) \ |
748 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_5_PRICE, 0x04A4, "Tier 10 Block 5 Price" ) \ |
749 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_6_PRICE, 0x04A5, "Tier 10 Block 6 Price" ) \ |
750 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_7_PRICE, 0x04A6, "Tier 10 Block 7 Price" ) \ |
751 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_8_PRICE, 0x04A7, "Tier 10 Block 8 Price" ) \ |
752 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_9_PRICE, 0x04A8, "Tier 10 Block 9 Price" ) \ |
753 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_10_PRICE, 0x04A9, "Tier 10 Block 10 Price" ) \ |
754 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_11_PRICE, 0x04AA, "Tier 10 Block 11 Price" ) \ |
755 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_12_PRICE, 0x04AB, "Tier 10 Block 12 Price" ) \ |
756 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_13_PRICE, 0x04AC, "Tier 10 Block 13 Price" ) \ |
757 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_14_PRICE, 0x04AD, "Tier 10 Block 14 Price" ) \ |
758 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_15_PRICE, 0x04AE, "Tier 10 Block 15 Price" ) \ |
759 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_10_BLOCK_16_PRICE, 0x04AF, "Tier 10 Block 16 Price" ) \ |
760 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_1_PRICE, 0x04B0, "Tier 11 Block 1 Price" ) \ |
761 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_2_PRICE, 0x04B1, "Tier 11 Block 2 Price" ) \ |
762 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_3_PRICE, 0x04B2, "Tier 11 Block 3 Price" ) \ |
763 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_4_PRICE, 0x04B3, "Tier 11 Block 4 Price" ) \ |
764 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_5_PRICE, 0x04B4, "Tier 11 Block 5 Price" ) \ |
765 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_6_PRICE, 0x04B5, "Tier 11 Block 6 Price" ) \ |
766 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_7_PRICE, 0x04B6, "Tier 11 Block 7 Price" ) \ |
767 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_8_PRICE, 0x04B7, "Tier 11 Block 8 Price" ) \ |
768 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_9_PRICE, 0x04B8, "Tier 11 Block 9 Price" ) \ |
769 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_10_PRICE, 0x04B9, "Tier 11 Block 10 Price" ) \ |
770 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_11_PRICE, 0x04BA, "Tier 11 Block 11 Price" ) \ |
771 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_12_PRICE, 0x04BB, "Tier 11 Block 12 Price" ) \ |
772 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_13_PRICE, 0x04BC, "Tier 11 Block 13 Price" ) \ |
773 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_14_PRICE, 0x04BD, "Tier 11 Block 14 Price" ) \ |
774 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_15_PRICE, 0x04BE, "Tier 11 Block 15 Price" ) \ |
775 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_11_BLOCK_16_PRICE, 0x04BF, "Tier 11 Block 16 Price" ) \ |
776 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_1_PRICE, 0x04C0, "Tier 12 Block 1 Price" ) \ |
777 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_2_PRICE, 0x04C1, "Tier 12 Block 2 Price" ) \ |
778 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_3_PRICE, 0x04C2, "Tier 12 Block 3 Price" ) \ |
779 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_4_PRICE, 0x04C3, "Tier 12 Block 4 Price" ) \ |
780 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_5_PRICE, 0x04C4, "Tier 12 Block 5 Price" ) \ |
781 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_6_PRICE, 0x04C5, "Tier 12 Block 6 Price" ) \ |
782 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_7_PRICE, 0x04C6, "Tier 12 Block 7 Price" ) \ |
783 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_8_PRICE, 0x04C7, "Tier 12 Block 8 Price" ) \ |
784 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_9_PRICE, 0x04C8, "Tier 12 Block 9 Price" ) \ |
785 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_10_PRICE, 0x04C9, "Tier 12 Block 10 Price" ) \ |
786 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_11_PRICE, 0x04CA, "Tier 12 Block 11 Price" ) \ |
787 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_12_PRICE, 0x04CB, "Tier 12 Block 12 Price" ) \ |
788 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_13_PRICE, 0x04CC, "Tier 12 Block 13 Price" ) \ |
789 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_14_PRICE, 0x04CD, "Tier 12 Block 14 Price" ) \ |
790 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_15_PRICE, 0x04CE, "Tier 12 Block 15 Price" ) \ |
791 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_12_BLOCK_16_PRICE, 0x04CF, "Tier 12 Block 16 Price" ) \ |
792 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_1_PRICE, 0x04D0, "Tier 13 Block 1 Price" ) \ |
793 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_2_PRICE, 0x04D1, "Tier 13 Block 2 Price" ) \ |
794 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_3_PRICE, 0x04D2, "Tier 13 Block 3 Price" ) \ |
795 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_4_PRICE, 0x04D3, "Tier 13 Block 4 Price" ) \ |
796 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_5_PRICE, 0x04D4, "Tier 13 Block 5 Price" ) \ |
797 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_6_PRICE, 0x04D5, "Tier 13 Block 6 Price" ) \ |
798 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_7_PRICE, 0x04D6, "Tier 13 Block 7 Price" ) \ |
799 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_8_PRICE, 0x04D7, "Tier 13 Block 8 Price" ) \ |
800 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_9_PRICE, 0x04D8, "Tier 13 Block 9 Price" ) \ |
801 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_10_PRICE, 0x04D9, "Tier 13 Block 10 Price" ) \ |
802 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_11_PRICE, 0x04DA, "Tier 13 Block 11 Price" ) \ |
803 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_12_PRICE, 0x04DB, "Tier 13 Block 12 Price" ) \ |
804 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_13_PRICE, 0x04DC, "Tier 13 Block 13 Price" ) \ |
805 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_14_PRICE, 0x04DD, "Tier 13 Block 14 Price" ) \ |
806 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_15_PRICE, 0x04DE, "Tier 13 Block 15 Price" ) \ |
807 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_13_BLOCK_16_PRICE, 0x04DF, "Tier 13 Block 16 Price" ) \ |
808 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_1_PRICE, 0x04E0, "Tier 14 Block 1 Price" ) \ |
809 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_2_PRICE, 0x04E1, "Tier 14 Block 2 Price" ) \ |
810 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_3_PRICE, 0x04E2, "Tier 14 Block 3 Price" ) \ |
811 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_4_PRICE, 0x04E3, "Tier 14 Block 4 Price" ) \ |
812 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_5_PRICE, 0x04E4, "Tier 14 Block 5 Price" ) \ |
813 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_6_PRICE, 0x04E5, "Tier 14 Block 6 Price" ) \ |
814 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_7_PRICE, 0x04E6, "Tier 14 Block 7 Price" ) \ |
815 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_8_PRICE, 0x04E7, "Tier 14 Block 8 Price" ) \ |
816 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_9_PRICE, 0x04E8, "Tier 14 Block 9 Price" ) \ |
817 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_10_PRICE, 0x04E9, "Tier 14 Block 10 Price" ) \ |
818 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_11_PRICE, 0x04EA, "Tier 14 Block 11 Price" ) \ |
819 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_12_PRICE, 0x04EB, "Tier 14 Block 12 Price" ) \ |
820 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_13_PRICE, 0x04EC, "Tier 14 Block 13 Price" ) \ |
821 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_14_PRICE, 0x04ED, "Tier 14 Block 14 Price" ) \ |
822 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_15_PRICE, 0x04EE, "Tier 14 Block 15 Price" ) \ |
823 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_14_BLOCK_16_PRICE, 0x04EF, "Tier 14 Block 16 Price" ) \ |
824 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_1_PRICE, 0x04F0, "Tier 15 Block 1 Price" ) \ |
825 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_2_PRICE, 0x04F1, "Tier 15 Block 2 Price" ) \ |
826 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_3_PRICE, 0x04F2, "Tier 15 Block 3 Price" ) \ |
827 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_4_PRICE, 0x04F3, "Tier 15 Block 4 Price" ) \ |
828 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_5_PRICE, 0x04F4, "Tier 15 Block 5 Price" ) \ |
829 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_6_PRICE, 0x04F5, "Tier 15 Block 6 Price" ) \ |
830 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_7_PRICE, 0x04F6, "Tier 15 Block 7 Price" ) \ |
831 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_8_PRICE, 0x04F7, "Tier 15 Block 8 Price" ) \ |
832 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_9_PRICE, 0x04F8, "Tier 15 Block 9 Price" ) \ |
833 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_10_PRICE, 0x04F9, "Tier 15 Block 10 Price" ) \ |
834 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_11_PRICE, 0x04FA, "Tier 15 Block 11 Price" ) \ |
835 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_12_PRICE, 0x04FB, "Tier 15 Block 12 Price" ) \ |
836 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_13_PRICE, 0x04FC, "Tier 15 Block 13 Price" ) \ |
837 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_14_PRICE, 0x04FD, "Tier 15 Block 14 Price" ) \ |
838 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_15_PRICE, 0x04FE, "Tier 15 Block 15 Price" ) \ |
839 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_15_BLOCK_16_PRICE, 0x04FF, "Tier 15 Block 16 Price" ) \ |
840 | | /* Extended Price Information (Delivered) Set */ \ |
841 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_16, 0x050F, "Price Tier 16" ) \ |
842 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_17, 0x0510, "Price Tier 17" ) \ |
843 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_18, 0x0511, "Price Tier 18" ) \ |
844 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_19, 0x0512, "Price Tier 19" ) \ |
845 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_20, 0x0513, "Price Tier 20" ) \ |
846 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_21, 0x0514, "Price Tier 21" ) \ |
847 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_22, 0x0515, "Price Tier 22" ) \ |
848 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_23, 0x0516, "Price Tier 23" ) \ |
849 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_24, 0x0517, "Price Tier 24" ) \ |
850 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_25, 0x0518, "Price Tier 25" ) \ |
851 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_26, 0x0519, "Price Tier 26" ) \ |
852 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_27, 0x051A, "Price Tier 27" ) \ |
853 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_28, 0x051B, "Price Tier 28" ) \ |
854 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_29, 0x051C, "Price Tier 29" ) \ |
855 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_30, 0x051D, "Price Tier 30" ) \ |
856 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_31, 0x051E, "Price Tier 31" ) \ |
857 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_32, 0x051F, "Price Tier 32" ) \ |
858 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_33, 0x0520, "Price Tier 33" ) \ |
859 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_34, 0x0521, "Price Tier 34" ) \ |
860 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_35, 0x0522, "Price Tier 35" ) \ |
861 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_36, 0x0523, "Price Tier 36" ) \ |
862 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_37, 0x0524, "Price Tier 37" ) \ |
863 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_38, 0x0525, "Price Tier 38" ) \ |
864 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_39, 0x0526, "Price Tier 39" ) \ |
865 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_40, 0x0527, "Price Tier 40" ) \ |
866 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_41, 0x0528, "Price Tier 41" ) \ |
867 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_42, 0x0529, "Price Tier 42" ) \ |
868 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_43, 0x052A, "Price Tier 43" ) \ |
869 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_44, 0x052B, "Price Tier 44" ) \ |
870 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_45, 0x052C, "Price Tier 45" ) \ |
871 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_46, 0x052D, "Price Tier 46" ) \ |
872 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_47, 0x052E, "Price Tier 47" ) \ |
873 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TIER_48, 0x052F, "Price Tier 48" ) \ |
874 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CPP_1_PRICE, 0x05FE, "CPP 1 Price" ) \ |
875 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CPP_2_PRICE, 0x05FF, "CPP 2 Price" ) \ |
876 | | /* Tariff Information Set (Delivered) */ \ |
877 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TARIFF_LABEL, 0x0610, "Tariff Label" ) \ |
878 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NUMBER_OF_PRICE_TIERS_IN_USE, 0x0611, "Number of Price Tiers in Use" ) \ |
879 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_NUMBER_OF_BLOCK_THRES_IN_USE, 0x0612, "Number of Block Thresholds in Use" ) \ |
880 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TIER_BLOCK_MODE, 0x0613, "Tier Block Mode" ) \ |
881 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_UNIT_OF_MEASURE, 0x0615, "Unit of Measure" ) \ |
882 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENCY, 0x0616, "Currency" ) \ |
883 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PRICE_TRAILING_DIGIT, 0x0617, "Price Trailing Digit" ) \ |
884 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_TARIFF_RESOLUTION_PERIOD, 0x0619, "Tariff Resolution Period" ) \ |
885 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2, 0x0620, "CO2" ) \ |
886 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2_UNIT, 0x0621, "CO2 Unit" ) \ |
887 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CO2_TRAILING_DIGIT, 0x0622, "CO2 Trailing Digit" ) \ |
888 | | /* Billing Information (Delivered) Attribute Set */ \ |
889 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENT_BILLING_PERIOD_START, 0x0700, "Current Billing Period Start" ) \ |
890 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CURRENT_BILLING_PERIOD_DURATION, 0x0701, "Current Billing Period Duration" ) \ |
891 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_START, 0x0702, "Last Billing Period Start" ) \ |
892 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_DURATION, 0x0703, "Last Billing Period Duration" ) \ |
893 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_LAST_BILLING_PERIOD_CON_BILL, 0x0704, "Last Billing Period Consolidated Bill" ) \ |
894 | | /* Credit Payment Attribute Set */ \ |
895 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DUE_DATE, 0x0800, "Credit Payment Due Date" ) \ |
896 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_STATUS, 0x0801, "Credit Payment Status" ) \ |
897 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_OVER_DUE_AMOUNT, 0x0802, "Credit Payment Over Due Amount" ) \ |
898 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PAYMENT_DISCOUNT, 0x080A, "Payment Discount" ) \ |
899 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_PAYMENT_DISCOUNT_PERIOD, 0x080B, "Payment Discount Period" ) \ |
900 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_1, 0x0810, "Credit Payment #1" ) \ |
901 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_1, 0x0811, "Credit Payment Date #1" ) \ |
902 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_1, 0x0812, "Credit Payment Ref #1" ) \ |
903 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_2, 0x0820, "Credit Payment #2" ) \ |
904 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_2, 0x0821, "Credit Payment Date #2" ) \ |
905 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_2, 0x0822, "Credit Payment Ref #2" ) \ |
906 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_3, 0x0830, "Credit Payment #3" ) \ |
907 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_3, 0x0831, "Credit Payment Date #3" ) \ |
908 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_3, 0x0832, "Credit Payment Ref #3" ) \ |
909 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_4, 0x0840, "Credit Payment #4" ) \ |
910 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_4, 0x0841, "Credit Payment Date #4" ) \ |
911 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_4, 0x0842, "Credit Payment Ref #4" ) \ |
912 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_5, 0x0850, "Credit Payment #5" ) \ |
913 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_DATE_5, 0x0851, "Credit Payment Date #5" ) \ |
914 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CREDIT_PAYMENT_REF_5, 0x0852, "Credit Payment Ref #5" ) \ |
915 | | /* Received Tier Label Attribute Set */ \ |
916 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_1_PRICE_LABEL, 0x8000, "Received Tier 1 Price label" ) \ |
917 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_2_PRICE_LABEL, 0x8001, "Received Tier 2 Price label" ) \ |
918 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_3_PRICE_LABEL, 0x8002, "Received Tier 3 Price label" ) \ |
919 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_4_PRICE_LABEL, 0x8003, "Received Tier 4 Price label" ) \ |
920 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_5_PRICE_LABEL, 0x8004, "Received Tier 5 Price label" ) \ |
921 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_6_PRICE_LABEL, 0x8005, "Received Tier 6 Price label" ) \ |
922 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_7_PRICE_LABEL, 0x8006, "Received Tier 7 Price label" ) \ |
923 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_8_PRICE_LABEL, 0x8007, "Received Tier 8 Price label" ) \ |
924 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_9_PRICE_LABEL, 0x8008, "Received Tier 9 Price label" ) \ |
925 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_10_PRICE_LABEL, 0x8009, "Received Tier 10 Price label" ) \ |
926 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_11_PRICE_LABEL, 0x800A, "Received Tier 11 Price label" ) \ |
927 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_12_PRICE_LABEL, 0x800B, "Received Tier 12 Price label" ) \ |
928 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_13_PRICE_LABEL, 0x800C, "Received Tier 13 Price label" ) \ |
929 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_14_PRICE_LABEL, 0x800D, "Received Tier 14 Price label" ) \ |
930 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_15_PRICE_LABEL, 0x800E, "Received Tier 15 Price label" ) \ |
931 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_16_PRICE_LABEL, 0x800F, "Received Tier 16 Price label" ) \ |
932 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_17_PRICE_LABEL, 0x8010, "Received Tier 17 Price label" ) \ |
933 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_18_PRICE_LABEL, 0x8011, "Received Tier 18 Price label" ) \ |
934 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_19_PRICE_LABEL, 0x8012, "Received Tier 19 Price label" ) \ |
935 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_20_PRICE_LABEL, 0x8013, "Received Tier 20 Price label" ) \ |
936 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_21_PRICE_LABEL, 0x8014, "Received Tier 21 Price label" ) \ |
937 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_22_PRICE_LABEL, 0x8015, "Received Tier 22 Price label" ) \ |
938 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_23_PRICE_LABEL, 0x8016, "Received Tier 23 Price label" ) \ |
939 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_24_PRICE_LABEL, 0x8017, "Received Tier 24 Price label" ) \ |
940 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_25_PRICE_LABEL, 0x8018, "Received Tier 25 Price label" ) \ |
941 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_26_PRICE_LABEL, 0x8019, "Received Tier 26 Price label" ) \ |
942 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_27_PRICE_LABEL, 0x801A, "Received Tier 27 Price label" ) \ |
943 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_28_PRICE_LABEL, 0x801B, "Received Tier 28 Price label" ) \ |
944 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_29_PRICE_LABEL, 0x801C, "Received Tier 29 Price label" ) \ |
945 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_30_PRICE_LABEL, 0x801D, "Received Tier 30 Price label" ) \ |
946 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_31_PRICE_LABEL, 0x801E, "Received Tier 31 Price label" ) \ |
947 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_32_PRICE_LABEL, 0x801F, "Received Tier 32 Price label" ) \ |
948 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_33_PRICE_LABEL, 0x8020, "Received Tier 33 Price label" ) \ |
949 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_34_PRICE_LABEL, 0x8021, "Received Tier 34 Price label" ) \ |
950 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_35_PRICE_LABEL, 0x8022, "Received Tier 35 Price label" ) \ |
951 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_36_PRICE_LABEL, 0x8023, "Received Tier 36 Price label" ) \ |
952 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_37_PRICE_LABEL, 0x8024, "Received Tier 37 Price label" ) \ |
953 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_38_PRICE_LABEL, 0x8025, "Received Tier 38 Price label" ) \ |
954 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_39_PRICE_LABEL, 0x8026, "Received Tier 39 Price label" ) \ |
955 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_40_PRICE_LABEL, 0x8027, "Received Tier 40 Price label" ) \ |
956 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_41_PRICE_LABEL, 0x8028, "Received Tier 41 Price label" ) \ |
957 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_42_PRICE_LABEL, 0x8029, "Received Tier 42 Price label" ) \ |
958 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_43_PRICE_LABEL, 0x802A, "Received Tier 43 Price label" ) \ |
959 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_44_PRICE_LABEL, 0x802B, "Received Tier 44 Price label" ) \ |
960 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_45_PRICE_LABEL, 0x802C, "Received Tier 45 Price label" ) \ |
961 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_46_PRICE_LABEL, 0x802D, "Received Tier 46 Price label" ) \ |
962 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_47_PRICE_LABEL, 0x802E, "Received Tier 47 Price label" ) \ |
963 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_48_PRICE_LABEL, 0x802F, "Received Tier 48 Price label" ) \ |
964 | | /* Received Block Threshold Attribute Set */ \ |
965 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_1_THRESHOLD, 0x8100, "Received Block 1 Threshold" ) \ |
966 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_2_THRESHOLD, 0x8101, "Received Block 2 Threshold" ) \ |
967 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_3_THRESHOLD, 0x8102, "Received Block 3 Threshold" ) \ |
968 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_4_THRESHOLD, 0x8103, "Received Block 4 Threshold" ) \ |
969 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_5_THRESHOLD, 0x8104, "Received Block 5 Threshold" ) \ |
970 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_6_THRESHOLD, 0x8105, "Received Block 6 Threshold" ) \ |
971 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_7_THRESHOLD, 0x8106, "Received Block 7 Threshold" ) \ |
972 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_8_THRESHOLD, 0x8107, "Received Block 8 Threshold" ) \ |
973 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_9_THRESHOLD, 0x8108, "Received Block 9 Threshold" ) \ |
974 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_10_THRESHOLD, 0x8109, "Received Block 10 Threshold" ) \ |
975 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_11_THRESHOLD, 0x810A, "Received Block 11 Threshold" ) \ |
976 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_12_THRESHOLD, 0x810B, "Received Block 12 Threshold" ) \ |
977 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_13_THRESHOLD, 0x810C, "Received Block 13 Threshold" ) \ |
978 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_14_THRESHOLD, 0x810D, "Received Block 14 Threshold" ) \ |
979 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_15_THRESHOLD, 0x810E, "Received Block 15 Threshold" ) \ |
980 | | /* Received Block Period Attribute Set */ \ |
981 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_START_OF_BLOCK_PERIOD, 0x8200, "Received Start of Block Period" ) \ |
982 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_BLOCK_PERIOD_DURATION, 0x8201, "Received Block Period Duration" ) \ |
983 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_THRESHOLD_MULTIPLIER, 0x8202, "Received Threshold Multiplier" ) \ |
984 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_THRESHOLD_DIVISOR, 0x8203, "Received Threshold Divisor" ) \ |
985 | | /* Received Block Price Information Attribute Set */ \ |
986 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_1_PRICE, 0x8400, "Rx No Tier Block 1 Price" ) \ |
987 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_2_PRICE, 0x8401, "Rx No Tier Block 2 Price" ) \ |
988 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_3_PRICE, 0x8402, "Rx No Tier Block 3 Price" ) \ |
989 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_4_PRICE, 0x8403, "Rx No Tier Block 4 Price" ) \ |
990 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_5_PRICE, 0x8404, "Rx No Tier Block 5 Price" ) \ |
991 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_6_PRICE, 0x8405, "Rx No Tier Block 6 Price" ) \ |
992 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_7_PRICE, 0x8406, "Rx No Tier Block 7 Price" ) \ |
993 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_8_PRICE, 0x8407, "Rx No Tier Block 8 Price" ) \ |
994 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_9_PRICE, 0x8408, "Rx No Tier Block 9 Price" ) \ |
995 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_10_PRICE, 0x8409, "Rx No Tier Block 10 Price" ) \ |
996 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_11_PRICE, 0x840A, "Rx No Tier Block 11 Price" ) \ |
997 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_12_PRICE, 0x840B, "Rx No Tier Block 12 Price" ) \ |
998 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_13_PRICE, 0x840C, "Rx No Tier Block 13 Price" ) \ |
999 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_14_PRICE, 0x840D, "Rx No Tier Block 14 Price" ) \ |
1000 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_15_PRICE, 0x840E, "Rx No Tier Block 15 Price" ) \ |
1001 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NO_TIER_BLOCK_16_PRICE, 0x840F, "Rx No Tier Block 16 Price" ) \ |
1002 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_1_PRICE, 0x8410, "Rx Tier 1 Block 1 Price" ) \ |
1003 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_2_PRICE, 0x8411, "Rx Tier 1 Block 2 Price" ) \ |
1004 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_3_PRICE, 0x8412, "Rx Tier 1 Block 3 Price" ) \ |
1005 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_4_PRICE, 0x8413, "Rx Tier 1 Block 4 Price" ) \ |
1006 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_5_PRICE, 0x8414, "Rx Tier 1 Block 5 Price" ) \ |
1007 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_6_PRICE, 0x8415, "Rx Tier 1 Block 6 Price" ) \ |
1008 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_7_PRICE, 0x8416, "Rx Tier 1 Block 7 Price" ) \ |
1009 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_8_PRICE, 0x8417, "Rx Tier 1 Block 8 Price" ) \ |
1010 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_9_PRICE, 0x8418, "Rx Tier 1 Block 9 Price" ) \ |
1011 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_10_PRICE, 0x8419, "Rx Tier 1 Block 10 Price" ) \ |
1012 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_11_PRICE, 0x841A, "Rx Tier 1 Block 11 Price" ) \ |
1013 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_12_PRICE, 0x841B, "Rx Tier 1 Block 12 Price" ) \ |
1014 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_13_PRICE, 0x841C, "Rx Tier 1 Block 13 Price" ) \ |
1015 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_14_PRICE, 0x841D, "Rx Tier 1 Block 14 Price" ) \ |
1016 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_15_PRICE, 0x841E, "Rx Tier 1 Block 15 Price" ) \ |
1017 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_1_BLOCK_16_PRICE, 0x841F, "Rx Tier 1 Block 16 Price" ) \ |
1018 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_1_PRICE, 0x8420, "Rx Tier 2 Block 1 Price" ) \ |
1019 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_2_PRICE, 0x8421, "Rx Tier 2 Block 2 Price" ) \ |
1020 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_3_PRICE, 0x8422, "Rx Tier 2 Block 3 Price" ) \ |
1021 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_4_PRICE, 0x8423, "Rx Tier 2 Block 4 Price" ) \ |
1022 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_5_PRICE, 0x8424, "Rx Tier 2 Block 5 Price" ) \ |
1023 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_6_PRICE, 0x8425, "Rx Tier 2 Block 6 Price" ) \ |
1024 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_7_PRICE, 0x8426, "Rx Tier 2 Block 7 Price" ) \ |
1025 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_8_PRICE, 0x8427, "Rx Tier 2 Block 8 Price" ) \ |
1026 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_9_PRICE, 0x8428, "Rx Tier 2 Block 9 Price" ) \ |
1027 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_10_PRICE, 0x8429, "Rx Tier 2 Block 10 Price" ) \ |
1028 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_11_PRICE, 0x842A, "Rx Tier 2 Block 11 Price" ) \ |
1029 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_12_PRICE, 0x842B, "Rx Tier 2 Block 12 Price" ) \ |
1030 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_13_PRICE, 0x842C, "Rx Tier 2 Block 13 Price" ) \ |
1031 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_14_PRICE, 0x842D, "Rx Tier 2 Block 14 Price" ) \ |
1032 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_15_PRICE, 0x842E, "Rx Tier 2 Block 15 Price" ) \ |
1033 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_2_BLOCK_16_PRICE, 0x842F, "Rx Tier 2 Block 16 Price" ) \ |
1034 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_1_PRICE, 0x8430, "Rx Tier 3 Block 1 Price" ) \ |
1035 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_2_PRICE, 0x8431, "Rx Tier 3 Block 2 Price" ) \ |
1036 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_3_PRICE, 0x8432, "Rx Tier 3 Block 3 Price" ) \ |
1037 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_4_PRICE, 0x8433, "Rx Tier 3 Block 4 Price" ) \ |
1038 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_5_PRICE, 0x8434, "Rx Tier 3 Block 5 Price" ) \ |
1039 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_6_PRICE, 0x8435, "Rx Tier 3 Block 6 Price" ) \ |
1040 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_7_PRICE, 0x8436, "Rx Tier 3 Block 7 Price" ) \ |
1041 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_8_PRICE, 0x8437, "Rx Tier 3 Block 8 Price" ) \ |
1042 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_9_PRICE, 0x8438, "Rx Tier 3 Block 9 Price" ) \ |
1043 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_10_PRICE, 0x8439, "Rx Tier 3 Block 10 Price" ) \ |
1044 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_11_PRICE, 0x843A, "Rx Tier 3 Block 11 Price" ) \ |
1045 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_12_PRICE, 0x843B, "Rx Tier 3 Block 12 Price" ) \ |
1046 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_13_PRICE, 0x843C, "Rx Tier 3 Block 13 Price" ) \ |
1047 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_14_PRICE, 0x843D, "Rx Tier 3 Block 14 Price" ) \ |
1048 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_15_PRICE, 0x843E, "Rx Tier 3 Block 15 Price" ) \ |
1049 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_3_BLOCK_16_PRICE, 0x843F, "Rx Tier 3 Block 16 Price" ) \ |
1050 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_1_PRICE, 0x8440, "Rx Tier 4 Block 1 Price" ) \ |
1051 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_2_PRICE, 0x8441, "Rx Tier 4 Block 2 Price" ) \ |
1052 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_3_PRICE, 0x8442, "Rx Tier 4 Block 3 Price" ) \ |
1053 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_4_PRICE, 0x8443, "Rx Tier 4 Block 4 Price" ) \ |
1054 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_5_PRICE, 0x8444, "Rx Tier 4 Block 5 Price" ) \ |
1055 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_6_PRICE, 0x8445, "Rx Tier 4 Block 6 Price" ) \ |
1056 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_7_PRICE, 0x8446, "Rx Tier 4 Block 7 Price" ) \ |
1057 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_8_PRICE, 0x8447, "Rx Tier 4 Block 8 Price" ) \ |
1058 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_9_PRICE, 0x8448, "Rx Tier 4 Block 9 Price" ) \ |
1059 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_10_PRICE, 0x8449, "Rx Tier 4 Block 10 Price" ) \ |
1060 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_11_PRICE, 0x844A, "Rx Tier 4 Block 11 Price" ) \ |
1061 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_12_PRICE, 0x844B, "Rx Tier 4 Block 12 Price" ) \ |
1062 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_13_PRICE, 0x844C, "Rx Tier 4 Block 13 Price" ) \ |
1063 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_14_PRICE, 0x844D, "Rx Tier 4 Block 14 Price" ) \ |
1064 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_15_PRICE, 0x844E, "Rx Tier 4 Block 15 Price" ) \ |
1065 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_4_BLOCK_16_PRICE, 0x844F, "Rx Tier 4 Block 16 Price" ) \ |
1066 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_1_PRICE, 0x8450, "Rx Tier 5 Block 1 Price" ) \ |
1067 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_2_PRICE, 0x8451, "Rx Tier 5 Block 2 Price" ) \ |
1068 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_3_PRICE, 0x8452, "Rx Tier 5 Block 3 Price" ) \ |
1069 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_4_PRICE, 0x8453, "Rx Tier 5 Block 4 Price" ) \ |
1070 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_5_PRICE, 0x8454, "Rx Tier 5 Block 5 Price" ) \ |
1071 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_6_PRICE, 0x8455, "Rx Tier 5 Block 6 Price" ) \ |
1072 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_7_PRICE, 0x8456, "Rx Tier 5 Block 7 Price" ) \ |
1073 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_8_PRICE, 0x8457, "Rx Tier 5 Block 8 Price" ) \ |
1074 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_9_PRICE, 0x8458, "Rx Tier 5 Block 9 Price" ) \ |
1075 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_10_PRICE, 0x8459, "Rx Tier 5 Block 10 Price" ) \ |
1076 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_11_PRICE, 0x845A, "Rx Tier 5 Block 11 Price" ) \ |
1077 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_12_PRICE, 0x845B, "Rx Tier 5 Block 12 Price" ) \ |
1078 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_13_PRICE, 0x845C, "Rx Tier 5 Block 13 Price" ) \ |
1079 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_14_PRICE, 0x845D, "Rx Tier 5 Block 14 Price" ) \ |
1080 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_15_PRICE, 0x845E, "Rx Tier 5 Block 15 Price" ) \ |
1081 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_5_BLOCK_16_PRICE, 0x845F, "Rx Tier 5 Block 16 Price" ) \ |
1082 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_1_PRICE, 0x8460, "Rx Tier 6 Block 1 Price" ) \ |
1083 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_2_PRICE, 0x8461, "Rx Tier 6 Block 2 Price" ) \ |
1084 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_3_PRICE, 0x8462, "Rx Tier 6 Block 3 Price" ) \ |
1085 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_4_PRICE, 0x8463, "Rx Tier 6 Block 4 Price" ) \ |
1086 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_5_PRICE, 0x8464, "Rx Tier 6 Block 5 Price" ) \ |
1087 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_6_PRICE, 0x8465, "Rx Tier 6 Block 6 Price" ) \ |
1088 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_7_PRICE, 0x8466, "Rx Tier 6 Block 7 Price" ) \ |
1089 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_8_PRICE, 0x8467, "Rx Tier 6 Block 8 Price" ) \ |
1090 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_9_PRICE, 0x8468, "Rx Tier 6 Block 9 Price" ) \ |
1091 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_10_PRICE, 0x8469, "Rx Tier 6 Block 10 Price" ) \ |
1092 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_11_PRICE, 0x846A, "Rx Tier 6 Block 11 Price" ) \ |
1093 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_12_PRICE, 0x846B, "Rx Tier 6 Block 12 Price" ) \ |
1094 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_13_PRICE, 0x846C, "Rx Tier 6 Block 13 Price" ) \ |
1095 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_14_PRICE, 0x846D, "Rx Tier 6 Block 14 Price" ) \ |
1096 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_15_PRICE, 0x846E, "Rx Tier 6 Block 15 Price" ) \ |
1097 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_6_BLOCK_16_PRICE, 0x846F, "Rx Tier 6 Block 16 Price" ) \ |
1098 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_1_PRICE, 0x8470, "Rx Tier 7 Block 1 Price" ) \ |
1099 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_2_PRICE, 0x8471, "Rx Tier 7 Block 2 Price" ) \ |
1100 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_3_PRICE, 0x8472, "Rx Tier 7 Block 3 Price" ) \ |
1101 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_4_PRICE, 0x8473, "Rx Tier 7 Block 4 Price" ) \ |
1102 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_5_PRICE, 0x8474, "Rx Tier 7 Block 5 Price" ) \ |
1103 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_6_PRICE, 0x8475, "Rx Tier 7 Block 6 Price" ) \ |
1104 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_7_PRICE, 0x8476, "Rx Tier 7 Block 7 Price" ) \ |
1105 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_8_PRICE, 0x8477, "Rx Tier 7 Block 8 Price" ) \ |
1106 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_9_PRICE, 0x8478, "Rx Tier 7 Block 9 Price" ) \ |
1107 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_10_PRICE, 0x8479, "Rx Tier 7 Block 10 Price" ) \ |
1108 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_11_PRICE, 0x847A, "Rx Tier 7 Block 11 Price" ) \ |
1109 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_12_PRICE, 0x847B, "Rx Tier 7 Block 12 Price" ) \ |
1110 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_13_PRICE, 0x847C, "Rx Tier 7 Block 13 Price" ) \ |
1111 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_14_PRICE, 0x847D, "Rx Tier 7 Block 14 Price" ) \ |
1112 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_15_PRICE, 0x847E, "Rx Tier 7 Block 15 Price" ) \ |
1113 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_7_BLOCK_16_PRICE, 0x847F, "Rx Tier 7 Block 16 Price" ) \ |
1114 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_1_PRICE, 0x8480, "Rx Tier 8 Block 1 Price" ) \ |
1115 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_2_PRICE, 0x8481, "Rx Tier 8 Block 2 Price" ) \ |
1116 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_3_PRICE, 0x8482, "Rx Tier 8 Block 3 Price" ) \ |
1117 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_4_PRICE, 0x8483, "Rx Tier 8 Block 4 Price" ) \ |
1118 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_5_PRICE, 0x8484, "Rx Tier 8 Block 5 Price" ) \ |
1119 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_6_PRICE, 0x8485, "Rx Tier 8 Block 6 Price" ) \ |
1120 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_7_PRICE, 0x8486, "Rx Tier 8 Block 7 Price" ) \ |
1121 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_8_PRICE, 0x8487, "Rx Tier 8 Block 8 Price" ) \ |
1122 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_9_PRICE, 0x8488, "Rx Tier 8 Block 9 Price" ) \ |
1123 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_10_PRICE, 0x8489, "Rx Tier 8 Block 10 Price" ) \ |
1124 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_11_PRICE, 0x848A, "Rx Tier 8 Block 11 Price" ) \ |
1125 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_12_PRICE, 0x848B, "Rx Tier 8 Block 12 Price" ) \ |
1126 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_13_PRICE, 0x848C, "Rx Tier 8 Block 13 Price" ) \ |
1127 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_14_PRICE, 0x848D, "Rx Tier 8 Block 14 Price" ) \ |
1128 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_15_PRICE, 0x848E, "Rx Tier 8 Block 15 Price" ) \ |
1129 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_8_BLOCK_16_PRICE, 0x848F, "Rx Tier 8 Block 16 Price" ) \ |
1130 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_1_PRICE, 0x8490, "Rx Tier 9 Block 1 Price" ) \ |
1131 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_2_PRICE, 0x8491, "Rx Tier 9 Block 2 Price" ) \ |
1132 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_3_PRICE, 0x8492, "Rx Tier 9 Block 3 Price" ) \ |
1133 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_4_PRICE, 0x8493, "Rx Tier 9 Block 4 Price" ) \ |
1134 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_5_PRICE, 0x8494, "Rx Tier 9 Block 5 Price" ) \ |
1135 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_6_PRICE, 0x8495, "Rx Tier 9 Block 6 Price" ) \ |
1136 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_7_PRICE, 0x8496, "Rx Tier 9 Block 7 Price" ) \ |
1137 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_8_PRICE, 0x8497, "Rx Tier 9 Block 8 Price" ) \ |
1138 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_9_PRICE, 0x8498, "Rx Tier 9 Block 9 Price" ) \ |
1139 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_10_PRICE, 0x8499, "Rx Tier 9 Block 10 Price" ) \ |
1140 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_11_PRICE, 0x849A, "Rx Tier 9 Block 11 Price" ) \ |
1141 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_12_PRICE, 0x849B, "Rx Tier 9 Block 12 Price" ) \ |
1142 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_13_PRICE, 0x849C, "Rx Tier 9 Block 13 Price" ) \ |
1143 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_14_PRICE, 0x849D, "Rx Tier 9 Block 14 Price" ) \ |
1144 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_15_PRICE, 0x849E, "Rx Tier 9 Block 15 Price" ) \ |
1145 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_9_BLOCK_16_PRICE, 0x849F, "Rx Tier 9 Block 16 Price" ) \ |
1146 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_1_PRICE, 0x84A0, "Rx Tier 10 Block 1 Price" ) \ |
1147 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_2_PRICE, 0x84A1, "Rx Tier 10 Block 2 Price" ) \ |
1148 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_3_PRICE, 0x84A2, "Rx Tier 10 Block 3 Price" ) \ |
1149 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_4_PRICE, 0x84A3, "Rx Tier 10 Block 4 Price" ) \ |
1150 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_5_PRICE, 0x84A4, "Rx Tier 10 Block 5 Price" ) \ |
1151 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_6_PRICE, 0x84A5, "Rx Tier 10 Block 6 Price" ) \ |
1152 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_7_PRICE, 0x84A6, "Rx Tier 10 Block 7 Price" ) \ |
1153 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_8_PRICE, 0x84A7, "Rx Tier 10 Block 8 Price" ) \ |
1154 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_9_PRICE, 0x84A8, "Rx Tier 10 Block 9 Price" ) \ |
1155 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_10_PRICE, 0x84A9, "Rx Tier 10 Block 10 Price" ) \ |
1156 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_11_PRICE, 0x84AA, "Rx Tier 10 Block 11 Price" ) \ |
1157 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_12_PRICE, 0x84AB, "Rx Tier 10 Block 12 Price" ) \ |
1158 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_13_PRICE, 0x84AC, "Rx Tier 10 Block 13 Price" ) \ |
1159 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_14_PRICE, 0x84AD, "Rx Tier 10 Block 14 Price" ) \ |
1160 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_15_PRICE, 0x84AE, "Rx Tier 10 Block 15 Price" ) \ |
1161 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_10_BLOCK_16_PRICE, 0x84AF, "Rx Tier 10 Block 16 Price" ) \ |
1162 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_1_PRICE, 0x84B0, "Rx Tier 11 Block 1 Price" ) \ |
1163 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_2_PRICE, 0x84B1, "Rx Tier 11 Block 2 Price" ) \ |
1164 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_3_PRICE, 0x84B2, "Rx Tier 11 Block 3 Price" ) \ |
1165 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_4_PRICE, 0x84B3, "Rx Tier 11 Block 4 Price" ) \ |
1166 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_5_PRICE, 0x84B4, "Rx Tier 11 Block 5 Price" ) \ |
1167 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_6_PRICE, 0x84B5, "Rx Tier 11 Block 6 Price" ) \ |
1168 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_7_PRICE, 0x84B6, "Rx Tier 11 Block 7 Price" ) \ |
1169 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_8_PRICE, 0x84B7, "Rx Tier 11 Block 8 Price" ) \ |
1170 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_9_PRICE, 0x84B8, "Rx Tier 11 Block 9 Price" ) \ |
1171 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_10_PRICE, 0x84B9, "Rx Tier 11 Block 10 Price" ) \ |
1172 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_11_PRICE, 0x84BA, "Rx Tier 11 Block 11 Price" ) \ |
1173 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_12_PRICE, 0x84BB, "Rx Tier 11 Block 12 Price" ) \ |
1174 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_13_PRICE, 0x84BC, "Rx Tier 11 Block 13 Price" ) \ |
1175 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_14_PRICE, 0x84BD, "Rx Tier 11 Block 14 Price" ) \ |
1176 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_15_PRICE, 0x84BE, "Rx Tier 11 Block 15 Price" ) \ |
1177 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_11_BLOCK_16_PRICE, 0x84BF, "Rx Tier 11 Block 16 Price" ) \ |
1178 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_1_PRICE, 0x84C0, "Rx Tier 12 Block 1 Price" ) \ |
1179 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_2_PRICE, 0x84C1, "Rx Tier 12 Block 2 Price" ) \ |
1180 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_3_PRICE, 0x84C2, "Rx Tier 12 Block 3 Price" ) \ |
1181 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_4_PRICE, 0x84C3, "Rx Tier 12 Block 4 Price" ) \ |
1182 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_5_PRICE, 0x84C4, "Rx Tier 12 Block 5 Price" ) \ |
1183 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_6_PRICE, 0x84C5, "Rx Tier 12 Block 6 Price" ) \ |
1184 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_7_PRICE, 0x84C6, "Rx Tier 12 Block 7 Price" ) \ |
1185 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_8_PRICE, 0x84C7, "Rx Tier 12 Block 8 Price" ) \ |
1186 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_9_PRICE, 0x84C8, "Rx Tier 12 Block 9 Price" ) \ |
1187 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_10_PRICE, 0x84C9, "Rx Tier 12 Block 10 Price" ) \ |
1188 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_11_PRICE, 0x84CA, "Rx Tier 12 Block 11 Price" ) \ |
1189 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_12_PRICE, 0x84CB, "Rx Tier 12 Block 12 Price" ) \ |
1190 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_13_PRICE, 0x84CC, "Rx Tier 12 Block 13 Price" ) \ |
1191 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_14_PRICE, 0x84CD, "Rx Tier 12 Block 14 Price" ) \ |
1192 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_15_PRICE, 0x84CE, "Rx Tier 12 Block 15 Price" ) \ |
1193 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_12_BLOCK_16_PRICE, 0x84CF, "Rx Tier 12 Block 16 Price" ) \ |
1194 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_1_PRICE, 0x84D0, "Rx Tier 13 Block 1 Price" ) \ |
1195 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_2_PRICE, 0x84D1, "Rx Tier 13 Block 2 Price" ) \ |
1196 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_3_PRICE, 0x84D2, "Rx Tier 13 Block 3 Price" ) \ |
1197 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_4_PRICE, 0x84D3, "Rx Tier 13 Block 4 Price" ) \ |
1198 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_5_PRICE, 0x84D4, "Rx Tier 13 Block 5 Price" ) \ |
1199 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_6_PRICE, 0x84D5, "Rx Tier 13 Block 6 Price" ) \ |
1200 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_7_PRICE, 0x84D6, "Rx Tier 13 Block 7 Price" ) \ |
1201 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_8_PRICE, 0x84D7, "Rx Tier 13 Block 8 Price" ) \ |
1202 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_9_PRICE, 0x84D8, "Rx Tier 13 Block 9 Price" ) \ |
1203 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_10_PRICE, 0x84D9, "Rx Tier 13 Block 10 Price" ) \ |
1204 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_11_PRICE, 0x84DA, "Rx Tier 13 Block 11 Price" ) \ |
1205 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_12_PRICE, 0x84DB, "Rx Tier 13 Block 12 Price" ) \ |
1206 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_13_PRICE, 0x84DC, "Rx Tier 13 Block 13 Price" ) \ |
1207 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_14_PRICE, 0x84DD, "Rx Tier 13 Block 14 Price" ) \ |
1208 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_15_PRICE, 0x84DE, "Rx Tier 13 Block 15 Price" ) \ |
1209 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_13_BLOCK_16_PRICE, 0x84DF, "Rx Tier 13 Block 16 Price" ) \ |
1210 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_1_PRICE, 0x84E0, "Rx Tier 14 Block 1 Price" ) \ |
1211 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_2_PRICE, 0x84E1, "Rx Tier 14 Block 2 Price" ) \ |
1212 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_3_PRICE, 0x84E2, "Rx Tier 14 Block 3 Price" ) \ |
1213 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_4_PRICE, 0x84E3, "Rx Tier 14 Block 4 Price" ) \ |
1214 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_5_PRICE, 0x84E4, "Rx Tier 14 Block 5 Price" ) \ |
1215 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_6_PRICE, 0x84E5, "Rx Tier 14 Block 6 Price" ) \ |
1216 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_7_PRICE, 0x84E6, "Rx Tier 14 Block 7 Price" ) \ |
1217 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_8_PRICE, 0x84E7, "Rx Tier 14 Block 8 Price" ) \ |
1218 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_9_PRICE, 0x84E8, "Rx Tier 14 Block 9 Price" ) \ |
1219 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_10_PRICE, 0x84E9, "Rx Tier 14 Block 10 Price" ) \ |
1220 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_11_PRICE, 0x84EA, "Rx Tier 14 Block 11 Price" ) \ |
1221 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_12_PRICE, 0x84EB, "Rx Tier 14 Block 12 Price" ) \ |
1222 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_13_PRICE, 0x84EC, "Rx Tier 14 Block 13 Price" ) \ |
1223 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_14_PRICE, 0x84ED, "Rx Tier 14 Block 14 Price" ) \ |
1224 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_15_PRICE, 0x84EE, "Rx Tier 14 Block 15 Price" ) \ |
1225 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_14_BLOCK_16_PRICE, 0x84EF, "Rx Tier 14 Block 16 Price" ) \ |
1226 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_1_PRICE, 0x84F0, "Rx Tier 15 Block 1 Price" ) \ |
1227 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_2_PRICE, 0x84F1, "Rx Tier 15 Block 2 Price" ) \ |
1228 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_3_PRICE, 0x84F2, "Rx Tier 15 Block 3 Price" ) \ |
1229 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_4_PRICE, 0x84F3, "Rx Tier 15 Block 4 Price" ) \ |
1230 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_5_PRICE, 0x84F4, "Rx Tier 15 Block 5 Price" ) \ |
1231 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_6_PRICE, 0x84F5, "Rx Tier 15 Block 6 Price" ) \ |
1232 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_7_PRICE, 0x84F6, "Rx Tier 15 Block 7 Price" ) \ |
1233 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_8_PRICE, 0x84F7, "Rx Tier 15 Block 8 Price" ) \ |
1234 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_9_PRICE, 0x84F8, "Rx Tier 15 Block 9 Price" ) \ |
1235 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_10_PRICE, 0x84F9, "Rx Tier 15 Block 10 Price" ) \ |
1236 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_11_PRICE, 0x84FA, "Rx Tier 15 Block 11 Price" ) \ |
1237 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_12_PRICE, 0x84FB, "Rx Tier 15 Block 12 Price" ) \ |
1238 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_13_PRICE, 0x84FC, "Rx Tier 15 Block 13 Price" ) \ |
1239 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_14_PRICE, 0x84FD, "Rx Tier 15 Block 14 Price" ) \ |
1240 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_15_PRICE, 0x84FE, "Rx Tier 15 Block 15 Price" ) \ |
1241 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_TIER_15_BLOCK_16_PRICE, 0x84FF, "Rx Tier 15 Block 16 Price" ) \ |
1242 | | /* Received Extended Price Information Attribute Set */ \ |
1243 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_16, 0x850F, "Received Price Tier 16" ) \ |
1244 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_17, 0x8510, "Received Price Tier 17" ) \ |
1245 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_18, 0x8511, "Received Price Tier 18" ) \ |
1246 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_19, 0x8512, "Received Price Tier 19" ) \ |
1247 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_20, 0x8513, "Received Price Tier 20" ) \ |
1248 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_21, 0x8514, "Received Price Tier 21" ) \ |
1249 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_22, 0x8515, "Received Price Tier 22" ) \ |
1250 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_23, 0x8516, "Received Price Tier 23" ) \ |
1251 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_24, 0x8517, "Received Price Tier 24" ) \ |
1252 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_25, 0x8518, "Received Price Tier 25" ) \ |
1253 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_26, 0x8519, "Received Price Tier 26" ) \ |
1254 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_27, 0x851A, "Received Price Tier 27" ) \ |
1255 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_28, 0x851B, "Received Price Tier 28" ) \ |
1256 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_29, 0x851C, "Received Price Tier 29" ) \ |
1257 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_30, 0x851D, "Received Price Tier 30" ) \ |
1258 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_31, 0x851E, "Received Price Tier 31" ) \ |
1259 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_32, 0x851F, "Received Price Tier 32" ) \ |
1260 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_33, 0x8520, "Received Price Tier 33" ) \ |
1261 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_34, 0x8521, "Received Price Tier 34" ) \ |
1262 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_35, 0x8522, "Received Price Tier 35" ) \ |
1263 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_36, 0x8523, "Received Price Tier 36" ) \ |
1264 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_37, 0x8524, "Received Price Tier 37" ) \ |
1265 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_38, 0x8525, "Received Price Tier 38" ) \ |
1266 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_39, 0x8526, "Received Price Tier 39" ) \ |
1267 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_40, 0x8527, "Received Price Tier 40" ) \ |
1268 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_41, 0x8528, "Received Price Tier 41" ) \ |
1269 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_42, 0x8529, "Received Price Tier 42" ) \ |
1270 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_43, 0x852A, "Received Price Tier 43" ) \ |
1271 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_44, 0x852B, "Received Price Tier 44" ) \ |
1272 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_45, 0x852C, "Received Price Tier 45" ) \ |
1273 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_46, 0x852D, "Received Price Tier 46" ) \ |
1274 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_47, 0x852E, "Received Price Tier 47" ) \ |
1275 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_PRICE_TIER_48, 0x852F, "Received Price Tier 48" ) \ |
1276 | | /* Received Tariff Information Attribute Set */ \ |
1277 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TARIFF_LABEL, 0x8610, "Received Tariff label" ) \ |
1278 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NUM_OF_PRICE_TIERS_IN_USE, 0x8611, "Received Number of Tariff Tiers in Use" ) \ |
1279 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_NUM_OF_BLOCK_THRES_IN_USE, 0x8612, "Received Number of Block Thresholds in Use" ) \ |
1280 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TIER_BLOCK_MODE, 0x8613, "Received Tier Block Mode" ) \ |
1281 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_TARIFF_RES_PERIOD, 0x8615, "Received tariff Resolution Period" ) \ |
1282 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2, 0x8625, "Received CO2" ) \ |
1283 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2_UNIT, 0x8626, "Received CO2 Unit" ) \ |
1284 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RECEIVED_CO2_TRAILING_DIGIT, 0x8627, "Received CO2 Trailing Digit" ) \ |
1285 | | /* Received Billing Information Attribute Set */ \ |
1286 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_CURRENT_BILLING_PERIOD_START, 0x8700, "Received Current Billing Period Start" ) \ |
1287 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_CURRENT_BILLING_PERIOD_DUR, 0x8701, "Received Current Billing Period Duration" ) \ |
1288 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_LAST_BILLING_PERIOD_START, 0x8702, "Received Last Billing Period Start" ) \ |
1289 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_RX_LAST_BILLING_PERIOD_CON_BILL, 0x8704, "Received Last Billing Period Consolidated Bill" ) \ |
1290 | | /* Smart Energy */ \ |
1291 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE, 0xFFFE, "Attribute Reporting Status" ) |
1292 | | |
1293 | | VALUE_STRING_ENUM(zbee_zcl_price_attr_server_names); |
1294 | | VALUE_STRING_ARRAY(zbee_zcl_price_attr_server_names); |
1295 | | static value_string_ext zbee_zcl_price_attr_server_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_price_attr_server_names); |
1296 | | |
1297 | | #define zbee_zcl_price_attr_client_names_VALUE_STRING_LIST(XXX) \ |
1298 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_PRICE_INC_RND_MINUTES, 0x0000, "Price Increase Randomize Minutes" ) \ |
1299 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_PRICE_DEC_RND_MINUTES, 0x0001, "Price Decrease Randomize Minutes" ) \ |
1300 | | XXX(ZBEE_ZCL_ATTR_ID_PRICE_CLNT_COMMODITY_TYPE, 0x0002, "Commodity Type" ) \ |
1301 | | /* Smart Energy */ \ |
1302 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE_CLNT, 0xFFFE, "Attribute Reporting Status" ) |
1303 | | |
1304 | | VALUE_STRING_ENUM(zbee_zcl_price_attr_client_names); |
1305 | | VALUE_STRING_ARRAY(zbee_zcl_price_attr_client_names); |
1306 | | |
1307 | | /* Server Commands Received */ |
1308 | | #define zbee_zcl_price_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
1309 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENT_PRICE, 0x00, "Get Current Price" ) \ |
1310 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_SCHEDULED_PRICES, 0x01, "Get Scheduled Prices" ) \ |
1311 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_ACKNOWLEDGEMENT, 0x02, "Price Acknowledgement" ) \ |
1312 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_PERIOD, 0x03, "Get Block Period(s)" ) \ |
1313 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CONVERSION_FACTOR, 0x04, "Get Conversion Factor" ) \ |
1314 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CALORIFIC_VALUE, 0x05, "Get Calorific Value" ) \ |
1315 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_INFORMATION, 0x06, "Get Tariff Information" ) \ |
1316 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_MATRIX, 0x07, "Get Price Matrix" ) \ |
1317 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_THRESHOLDS, 0x08, "Get Block Thresholds" ) \ |
1318 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CO2_VALUE, 0x09, "Get CO2 Value" ) \ |
1319 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TIER_LABELS, 0x0A, "Get Tier Labels" ) \ |
1320 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_BILLING_PERIOD, 0x0B, "Get Billing Period" ) \ |
1321 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CONSOLIDATED_BILL, 0x0C, "Get Consolidated Bill" ) \ |
1322 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_CPP_EVENT_RESPONSE, 0x0D, "CPP Event Response" ) \ |
1323 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CREDIT_PAYMENT, 0x0E, "Get Credit Payment" ) \ |
1324 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENCY_CONVERSION, 0x0F, "Get Currency Conversion" ) \ |
1325 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_CANCELLATION, 0x10, "Get Tariff Cancellation" ) |
1326 | | |
1327 | | VALUE_STRING_ENUM(zbee_zcl_price_srv_rx_cmd_names); |
1328 | | VALUE_STRING_ARRAY(zbee_zcl_price_srv_rx_cmd_names); |
1329 | | |
1330 | | /* Server Commands Generated */ |
1331 | | #define zbee_zcl_price_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
1332 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE, 0x00, "Publish Price" ) \ |
1333 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_PERIOD, 0x01, "Publish Block Period" ) \ |
1334 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONVERSION_FACTOR, 0x02, "Publish Conversion Factor" ) \ |
1335 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CALORIFIC_VALUE, 0x03, "Publish Calorific Value" ) \ |
1336 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TARIFF_INFORMATION, 0x04, "Publish Tariff Information" ) \ |
1337 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE_MATRIX, 0x05, "Publish Price Matrix" ) \ |
1338 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_THRESHOLDS, 0x06, "Publish Block Thresholds" ) \ |
1339 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CO2_VALUE, 0x07, "Publish CO2 Value" ) \ |
1340 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TIER_LABELS, 0x08, "Publish Tier Labels" ) \ |
1341 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BILLING_PERIOD, 0x09, "Publish Billing Period" ) \ |
1342 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONSOLIDATED_BILL, 0x0A, "Publish Consolidated Bill" ) \ |
1343 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CPP_EVENT, 0x0B, "Publish CPP Event" ) \ |
1344 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CREDIT_PAYMENT, 0x0C, "Publish Credit Payment" ) \ |
1345 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CURRENCY_CONVERSION, 0x0D, "Publish Currency Conversion" ) \ |
1346 | | XXX(ZBEE_ZCL_CMD_ID_PRICE_CANCEL_TARIFF, 0x0E, "Cancel Tariff" ) |
1347 | | |
1348 | | VALUE_STRING_ENUM(zbee_zcl_price_srv_tx_cmd_names); |
1349 | | VALUE_STRING_ARRAY(zbee_zcl_price_srv_tx_cmd_names); |
1350 | | |
1351 | | /* Block Period Control Field BitMap - Price Acknowledgement */ |
1352 | | #define zbee_zcl_price_block_period_control_price_acknowledgement_names_VALUE_STRING_LIST(XXX) \ |
1353 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOLEDGEMENT_NOT_REQUIRED, 0x0, "Price Acknowledgement not required" ) \ |
1354 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOLEDGEMENT_REQUIRED, 0x1, "Price Acknowledgement required" ) |
1355 | | |
1356 | | VALUE_STRING_ARRAY(zbee_zcl_price_block_period_control_price_acknowledgement_names); |
1357 | | |
1358 | | /* Block Period Control Field BitMap - Repeating Block */ |
1359 | | #define zbee_zcl_price_block_period_control_repeating_block_names_VALUE_STRING_LIST(XXX) \ |
1360 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_NON_REPEATING, 0x0, "Non Repeating Block" ) \ |
1361 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_REPEATING, 0x1, "Repeating Block" ) |
1362 | | |
1363 | | VALUE_STRING_ARRAY(zbee_zcl_price_block_period_control_repeating_block_names); |
1364 | | |
1365 | | /* Block Period DurationTimebase Enumeration */ |
1366 | | #define zbee_zcl_price_block_period_duration_timebase_names_VALUE_STRING_LIST(XXX) \ |
1367 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_MINUTE, 0x0, "Minutes" ) \ |
1368 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_DAY, 0x1, "Days" ) \ |
1369 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_WEEK, 0x2, "Weeks" ) \ |
1370 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE_MONTH, 0x3, "Months" ) |
1371 | | |
1372 | | VALUE_STRING_ARRAY(zbee_zcl_price_block_period_duration_timebase_names); |
1373 | | |
1374 | | /* Block Period Duration Control Enumeration */ |
1375 | | #define zbee_zcl_price_block_period_duration_control_names_VALUE_STRING_LIST(XXX) \ |
1376 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_START_OF_TIMEBASE, 0x0, "Start of Timebase" ) \ |
1377 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_END_OF_TIMEBASE, 0x1, "End of Timebase" ) \ |
1378 | | XXX(ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL_NOT_SPECIFIED, 0x2, "Not Specified" ) |
1379 | | |
1380 | | VALUE_STRING_ARRAY(zbee_zcl_price_block_period_duration_control_names); |
1381 | | |
1382 | | /* Tariff Type Enumeration */ |
1383 | | #define zbee_zcl_price_tariff_type_names_VALUE_STRING_LIST(XXX) \ |
1384 | | XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_DELIVERED_TARIFF, 0x0, "Delivered Tariff" ) \ |
1385 | | XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_RECEIVED_TARIFF, 0x1, "Received Tariff" ) \ |
1386 | | XXX(ZBEE_ZCL_PRICE_TARIFF_TYPE_DELIVERED_AND_RECEIVED_TARIFF, 0x2, "delivered and Received Tariff" ) |
1387 | | |
1388 | | VALUE_STRING_ARRAY(zbee_zcl_price_tariff_type_names); |
1389 | | |
1390 | | /* Tariff Resolution Period Enumeration */ |
1391 | | #define zbee_zcl_price_tariff_resolution_period_names_VALUE_STRING_LIST(XXX) \ |
1392 | | XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED, 0x00, "Not Defined" ) \ |
1393 | | XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD, 0x01, "Block Period" ) \ |
1394 | | XXX(ZBEE_ZCL_PRICE_TARIFF_RESOLUTION_PERIOD_1_DAY, 0x02, "1 Day" ) |
1395 | | |
1396 | | VALUE_STRING_ARRAY(zbee_zcl_price_tariff_resolution_period_names); |
1397 | | |
1398 | | /* Tariff Charging Scheme Enumeration */ |
1399 | | #define zbee_zcl_price_tariff_charging_scheme_names_VALUE_STRING_LIST(XXX) \ |
1400 | | XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_TOU_TARIFF, 0x0, "TOU Tariff" ) \ |
1401 | | XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TARIFF, 0x1, "Block Tariff" ) \ |
1402 | | XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TOU_WITH_COMMON_THRES, 0x2, "Block/TOU Tariff with common thresholds" ) \ |
1403 | | XXX(ZBEE_ZCL_PRICE_TARIFF_CHARGING_SCHEME_BLOCK_TOU_WITH_INDIV_TRHES, 0x3, "Block/TOU Tariff with individual thresholds per tier" ) |
1404 | | |
1405 | | VALUE_STRING_ARRAY(zbee_zcl_price_tariff_charging_scheme_names); |
1406 | | |
1407 | | /* Tariff Type */ |
1408 | 15 | #define ZBEE_ZCL_PRICE_TARIFF_TYPE 0x0F |
1409 | | |
1410 | | /* Trailing Digit and Price Tier */ |
1411 | 15 | #define ZBEE_ZCL_PRICE_TIER 0x0F |
1412 | 15 | #define ZBEE_ZCL_PRICE_TRAILING_DIGIT 0xF0 |
1413 | | |
1414 | | /* Number of Price Tiers and Register Tier */ |
1415 | 15 | #define ZBEE_ZCL_PRICE_REGISTER_TIER 0x0F |
1416 | 15 | #define ZBEE_ZCL_PRICE_NUMBER_OF_PRICE_TIERS 0xF0 |
1417 | | |
1418 | | /* Alternate Cost Trailing Digit */ |
1419 | 15 | #define ZBEE_ZCL_PRICE_ALTERNATE_COST_TRAILING_DIGIT 0xF0 |
1420 | | |
1421 | | /* Block Period Duration Type */ |
1422 | 15 | #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE 0x0F |
1423 | 15 | #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL 0xF0 |
1424 | | |
1425 | | /* Block Period Control Field BitMap */ |
1426 | 15 | #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT 0x01 |
1427 | 15 | #define ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK 0x02 |
1428 | | |
1429 | | /* Conversion Factor Trailing Digit */ |
1430 | 15 | #define ZBEE_ZCL_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT 0xF0 |
1431 | | |
1432 | | /* Calorific Value Trailing Digit */ |
1433 | 15 | #define ZBEE_ZCL_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT 0xF0 |
1434 | | |
1435 | | /* Tariff Type / Charging Scheme */ |
1436 | 15 | #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_TYPE 0x0F |
1437 | 15 | #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_CHARGING_SCHEME 0xF0 |
1438 | | |
1439 | | /* Tariff Information Price Trailing Digit */ |
1440 | 15 | #define ZBEE_ZCL_PRICE_TARIFF_INFORMATION_PRICE_TRAILING_DIGIT 0xF0 |
1441 | | |
1442 | | /* Price Matrix Tier/Block ID */ |
1443 | 15 | #define ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_BLOCK 0x0F |
1444 | 15 | #define ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_TIER 0xF0 |
1445 | | |
1446 | | /* Block Thresholds Tier/Number of Block Thresholds */ |
1447 | 237 | #define ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS 0x0F |
1448 | 15 | #define ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_TIER 0xF0 |
1449 | | |
1450 | | /* CO2 Value Trailing Digit */ |
1451 | 15 | #define ZBEE_ZCL_PRICE_CO2_VALUE_TRAILING_DIGIT 0xF0 |
1452 | | |
1453 | | /* Billing Period Duration Type */ |
1454 | 15 | #define ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_TIMEBASE 0x0F |
1455 | 15 | #define ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_CONTROL 0xF0 |
1456 | | |
1457 | | /* Billing Period Tariff Type */ |
1458 | | #define ZBEE_ZCL_PRICE_BILLING_PERIOD_TARIFF_TYPE 0x0F |
1459 | | |
1460 | | /* Consolidated Bill Trailing Digit */ |
1461 | 15 | #define ZBEE_ZCL_PRICE_CONSOLIDATED_BILL_TRAILING_DIGIT 0xF0 |
1462 | | |
1463 | | /*************************/ |
1464 | | /* Function Declarations */ |
1465 | | /*************************/ |
1466 | | void proto_register_zbee_zcl_price(void); |
1467 | | void proto_reg_handoff_zbee_zcl_price(void); |
1468 | | |
1469 | | /* Command Dissector Helpers */ |
1470 | | static void dissect_zcl_price_get_current_price (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1471 | | static void dissect_zcl_price_get_scheduled_prices (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1472 | | static void dissect_zcl_price_get_price_acknowledgement (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1473 | | static void dissect_zcl_price_get_block_period (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1474 | | static void dissect_zcl_price_get_conversion_factor (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1475 | | static void dissect_zcl_price_get_calorific_value (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1476 | | static void dissect_zcl_price_get_tariff_information (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1477 | | static void dissect_zcl_price_get_price_matrix (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1478 | | static void dissect_zcl_price_get_block_thresholds (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1479 | | static void dissect_zcl_price_get_co2_value (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1480 | | static void dissect_zcl_price_get_tier_labels (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1481 | | static void dissect_zcl_price_get_billing_period (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1482 | | static void dissect_zcl_price_get_consolidated_bill (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1483 | | static void dissect_zcl_price_get_cpp_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1484 | | static void dissect_zcl_price_get_credit_payment (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1485 | | static void dissect_zcl_price_publish_price (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1486 | | static void dissect_zcl_price_publish_block_period (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1487 | | static void dissect_zcl_price_publish_conversion_factor (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1488 | | static void dissect_zcl_price_publish_calorific_value (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1489 | | static void dissect_zcl_price_publish_tariff_information (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1490 | | static void dissect_zcl_price_publish_price_matrix (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1491 | | static void dissect_zcl_price_publish_block_thresholds (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1492 | | static void dissect_zcl_price_publish_co2_value (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1493 | | static void dissect_zcl_price_publish_tier_labels (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1494 | | static void dissect_zcl_price_publish_billing_period (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1495 | | static void dissect_zcl_price_publish_consolidated_bill (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1496 | | static void dissect_zcl_price_publish_cpp_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1497 | | static void dissect_zcl_price_publish_credit_payment (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1498 | | static void dissect_zcl_price_publish_currency_conversion (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1499 | | static void dissect_zcl_price_publish_cancel_tariff (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
1500 | | |
1501 | | /*************************/ |
1502 | | /* Global Variables */ |
1503 | | /*************************/ |
1504 | | |
1505 | | /* Initialize the protocol and registered fields */ |
1506 | | static int proto_zbee_zcl_price; |
1507 | | |
1508 | | static int hf_zbee_zcl_price_srv_tx_cmd_id; |
1509 | | static int hf_zbee_zcl_price_srv_rx_cmd_id; |
1510 | | static int hf_zbee_zcl_price_attr_server_id; |
1511 | | static int hf_zbee_zcl_price_attr_client_id; |
1512 | | static int hf_zbee_zcl_price_attr_reporting_status; |
1513 | | static int hf_zbee_zcl_price_provider_id; |
1514 | | static int hf_zbee_zcl_price_issuer_event_id; |
1515 | | static int hf_zbee_zcl_price_min_issuer_event_id; |
1516 | | static int hf_zbee_zcl_price_issuer_tariff_id; |
1517 | | static int hf_zbee_zcl_price_command_index; |
1518 | | static int hf_zbee_zcl_price_total_number_of_commands; |
1519 | | static int hf_zbee_zcl_price_number_of_commands; |
1520 | | static int hf_zbee_zcl_price_number_of_events; |
1521 | | static int hf_zbee_zcl_price_number_of_records; |
1522 | | static int hf_zbee_zcl_price_number_of_block_thresholds; |
1523 | | static int hf_zbee_zcl_price_number_of_generation_tiers; |
1524 | | static int hf_zbee_zcl_price_extended_number_of_price_tiers; |
1525 | | static int hf_zbee_zcl_price_command_options; |
1526 | | static int hf_zbee_zcl_price_control; |
1527 | | static int hf_zbee_zcl_price_tier; |
1528 | | static int hf_zbee_zcl_price_tariff_type_mask; |
1529 | | static int hf_zbee_zcl_price_tariff_type; |
1530 | | static int hf_zbee_zcl_price_tariff_resolution_period; |
1531 | | static int hf_zbee_zcl_price_cpp_auth; |
1532 | | static int hf_zbee_zcl_price_cpp_price_tier; |
1533 | | static int hf_zbee_zcl_price_rate_label; |
1534 | | static int hf_zbee_zcl_price_unit_of_measure; |
1535 | | static int hf_zbee_zcl_price_currency; |
1536 | | static int hf_zbee_zcl_price_trailing_digit_and_price_tier; |
1537 | | static int hf_zbee_zcl_price_trailing_digit; |
1538 | | static int hf_zbee_zcl_price_extended_price_tier; |
1539 | | static int hf_zbee_zcl_price_number_of_price_tiers_and_register_tier; |
1540 | | static int hf_zbee_zcl_price_register_tier; |
1541 | | static int hf_zbee_zcl_price_number_of_price_tiers; |
1542 | | static int hf_zbee_zcl_price_extended_register_tier; |
1543 | | static int hf_zbee_zcl_price_duration_in_minutes; |
1544 | | static int hf_zbee_zcl_price; |
1545 | | static int hf_zbee_zcl_price_ratio; |
1546 | | static int hf_zbee_zcl_price_generation_price; |
1547 | | static int hf_zbee_zcl_price_generation_price_ratio; |
1548 | | static int hf_zbee_zcl_price_generation_tier; |
1549 | | static int hf_zbee_zcl_price_alternate_cost_delivered; |
1550 | | static int hf_zbee_zcl_price_alternate_cost_unit; |
1551 | | static int hf_zbee_zcl_price_alternate_cost_trailing_digit_mask; |
1552 | | static int hf_zbee_zcl_price_alternate_cost_trailing_digit; |
1553 | | static int hf_zbee_zcl_price_start_time; |
1554 | | static int hf_zbee_zcl_price_start_time_with_cancel; |
1555 | | static int hf_zbee_zcl_price_earliest_start_time; |
1556 | | static int hf_zbee_zcl_price_latest_end_time; |
1557 | | static int hf_zbee_zcl_price_current_time; |
1558 | | static int hf_zbee_zcl_price_price_ack_time; |
1559 | | static int hf_zbee_zcl_price_block_period_start_time; |
1560 | | static int hf_zbee_zcl_price_block_period_duration; |
1561 | | static int hf_zbee_zcl_price_block_period_duration_type; |
1562 | | static int hf_zbee_zcl_price_block_period_duration_timebase; |
1563 | | static int hf_zbee_zcl_price_block_period_duration_control; |
1564 | | static int hf_zbee_zcl_price_block_period_control; |
1565 | | static int hf_zbee_zcl_price_block_period_control_price_acknowledgement; |
1566 | | static int hf_zbee_zcl_price_block_period_control_repeating_block; |
1567 | | static int hf_zbee_zcl_price_conversion_factor; |
1568 | | static int hf_zbee_zcl_price_conversion_factor_trailing_digit_mask; |
1569 | | static int hf_zbee_zcl_price_conversion_factor_trailing_digit; |
1570 | | static int hf_zbee_zcl_price_calorific_value; |
1571 | | static int hf_zbee_zcl_price_calorific_value_unit; |
1572 | | static int hf_zbee_zcl_price_calorific_value_trailing_digit_mask; |
1573 | | static int hf_zbee_zcl_price_calorific_value_trailing_digit; |
1574 | | static int hf_zbee_zcl_price_tariff_information_type_and_charging_scheme; |
1575 | | static int hf_zbee_zcl_price_tariff_information_type; |
1576 | | static int hf_zbee_zcl_price_tariff_information_charging_scheme; |
1577 | | static int hf_zbee_zcl_price_tariff_information_tariff_label; |
1578 | | static int hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use; |
1579 | | static int hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use; |
1580 | | static int hf_zbee_zcl_price_tariff_information_price_trailing_digit_mask; |
1581 | | static int hf_zbee_zcl_price_tariff_information_price_trailing_digit; |
1582 | | static int hf_zbee_zcl_price_tariff_information_standing_charge; |
1583 | | static int hf_zbee_zcl_price_tariff_information_tier_block_mode; |
1584 | | static int hf_zbee_zcl_price_tariff_information_block_threshold_multiplier; |
1585 | | static int hf_zbee_zcl_price_tariff_information_block_threshold_divisor; |
1586 | | static int hf_zbee_zcl_price_price_matrix_sub_payload_control; |
1587 | | static int hf_zbee_zcl_price_price_matrix_tier_block_id; |
1588 | | static int hf_zbee_zcl_price_price_matrix_tier_block_id_block; |
1589 | | static int hf_zbee_zcl_price_price_matrix_tier_block_id_tier; |
1590 | | static int hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier; |
1591 | | static int hf_zbee_zcl_price_price_matrix_price; |
1592 | | static int hf_zbee_zcl_price_block_thresholds_sub_payload_control; |
1593 | | static int hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds; |
1594 | | static int hf_zbee_zcl_price_block_thresholds_tier; |
1595 | | static int hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds; |
1596 | | static int hf_zbee_zcl_price_block_thresholds_block_threshold; |
1597 | | static int hf_zbee_zcl_price_co2_value; |
1598 | | static int hf_zbee_zcl_price_co2_unit; |
1599 | | static int hf_zbee_zcl_price_co2_value_trailing_digit_mask; |
1600 | | static int hf_zbee_zcl_price_co2_value_trailing_digit; |
1601 | | static int hf_zbee_zcl_price_tier_labels_number_of_labels; |
1602 | | static int hf_zbee_zcl_price_tier_labels_tier_id; |
1603 | | static int hf_zbee_zcl_price_tier_labels_tier_label; |
1604 | | static int hf_zbee_zcl_price_billing_period_start_time; |
1605 | | static int hf_zbee_zcl_price_billing_period_duration; |
1606 | | static int hf_zbee_zcl_price_billing_period_duration_type; |
1607 | | static int hf_zbee_zcl_price_billing_period_duration_timebase; |
1608 | | static int hf_zbee_zcl_price_billing_period_duration_control; |
1609 | | static int hf_zbee_zcl_price_consolidated_bill; |
1610 | | static int hf_zbee_zcl_price_consolidated_bill_trailing_digit_mask; |
1611 | | static int hf_zbee_zcl_price_consolidated_bill_trailing_digit; |
1612 | | static int hf_zbee_zcl_price_credit_payment_due_date; |
1613 | | static int hf_zbee_zcl_price_credit_payment_overdue_amount; |
1614 | | static int hf_zbee_zcl_price_credit_payment_status; |
1615 | | static int hf_zbee_zcl_price_credit_payment; |
1616 | | static int hf_zbee_zcl_price_credit_payment_date; |
1617 | | static int hf_zbee_zcl_price_credit_payment_ref; |
1618 | | static int hf_zbee_zcl_price_old_currency; |
1619 | | static int hf_zbee_zcl_price_new_currency; |
1620 | | static int hf_zbee_zcl_price_currency_change_control_flags; |
1621 | | |
1622 | | /* Initialize the subtree pointers */ |
1623 | | static int ett_zbee_zcl_price; |
1624 | | static int ett_zbee_zcl_price_tariff_type; |
1625 | | static int ett_zbee_zcl_price_trailing_digit_and_price_tier; |
1626 | | static int ett_zbee_zcl_price_number_of_price_tiers_and_register_tier; |
1627 | | static int ett_zbee_zcl_price_alternate_cost_trailing_digit; |
1628 | | static int ett_zbee_zcl_price_block_period_control; |
1629 | | static int ett_zbee_zcl_price_block_period_duration_type; |
1630 | | static int ett_zbee_zcl_price_conversion_factor_trailing_digit; |
1631 | | static int ett_zbee_zcl_price_calorific_value_trailing_digit; |
1632 | | static int ett_zbee_zcl_price_tariff_information_tariff_type_and_charging_scheme; |
1633 | | static int ett_zbee_zcl_price_tariff_information_price_trailing_digit; |
1634 | | static int ett_zbee_zcl_price_price_matrix_tier_block_id; |
1635 | | static int ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds; |
1636 | | static int ett_zbee_zcl_price_co2_value_trailing_digit; |
1637 | | static int ett_zbee_zcl_price_billing_period_duration_type; |
1638 | | static int ett_zbee_zcl_price_consolidated_bill_trailing_digit; |
1639 | | |
1640 | | static int * const zbee_zcl_price_billing_period_duration_type[] = { |
1641 | | &hf_zbee_zcl_price_billing_period_duration_timebase, |
1642 | | &hf_zbee_zcl_price_billing_period_duration_control, |
1643 | | NULL |
1644 | | }; |
1645 | | |
1646 | | static int * const zbee_zcl_price_block_period_duration_type[] = { |
1647 | | &hf_zbee_zcl_price_block_period_duration_timebase, |
1648 | | &hf_zbee_zcl_price_block_period_duration_control, |
1649 | | NULL |
1650 | | }; |
1651 | | |
1652 | | static int * const zbee_zcl_price_block_period_control[] = { |
1653 | | &hf_zbee_zcl_price_block_period_control_price_acknowledgement, |
1654 | | &hf_zbee_zcl_price_block_period_control_repeating_block, |
1655 | | NULL |
1656 | | }; |
1657 | | |
1658 | | static int * const zbee_zcl_price_tariff_type_mask[] = { |
1659 | | &hf_zbee_zcl_price_tariff_type, |
1660 | | NULL |
1661 | | }; |
1662 | | |
1663 | | /*************************/ |
1664 | | /* Function Bodies */ |
1665 | | /*************************/ |
1666 | | |
1667 | | /** |
1668 | | *This function is called by ZCL foundation dissector in order to decode |
1669 | | * |
1670 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1671 | | *@param tvb pointer to buffer containing raw packet. |
1672 | | *@param offset pointer to buffer offset |
1673 | | *@param attr_id attribute identifier |
1674 | | *@param data_type attribute data type |
1675 | | *@param client_attr ZCL client |
1676 | | */ |
1677 | | static void |
1678 | | dissect_zcl_price_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
1679 | 166 | { |
1680 | 166 | switch (attr_id) { |
1681 | | /* applies to all SE clusters */ |
1682 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PRICE: |
1683 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
1684 | 0 | *offset += 1; |
1685 | 0 | break; |
1686 | | |
1687 | 166 | default: /* Catch all */ |
1688 | 166 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
1689 | 166 | break; |
1690 | 166 | } |
1691 | 166 | } /*dissect_zcl_price_attr_data*/ |
1692 | | |
1693 | | /** |
1694 | | *ZigBee ZCL Price cluster dissector for wireshark. |
1695 | | * |
1696 | | *@param tvb pointer to buffer containing raw packet. |
1697 | | *@param pinfo pointer to packet information fields |
1698 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1699 | | */ |
1700 | | static int |
1701 | | dissect_zbee_zcl_price(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
1702 | 26 | { |
1703 | 26 | proto_tree *payload_tree; |
1704 | 26 | zbee_zcl_packet *zcl; |
1705 | 26 | unsigned offset = 0; |
1706 | 26 | uint8_t cmd_id; |
1707 | 26 | int rem_len; |
1708 | | |
1709 | | /* Reject the packet if data is NULL */ |
1710 | 26 | if (data == NULL) |
1711 | 0 | return 0; |
1712 | 26 | zcl = (zbee_zcl_packet *)data; |
1713 | 26 | cmd_id = zcl->cmd_id; |
1714 | | |
1715 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
1716 | 26 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
1717 | | /* Append the command name to the info column. */ |
1718 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
1719 | 3 | val_to_str_const(cmd_id, zbee_zcl_price_srv_rx_cmd_names, "Unknown Command"), |
1720 | 3 | zcl->tran_seqno); |
1721 | | |
1722 | | /* Add the command ID. */ |
1723 | 3 | proto_tree_add_uint(tree, hf_zbee_zcl_price_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
1724 | | |
1725 | | /* Check is this command has a payload, than add the payload tree */ |
1726 | 3 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
1727 | 3 | if (rem_len > 0) { |
1728 | 3 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_price, NULL, "Payload"); |
1729 | | |
1730 | | /* Call the appropriate command dissector */ |
1731 | 3 | switch (cmd_id) { |
1732 | | |
1733 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENT_PRICE: |
1734 | 0 | dissect_zcl_price_get_current_price(tvb, payload_tree, &offset); |
1735 | 0 | break; |
1736 | | |
1737 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_SCHEDULED_PRICES: |
1738 | 0 | dissect_zcl_price_get_scheduled_prices(tvb, payload_tree, &offset); |
1739 | 0 | break; |
1740 | | |
1741 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_ACKNOWLEDGEMENT: |
1742 | 0 | dissect_zcl_price_get_price_acknowledgement(tvb, payload_tree, &offset); |
1743 | 0 | break; |
1744 | | |
1745 | 1 | case ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_PERIOD: |
1746 | 1 | dissect_zcl_price_get_block_period(tvb, payload_tree, &offset); |
1747 | 1 | break; |
1748 | | |
1749 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CONVERSION_FACTOR: |
1750 | 0 | dissect_zcl_price_get_conversion_factor(tvb, payload_tree, &offset); |
1751 | 0 | break; |
1752 | | |
1753 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CALORIFIC_VALUE: |
1754 | 0 | dissect_zcl_price_get_calorific_value(tvb, payload_tree, &offset); |
1755 | 0 | break; |
1756 | | |
1757 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_INFORMATION: |
1758 | 0 | dissect_zcl_price_get_tariff_information(tvb, payload_tree, &offset); |
1759 | 0 | break; |
1760 | | |
1761 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_PRICE_MATRIX: |
1762 | 0 | dissect_zcl_price_get_price_matrix(tvb, payload_tree, &offset); |
1763 | 0 | break; |
1764 | | |
1765 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_BLOCK_THRESHOLDS: |
1766 | 0 | dissect_zcl_price_get_block_thresholds(tvb, payload_tree, &offset); |
1767 | 0 | break; |
1768 | | |
1769 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CO2_VALUE: |
1770 | 0 | dissect_zcl_price_get_co2_value(tvb, payload_tree, &offset); |
1771 | 0 | break; |
1772 | | |
1773 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_TIER_LABELS: |
1774 | 0 | dissect_zcl_price_get_tier_labels(tvb, payload_tree, &offset); |
1775 | 0 | break; |
1776 | | |
1777 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_BILLING_PERIOD: |
1778 | 0 | dissect_zcl_price_get_billing_period(tvb, payload_tree, &offset); |
1779 | 0 | break; |
1780 | | |
1781 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CONSOLIDATED_BILL: |
1782 | 0 | dissect_zcl_price_get_consolidated_bill(tvb, payload_tree, &offset); |
1783 | 0 | break; |
1784 | | |
1785 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_CPP_EVENT_RESPONSE: |
1786 | 0 | dissect_zcl_price_get_cpp_event(tvb, payload_tree, &offset); |
1787 | 0 | break; |
1788 | | |
1789 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CREDIT_PAYMENT: |
1790 | 0 | dissect_zcl_price_get_credit_payment(tvb, payload_tree, &offset); |
1791 | 0 | break; |
1792 | | |
1793 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_CURRENCY_CONVERSION: |
1794 | | /* No Payload */ |
1795 | 0 | break; |
1796 | | |
1797 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_GET_TARIFF_CANCELLATION: |
1798 | | /* No Payload */ |
1799 | 0 | break; |
1800 | | |
1801 | 2 | default: |
1802 | 2 | break; |
1803 | 3 | } |
1804 | 3 | } |
1805 | 3 | } |
1806 | 23 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
1807 | | /* Append the command name to the info column. */ |
1808 | 23 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
1809 | 23 | val_to_str_const(cmd_id, zbee_zcl_price_srv_tx_cmd_names, "Unknown Command"), |
1810 | 23 | zcl->tran_seqno); |
1811 | | |
1812 | | /* Add the command ID. */ |
1813 | 23 | proto_tree_add_uint(tree, hf_zbee_zcl_price_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
1814 | | |
1815 | | /* Check is this command has a payload, than add the payload tree */ |
1816 | 23 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
1817 | 23 | if (rem_len > 0) { |
1818 | 23 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_price, NULL, "Payload"); |
1819 | | |
1820 | | /* Call the appropriate command dissector */ |
1821 | 23 | switch (cmd_id) { |
1822 | | |
1823 | 1 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE: |
1824 | 1 | dissect_zcl_price_publish_price(tvb, payload_tree, &offset); |
1825 | 1 | break; |
1826 | | |
1827 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_PERIOD: |
1828 | 0 | dissect_zcl_price_publish_block_period(tvb, payload_tree, &offset); |
1829 | 0 | break; |
1830 | | |
1831 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONVERSION_FACTOR: |
1832 | 0 | dissect_zcl_price_publish_conversion_factor(tvb, payload_tree, &offset); |
1833 | 0 | break; |
1834 | | |
1835 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CALORIFIC_VALUE: |
1836 | 0 | dissect_zcl_price_publish_calorific_value(tvb, payload_tree, &offset); |
1837 | 0 | break; |
1838 | | |
1839 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TARIFF_INFORMATION: |
1840 | 0 | dissect_zcl_price_publish_tariff_information(tvb, payload_tree, &offset); |
1841 | 0 | break; |
1842 | | |
1843 | 4 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_PRICE_MATRIX: |
1844 | 4 | dissect_zcl_price_publish_price_matrix(tvb, payload_tree, &offset); |
1845 | 4 | break; |
1846 | | |
1847 | 15 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BLOCK_THRESHOLDS: |
1848 | 15 | dissect_zcl_price_publish_block_thresholds(tvb, payload_tree, &offset); |
1849 | 15 | break; |
1850 | | |
1851 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CO2_VALUE: |
1852 | 0 | dissect_zcl_price_publish_co2_value(tvb, payload_tree, &offset); |
1853 | 0 | break; |
1854 | | |
1855 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_TIER_LABELS: |
1856 | 0 | dissect_zcl_price_publish_tier_labels(tvb, payload_tree, &offset); |
1857 | 0 | break; |
1858 | | |
1859 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_BILLING_PERIOD: |
1860 | 0 | dissect_zcl_price_publish_billing_period(tvb, payload_tree, &offset); |
1861 | 0 | break; |
1862 | | |
1863 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CONSOLIDATED_BILL: |
1864 | 0 | dissect_zcl_price_publish_consolidated_bill(tvb, payload_tree, &offset); |
1865 | 0 | break; |
1866 | | |
1867 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CPP_EVENT: |
1868 | 0 | dissect_zcl_price_publish_cpp_event(tvb, payload_tree, &offset); |
1869 | 0 | break; |
1870 | | |
1871 | 1 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CREDIT_PAYMENT: |
1872 | 1 | dissect_zcl_price_publish_credit_payment(tvb, payload_tree, &offset); |
1873 | 1 | break; |
1874 | | |
1875 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_PUBLISH_CURRENCY_CONVERSION: |
1876 | 0 | dissect_zcl_price_publish_currency_conversion(tvb, payload_tree, &offset); |
1877 | 0 | break; |
1878 | | |
1879 | 0 | case ZBEE_ZCL_CMD_ID_PRICE_CANCEL_TARIFF: |
1880 | 0 | dissect_zcl_price_publish_cancel_tariff(tvb, payload_tree, &offset); |
1881 | 0 | break; |
1882 | | |
1883 | 2 | default: |
1884 | 2 | break; |
1885 | 23 | } |
1886 | 23 | } |
1887 | 23 | } |
1888 | | |
1889 | 7 | return tvb_captured_length(tvb); |
1890 | 26 | } /*dissect_zbee_zcl_price*/ |
1891 | | |
1892 | | /** |
1893 | | *This function manages the Get Current Price payload |
1894 | | * |
1895 | | *@param tvb pointer to buffer containing raw packet. |
1896 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1897 | | *@param offset pointer to offset from caller |
1898 | | */ |
1899 | | static void |
1900 | | dissect_zcl_price_get_current_price(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
1901 | 0 | { |
1902 | | /* Command Options */ |
1903 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_command_options, tvb, *offset, 1, ENC_NA); |
1904 | 0 | *offset += 1; |
1905 | 0 | } /*dissect_zcl_price_get_current_price*/ |
1906 | | |
1907 | | /** |
1908 | | *This function manages the Get Scheduled Prices payload |
1909 | | * |
1910 | | *@param tvb pointer to buffer containing raw packet. |
1911 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1912 | | *@param offset pointer to offset from caller |
1913 | | */ |
1914 | | static void |
1915 | | dissect_zcl_price_get_scheduled_prices(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
1916 | 0 | { |
1917 | | /* Start Time */ |
1918 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
1919 | 0 | *offset += 4; |
1920 | | |
1921 | | /* Number of Events */ |
1922 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_events, tvb, *offset, 1, ENC_NA); |
1923 | 0 | *offset += 1; |
1924 | 0 | } /*dissect_zcl_price_get_scheduled_prices*/ |
1925 | | |
1926 | | /** |
1927 | | *This function manages the Get Price Acknowledgement payload |
1928 | | * |
1929 | | *@param tvb pointer to buffer containing raw packet. |
1930 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1931 | | *@param offset pointer to offset from caller |
1932 | | */ |
1933 | | static void |
1934 | | dissect_zcl_price_get_price_acknowledgement(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
1935 | 0 | { |
1936 | | /* Provider ID */ |
1937 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
1938 | 0 | *offset += 4; |
1939 | | |
1940 | | /* Issuer Event ID */ |
1941 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
1942 | 0 | *offset += 4; |
1943 | | |
1944 | | /* Price Ack Time */ |
1945 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_price_ack_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
1946 | 0 | *offset += 4; |
1947 | | |
1948 | | /* Price Control */ |
1949 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_control, tvb, *offset, 1, ENC_NA); |
1950 | 0 | *offset += 1; |
1951 | 0 | } /*dissect_zcl_price_get_price_acknowledgement*/ |
1952 | | |
1953 | | /** |
1954 | | *This function manages the Get Block Period payload |
1955 | | * |
1956 | | *@param tvb pointer to buffer containing raw packet. |
1957 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1958 | | *@param offset pointer to offset from caller |
1959 | | */ |
1960 | | static void |
1961 | | dissect_zcl_price_get_block_period(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
1962 | 1 | { |
1963 | | /* Start Time */ |
1964 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
1965 | 1 | *offset += 4; |
1966 | | |
1967 | | /* Number of Events */ |
1968 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_events, tvb, *offset, 1, ENC_NA); |
1969 | 1 | *offset += 1; |
1970 | | |
1971 | | /* (Optional) Tariff Type */ |
1972 | 1 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
1973 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_type, tvb, *offset, 1, ENC_NA); |
1974 | 1 | *offset += 1; |
1975 | 1 | } |
1976 | 1 | } /*dissect_zcl_price_get_block_period*/ |
1977 | | |
1978 | | /** |
1979 | | *This function manages the Get Conversion Factor payload |
1980 | | * |
1981 | | *@param tvb pointer to buffer containing raw packet. |
1982 | | *@param tree pointer to data tree Wireshark uses to display packet. |
1983 | | *@param offset pointer to offset from caller |
1984 | | */ |
1985 | | static void |
1986 | | dissect_zcl_price_get_conversion_factor(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
1987 | 0 | { |
1988 | | /* Earliest Start Time */ |
1989 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
1990 | 0 | *offset += 4; |
1991 | | |
1992 | | /* Min Issuer Event ID */ |
1993 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
1994 | 0 | *offset += 4; |
1995 | | |
1996 | | /* Number of Commands */ |
1997 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
1998 | 0 | *offset += 1; |
1999 | 0 | } /*dissect_zcl_price_get_conversion_factor*/ |
2000 | | |
2001 | | /** |
2002 | | *This function manages the Get Calorific Value payload |
2003 | | * |
2004 | | *@param tvb pointer to buffer containing raw packet. |
2005 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2006 | | *@param offset pointer to offset from caller |
2007 | | */ |
2008 | | static void |
2009 | | dissect_zcl_price_get_calorific_value(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2010 | 0 | { |
2011 | | |
2012 | | /* Earliest Start Time */ |
2013 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2014 | 0 | *offset += 4; |
2015 | | |
2016 | | /* Min Issuer Event ID */ |
2017 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2018 | 0 | *offset += 4; |
2019 | | |
2020 | | /* Number of Commands */ |
2021 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
2022 | 0 | *offset += 1; |
2023 | 0 | } /*dissect_zcl_price_get_calorific_value*/ |
2024 | | |
2025 | | /** |
2026 | | *This function manages the Get Tariff Information payload |
2027 | | * |
2028 | | *@param tvb pointer to buffer containing raw packet. |
2029 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2030 | | *@param offset pointer to offset from caller |
2031 | | */ |
2032 | | static void |
2033 | | dissect_zcl_price_get_tariff_information(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2034 | 0 | { |
2035 | | /* Earliest Start Time */ |
2036 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2037 | 0 | *offset += 4; |
2038 | | |
2039 | | /* Min Issuer Event ID */ |
2040 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2041 | 0 | *offset += 4; |
2042 | | |
2043 | | /* Number of Commands */ |
2044 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
2045 | 0 | *offset += 1; |
2046 | | |
2047 | | /* Tariff Type */ |
2048 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_type, tvb, *offset, 1, ENC_NA); |
2049 | 0 | *offset += 1; |
2050 | |
|
2051 | 0 | } /*dissect_zcl_price_get_tariff_information*/ |
2052 | | |
2053 | | /** |
2054 | | *This function manages the Get Price Matrix payload |
2055 | | * |
2056 | | *@param tvb pointer to buffer containing raw packet. |
2057 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2058 | | *@param offset pointer to offset from caller |
2059 | | */ |
2060 | | static void |
2061 | | dissect_zcl_price_get_price_matrix(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2062 | 0 | { |
2063 | | /* Issuer Tariff ID */ |
2064 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2065 | 0 | *offset += 4; |
2066 | 0 | } /*dissect_zcl_price_get_price_matrix*/ |
2067 | | |
2068 | | /** |
2069 | | *This function manages the Get Block Thresholds payload |
2070 | | * |
2071 | | *@param tvb pointer to buffer containing raw packet. |
2072 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2073 | | *@param offset pointer to offset from caller |
2074 | | */ |
2075 | | static void |
2076 | | dissect_zcl_price_get_block_thresholds(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2077 | 0 | { |
2078 | | /* Issuer Tariff ID */ |
2079 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2080 | 0 | *offset += 4; |
2081 | 0 | } /*dissect_zcl_price_get_block_thresholds*/ |
2082 | | |
2083 | | /** |
2084 | | *This function manages the Get CO2 Value payload |
2085 | | * |
2086 | | *@param tvb pointer to buffer containing raw packet. |
2087 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2088 | | *@param offset pointer to offset from caller |
2089 | | */ |
2090 | | static void |
2091 | | dissect_zcl_price_get_co2_value(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2092 | 0 | { |
2093 | | /* Earliest Start Time */ |
2094 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2095 | 0 | *offset += 4; |
2096 | | |
2097 | | /* Min Issuer Event ID */ |
2098 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2099 | 0 | *offset += 4; |
2100 | | |
2101 | | /* Number of Commands */ |
2102 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
2103 | 0 | *offset += 1; |
2104 | | |
2105 | | /* (Optional) Tariff Type */ |
2106 | 0 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
2107 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_type, tvb, *offset, 1, ENC_NA); |
2108 | 0 | *offset += 1; |
2109 | 0 | } |
2110 | 0 | } /*dissect_zcl_price_get_co2_value*/ |
2111 | | |
2112 | | /** |
2113 | | *This function manages the Get Tier Labels payload |
2114 | | * |
2115 | | *@param tvb pointer to buffer containing raw packet. |
2116 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2117 | | *@param offset pointer to offset from caller |
2118 | | */ |
2119 | | static void |
2120 | | dissect_zcl_price_get_tier_labels(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2121 | 0 | { |
2122 | | /* Issuer Tariff ID */ |
2123 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2124 | 0 | *offset += 4; |
2125 | 0 | } /*dissect_zcl_price_get_tier_labels*/ |
2126 | | |
2127 | | /** |
2128 | | *This function manages the Get Billing Period payload |
2129 | | * |
2130 | | *@param tvb pointer to buffer containing raw packet. |
2131 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2132 | | *@param offset pointer to offset from caller |
2133 | | */ |
2134 | | static void |
2135 | | dissect_zcl_price_get_billing_period(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2136 | 0 | { |
2137 | | /* Earliest Start Time */ |
2138 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2139 | 0 | *offset += 4; |
2140 | | |
2141 | | /* Min Issuer Event ID */ |
2142 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2143 | 0 | *offset += 4; |
2144 | | |
2145 | | /* Number of Commands */ |
2146 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
2147 | 0 | *offset += 1; |
2148 | | |
2149 | | /* (Optional) Tariff Type */ |
2150 | 0 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
2151 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_type, tvb, *offset, 1, ENC_NA); |
2152 | 0 | *offset += 1; |
2153 | 0 | } |
2154 | |
|
2155 | 0 | } /*dissect_zcl_price_get_billing_period*/ |
2156 | | |
2157 | | /** |
2158 | | *This function manages the Get Consolidated Bill payload |
2159 | | * |
2160 | | *@param tvb pointer to buffer containing raw packet. |
2161 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2162 | | *@param offset pointer to offset from caller |
2163 | | */ |
2164 | | static void |
2165 | | dissect_zcl_price_get_consolidated_bill(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2166 | 0 | { |
2167 | | |
2168 | | /* Earliest Start Time */ |
2169 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2170 | 0 | *offset += 4; |
2171 | | |
2172 | | /* Min Issuer Event ID */ |
2173 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2174 | 0 | *offset += 4; |
2175 | | |
2176 | | /* Number of Commands */ |
2177 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_commands, tvb, *offset, 1, ENC_NA); |
2178 | 0 | *offset += 1; |
2179 | | |
2180 | | /* (Optional) Tariff Type */ |
2181 | 0 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
2182 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_type, tvb, *offset, 1, ENC_NA); |
2183 | 0 | *offset += 1; |
2184 | 0 | } |
2185 | |
|
2186 | 0 | } /*dissect_zcl_price_get_consolidated_bill*/ |
2187 | | |
2188 | | /** |
2189 | | *This function manages the Get CPP Event Response payload |
2190 | | * |
2191 | | *@param tvb pointer to buffer containing raw packet. |
2192 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2193 | | *@param offset pointer to offset from caller |
2194 | | */ |
2195 | | static void |
2196 | | dissect_zcl_price_get_cpp_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2197 | 0 | { |
2198 | | /* Issuer Event ID */ |
2199 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2200 | 0 | *offset += 4; |
2201 | | |
2202 | | /* CPP Auth */ |
2203 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_cpp_auth, tvb, *offset, 1, ENC_NA); |
2204 | 0 | *offset += 1; |
2205 | 0 | } /*dissect_zcl_price_get_event_response*/ |
2206 | | |
2207 | | /** |
2208 | | *This function manages the Get Credit Payment payload |
2209 | | * |
2210 | | *@param tvb pointer to buffer containing raw packet. |
2211 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2212 | | *@param offset pointer to offset from caller |
2213 | | */ |
2214 | | static void |
2215 | | dissect_zcl_price_get_credit_payment(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2216 | 0 | { |
2217 | | |
2218 | | /* Latest End Time */ |
2219 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_latest_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2220 | 0 | *offset += 4; |
2221 | | |
2222 | | /* Number of Records */ |
2223 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_records, tvb, *offset, 1, ENC_NA); |
2224 | 0 | *offset += 1; |
2225 | 0 | } /*dissect_zcl_price_get_credit_payment*/ |
2226 | | |
2227 | | /** |
2228 | | *This function manages the Publish Price payload |
2229 | | * |
2230 | | *@param tvb pointer to buffer containing raw packet. |
2231 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2232 | | *@param offset pointer to offset from caller |
2233 | | */ |
2234 | | static void |
2235 | | dissect_zcl_price_publish_price(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2236 | 1 | { |
2237 | 1 | int length; |
2238 | | |
2239 | 1 | static int * const trailing_digit[] = { |
2240 | 1 | &hf_zbee_zcl_price_tier, |
2241 | 1 | &hf_zbee_zcl_price_trailing_digit, |
2242 | 1 | NULL |
2243 | 1 | }; |
2244 | | |
2245 | 1 | static int * const number_of_price_tiers_and_register_tier[] = { |
2246 | 1 | &hf_zbee_zcl_price_register_tier, |
2247 | 1 | &hf_zbee_zcl_price_number_of_price_tiers, |
2248 | 1 | NULL |
2249 | 1 | }; |
2250 | | |
2251 | 1 | static int * const alternate_cost_trailing_digit[] = { |
2252 | 1 | &hf_zbee_zcl_price_alternate_cost_trailing_digit, |
2253 | 1 | NULL |
2254 | 1 | }; |
2255 | | |
2256 | | /* Provider ID */ |
2257 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2258 | 1 | *offset += 4; |
2259 | | |
2260 | | /* Rate Label */ |
2261 | 1 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_price_rate_label, tvb, *offset, 1, ENC_NA | ENC_ZIGBEE, &length); |
2262 | 1 | *offset += length; |
2263 | | |
2264 | | /* Issuer Event ID */ |
2265 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2266 | 1 | *offset += 4; |
2267 | | |
2268 | | /* Current Time */ |
2269 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_current_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2270 | 1 | *offset += 4; |
2271 | | |
2272 | | /* Unit of Measure */ |
2273 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_unit_of_measure, tvb, *offset, 1, ENC_NA); |
2274 | 1 | *offset += 1; |
2275 | | |
2276 | | /* Currency */ |
2277 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_currency, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2278 | 1 | *offset += 2; |
2279 | | |
2280 | | /* Price Trailing Digit and Price Tier */ |
2281 | 1 | 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); |
2282 | 1 | *offset += 1; |
2283 | | |
2284 | | /* Number of Price Tiers and Register Tier */ |
2285 | 1 | 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); |
2286 | 1 | *offset += 1; |
2287 | | |
2288 | | /* Start Time */ |
2289 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2290 | 1 | *offset += 4; |
2291 | | |
2292 | | /* Duration in Minutes */ |
2293 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_duration_in_minutes, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2294 | 1 | *offset += 2; |
2295 | | |
2296 | | /* Price */ |
2297 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2298 | 1 | *offset += 4; |
2299 | | |
2300 | | /* (Optional) Price Ratio */ |
2301 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2302 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_ratio, tvb, *offset, 1, ENC_NA); |
2303 | 1 | *offset += 1; |
2304 | | |
2305 | | /* (Optional) Generation Price */ |
2306 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2307 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_generation_price, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2308 | 1 | *offset += 4; |
2309 | | |
2310 | | /* (Optional) Generation Price Ratio */ |
2311 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2312 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_generation_price_ratio, tvb, *offset, 1, ENC_NA); |
2313 | 1 | *offset += 1; |
2314 | | |
2315 | | /* (Optional) Alternate Cost Delivered */ |
2316 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2317 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_alternate_cost_delivered, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2318 | 1 | *offset += 4; |
2319 | | |
2320 | | /* (Optional) Alternate Cost Unit */ |
2321 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2322 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_alternate_cost_unit, tvb, *offset, 1, ENC_NA); |
2323 | 1 | *offset += 1; |
2324 | | |
2325 | | /* (Optional) Alternate Cost Trailing Digit */ |
2326 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2327 | 1 | 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); |
2328 | 1 | *offset += 1; |
2329 | | |
2330 | | /* (Optional) Number of Block Thresholds */ |
2331 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2332 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_block_thresholds, tvb, *offset, 1, ENC_NA); |
2333 | 1 | *offset += 1; |
2334 | | |
2335 | | /* (Optional) Price Control */ |
2336 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2337 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_control, tvb, *offset, 1, ENC_NA); |
2338 | 1 | *offset += 1; |
2339 | | |
2340 | | /* (Optional) Number of Generation Tiers */ |
2341 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2342 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_number_of_generation_tiers, tvb, *offset, 1, ENC_NA); |
2343 | 1 | *offset += 1; |
2344 | | |
2345 | | /* (Optional) Generation Tier */ |
2346 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2347 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_generation_tier, tvb, *offset, 1, ENC_NA); |
2348 | 1 | *offset += 1; |
2349 | | |
2350 | | /* (Optional) Extended Number of Price Tiers */ |
2351 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2352 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_extended_number_of_price_tiers, tvb, *offset, 1, ENC_NA); |
2353 | 1 | *offset += 1; |
2354 | | |
2355 | | /* (Optional) Extended Price Tier */ |
2356 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2357 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_extended_price_tier, tvb, *offset, 1, ENC_NA); |
2358 | 1 | *offset += 1; |
2359 | | |
2360 | | /* (Optional) Extended Register Tier */ |
2361 | 1 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
2362 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_extended_register_tier, tvb, *offset, 1, ENC_NA); |
2363 | 1 | *offset += 1; |
2364 | 1 | } /*dissect_zcl_price_publish_price*/ |
2365 | | |
2366 | | /** |
2367 | | *This function manages the Publish Block Period payload |
2368 | | * |
2369 | | *@param tvb pointer to buffer containing raw packet. |
2370 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2371 | | *@param offset pointer to offset from caller |
2372 | | */ |
2373 | | static void |
2374 | | dissect_zcl_price_publish_block_period(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2375 | 0 | { |
2376 | | /* Provider ID */ |
2377 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2378 | 0 | *offset += 4; |
2379 | | |
2380 | | /* Issuer Event ID */ |
2381 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2382 | 0 | *offset += 4; |
2383 | | |
2384 | | /* Block Period Start Time */ |
2385 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_block_period_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2386 | 0 | *offset += 4; |
2387 | | |
2388 | | /* Block Period Duration */ |
2389 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_block_period_duration, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
2390 | 0 | *offset += 3; |
2391 | | |
2392 | | /* Block Period Control */ |
2393 | 0 | 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); |
2394 | 0 | *offset += 1; |
2395 | | |
2396 | | /* Block Period Duration Type */ |
2397 | 0 | 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); |
2398 | 0 | *offset += 1; |
2399 | | |
2400 | | /* Tariff Type */ |
2401 | 0 | 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); |
2402 | 0 | *offset += 1; |
2403 | | |
2404 | | /* Tariff Resolution Period */ |
2405 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_resolution_period, tvb, *offset, 1, ENC_NA); |
2406 | 0 | *offset += 1; |
2407 | 0 | } /*dissect_zcl_price_publish_block_period*/ |
2408 | | |
2409 | | /** |
2410 | | *This function manages the Publish Conversion Factor payload |
2411 | | * |
2412 | | *@param tvb pointer to buffer containing raw packet. |
2413 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2414 | | *@param offset pointer to offset from caller |
2415 | | */ |
2416 | | static void |
2417 | | dissect_zcl_price_publish_conversion_factor(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2418 | 0 | { |
2419 | 0 | static int * const conversion_factor_trailing_digit[] = { |
2420 | 0 | &hf_zbee_zcl_price_conversion_factor_trailing_digit, |
2421 | 0 | NULL |
2422 | 0 | }; |
2423 | | |
2424 | | /* Issuer Event ID */ |
2425 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2426 | 0 | *offset += 4; |
2427 | | |
2428 | | /* Start Time */ |
2429 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2430 | 0 | *offset += 4; |
2431 | | |
2432 | | /* Conversion Factor */ |
2433 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_conversion_factor, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2434 | 0 | *offset += 4; |
2435 | | |
2436 | | /* Conversion Factor Trailing digit */ |
2437 | 0 | 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); |
2438 | 0 | *offset += 1; |
2439 | 0 | } /*dissect_zcl_price_publish_conversion_factor*/ |
2440 | | |
2441 | | /** |
2442 | | *This function manages the Publish Calorific Value payload |
2443 | | * |
2444 | | *@param tvb pointer to buffer containing raw packet. |
2445 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2446 | | *@param offset pointer to offset from caller |
2447 | | */ |
2448 | | static void |
2449 | | dissect_zcl_price_publish_calorific_value(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2450 | 0 | { |
2451 | 0 | static int * const calorific_value_trailing_digit[] = { |
2452 | 0 | &hf_zbee_zcl_price_calorific_value_trailing_digit, |
2453 | 0 | NULL |
2454 | 0 | }; |
2455 | | |
2456 | | /* Issuer Event ID */ |
2457 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2458 | 0 | *offset += 4; |
2459 | | |
2460 | | /* Start Time */ |
2461 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2462 | 0 | *offset += 4; |
2463 | | |
2464 | | /* Calorific Value */ |
2465 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_calorific_value, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2466 | 0 | *offset += 4; |
2467 | | |
2468 | | /* Calorific Value Unit */ |
2469 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_calorific_value_unit, tvb, *offset, 1, ENC_NA); |
2470 | 0 | *offset += 1; |
2471 | | |
2472 | | /* Calorific Value Trailing digit */ |
2473 | 0 | 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); |
2474 | 0 | *offset += 1; |
2475 | 0 | } /*dissect_zcl_price_publish_calorific_value*/ |
2476 | | |
2477 | | /** |
2478 | | *This function manages the Publish Tariff Information payload |
2479 | | * |
2480 | | *@param tvb pointer to buffer containing raw packet. |
2481 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2482 | | *@param offset pointer to offset from caller |
2483 | | */ |
2484 | | static void |
2485 | | dissect_zcl_price_publish_tariff_information(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2486 | 0 | { |
2487 | 0 | int length; |
2488 | |
|
2489 | 0 | static int * const price_trailing_digit[] = { |
2490 | 0 | &hf_zbee_zcl_price_tariff_information_price_trailing_digit, |
2491 | 0 | NULL |
2492 | 0 | }; |
2493 | |
|
2494 | 0 | static int * const type_and_charging_scheme[] = { |
2495 | 0 | &hf_zbee_zcl_price_tariff_information_type, |
2496 | 0 | &hf_zbee_zcl_price_tariff_information_charging_scheme, |
2497 | 0 | NULL |
2498 | 0 | }; |
2499 | | |
2500 | | /* Provider ID */ |
2501 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2502 | 0 | *offset += 4; |
2503 | | |
2504 | | /* Issuer Event ID */ |
2505 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2506 | 0 | *offset += 4; |
2507 | | |
2508 | | /* Issuer Tariff ID */ |
2509 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2510 | 0 | *offset += 4; |
2511 | | |
2512 | | /* Start Time */ |
2513 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2514 | 0 | *offset += 4; |
2515 | | |
2516 | | /* Tariff Type / Charging Scheme */ |
2517 | 0 | 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); |
2518 | 0 | *offset += 1; |
2519 | | |
2520 | | /* Tariff Label */ |
2521 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_price_tariff_information_tariff_label, tvb, *offset, 1, ENC_NA|ENC_ZIGBEE, &length); |
2522 | 0 | *offset += length; |
2523 | | |
2524 | | /* Number of Price Tiers in Use */ |
2525 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use, tvb, *offset, 1, ENC_NA); |
2526 | 0 | *offset += 1; |
2527 | | |
2528 | | /* Number of Block Thresholds in Use */ |
2529 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use, tvb, *offset, 1, ENC_NA); |
2530 | 0 | *offset += 1; |
2531 | | |
2532 | | /* Unit of Measure */ |
2533 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_unit_of_measure, tvb, *offset, 1, ENC_NA); |
2534 | 0 | *offset += 1; |
2535 | | |
2536 | | /* Currency */ |
2537 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_currency, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2538 | 0 | *offset += 2; |
2539 | | |
2540 | | /* Price Trailing Digit */ |
2541 | 0 | 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); |
2542 | 0 | *offset += 1; |
2543 | | |
2544 | | /* Standing Charge */ |
2545 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_standing_charge, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2546 | 0 | *offset += 4; |
2547 | | |
2548 | | /* Tier Block Mode */ |
2549 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_tier_block_mode, tvb, *offset, 1, ENC_NA); |
2550 | 0 | *offset += 1; |
2551 | | |
2552 | | /* Block Threshold Multiplier */ |
2553 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_block_threshold_multiplier, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
2554 | 0 | *offset += 3; |
2555 | | |
2556 | | /* Block Threshold Divisor */ |
2557 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tariff_information_block_threshold_divisor, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
2558 | 0 | *offset += 3; |
2559 | 0 | } /*dissect_zcl_price_publish_tariff_information*/ |
2560 | | |
2561 | | /** |
2562 | | *This function manages the Publish Price Matrix payload |
2563 | | * |
2564 | | *@param tvb pointer to buffer containing raw packet. |
2565 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2566 | | *@param offset pointer to offset from caller |
2567 | | */ |
2568 | | static void |
2569 | | dissect_zcl_price_publish_price_matrix(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2570 | 4 | { |
2571 | 4 | uint8_t sub_payload_control; |
2572 | | |
2573 | 4 | static int * const tier_block_id[] = { |
2574 | 4 | &hf_zbee_zcl_price_price_matrix_tier_block_id_block, |
2575 | 4 | &hf_zbee_zcl_price_price_matrix_tier_block_id_tier, |
2576 | 4 | NULL |
2577 | 4 | }; |
2578 | | |
2579 | | /* Provider ID */ |
2580 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2581 | 4 | *offset += 4; |
2582 | | |
2583 | | /* Issuer Event ID */ |
2584 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2585 | 4 | *offset += 4; |
2586 | | |
2587 | | /* Start Time */ |
2588 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2589 | 4 | *offset += 4; |
2590 | | |
2591 | | /* Issuer Tariff ID */ |
2592 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2593 | 4 | *offset += 4; |
2594 | | |
2595 | | /* Command Index */ |
2596 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_command_index, tvb, *offset, 1, ENC_NA); |
2597 | 4 | *offset += 1; |
2598 | | |
2599 | | /* Total Number of Commands */ |
2600 | 4 | proto_tree_add_item(tree, hf_zbee_zcl_price_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
2601 | 4 | *offset += 1; |
2602 | | |
2603 | | /* Sub-Payload Control */ |
2604 | 4 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_price_price_matrix_sub_payload_control, tvb, *offset, 1, ENC_NA, &sub_payload_control); |
2605 | 4 | *offset += 1; |
2606 | | |
2607 | 95 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
2608 | | /* Tier/Block ID */ |
2609 | 91 | if (sub_payload_control == 0) |
2610 | 36 | 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); |
2611 | 55 | else |
2612 | 55 | proto_tree_add_item(tree, hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier, tvb, *offset, 1, ENC_NA); |
2613 | 91 | *offset += 1; |
2614 | | |
2615 | | /* Price */ |
2616 | 91 | proto_tree_add_item(tree, hf_zbee_zcl_price_price_matrix_price, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2617 | 91 | *offset += 4; |
2618 | 91 | } |
2619 | 4 | } /*dissect_zcl_price_publish_price_matrix*/ |
2620 | | |
2621 | | /** |
2622 | | *This function manages the Publish Block Thresholds payload |
2623 | | * |
2624 | | *@param tvb pointer to buffer containing raw packet. |
2625 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2626 | | *@param offset pointer to offset from caller |
2627 | | */ |
2628 | | static void |
2629 | | dissect_zcl_price_publish_block_thresholds(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2630 | 15 | { |
2631 | 15 | uint8_t sub_payload_control; |
2632 | | |
2633 | 15 | static int * const tier_number_of_block_thresholds[] = { |
2634 | 15 | &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds, |
2635 | 15 | &hf_zbee_zcl_price_block_thresholds_tier, |
2636 | 15 | NULL |
2637 | 15 | }; |
2638 | | |
2639 | 15 | static int * const number_of_block_thresholds[] = { |
2640 | 15 | &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds, |
2641 | 15 | NULL |
2642 | 15 | }; |
2643 | | |
2644 | | /* Provider ID */ |
2645 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2646 | 15 | *offset += 4; |
2647 | | |
2648 | | /* Issuer Event ID */ |
2649 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2650 | 15 | *offset += 4; |
2651 | | |
2652 | | /* Start Time */ |
2653 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2654 | 15 | *offset += 4; |
2655 | | |
2656 | | /* Issuer Tariff ID */ |
2657 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2658 | 15 | *offset += 4; |
2659 | | |
2660 | | /* Command Index */ |
2661 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_command_index, tvb, *offset, 1, ENC_NA); |
2662 | 15 | *offset += 1; |
2663 | | |
2664 | | /* Total Number of Commands */ |
2665 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_price_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
2666 | 15 | *offset += 1; |
2667 | | |
2668 | | /* Sub-Payload Control */ |
2669 | 15 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_price_block_thresholds_sub_payload_control, tvb, *offset, 1, ENC_NA, &sub_payload_control); |
2670 | 15 | *offset += 1; |
2671 | | |
2672 | 237 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
2673 | 222 | uint8_t thresholds; |
2674 | | |
2675 | | /* Tier/Number of Block Thresholds */ |
2676 | 222 | thresholds = tvb_get_uint8(tvb, *offset) & ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS; |
2677 | 222 | if (sub_payload_control == 0) |
2678 | 205 | 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); |
2679 | 17 | else |
2680 | 17 | 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); |
2681 | 222 | *offset += 1; |
2682 | | |
2683 | | /* Block Threshold(s) */ |
2684 | 576 | for (int i = 0; i < thresholds; i++) { |
2685 | 354 | proto_tree_add_item(tree, hf_zbee_zcl_price_block_thresholds_block_threshold, tvb, *offset, 6, ENC_LITTLE_ENDIAN); |
2686 | 354 | *offset += 6; |
2687 | 354 | } |
2688 | 222 | } |
2689 | 15 | } /*dissect_zcl_price_publish_block_thresholds*/ |
2690 | | |
2691 | | /** |
2692 | | *This function manages the Publish CO2 Value payload |
2693 | | * |
2694 | | *@param tvb pointer to buffer containing raw packet. |
2695 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2696 | | *@param offset pointer to offset from caller |
2697 | | */ |
2698 | | static void |
2699 | | dissect_zcl_price_publish_co2_value(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2700 | 0 | { |
2701 | 0 | static int * const co2_value_trailing_digit[] = { |
2702 | 0 | &hf_zbee_zcl_price_co2_value_trailing_digit, |
2703 | 0 | NULL |
2704 | 0 | }; |
2705 | | |
2706 | | /* Provider ID */ |
2707 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2708 | 0 | *offset += 4; |
2709 | | |
2710 | | /* Issuer Event ID */ |
2711 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2712 | 0 | *offset += 4; |
2713 | | |
2714 | | /* Start Time */ |
2715 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time_with_cancel, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2716 | 0 | *offset += 4; |
2717 | | |
2718 | | /* Tariff Type */ |
2719 | 0 | 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); |
2720 | 0 | *offset += 1; |
2721 | | |
2722 | | /* CO2 Value */ |
2723 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_co2_value, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2724 | 0 | *offset += 4; |
2725 | | |
2726 | | /* CO2 Unit */ |
2727 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_co2_unit, tvb, *offset, 1, ENC_NA); |
2728 | 0 | *offset += 1; |
2729 | | |
2730 | | /* CO2 Value Trailing Digit */ |
2731 | 0 | 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); |
2732 | 0 | *offset += 1; |
2733 | 0 | } /*dissect_zcl_price_publish_co2_value*/ |
2734 | | |
2735 | | /** |
2736 | | *This function manages the Publish Tier Labels payload |
2737 | | * |
2738 | | *@param tvb pointer to buffer containing raw packet. |
2739 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2740 | | *@param offset pointer to offset from caller |
2741 | | */ |
2742 | | static void |
2743 | | dissect_zcl_price_publish_tier_labels(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2744 | 0 | { |
2745 | 0 | uint8_t number_of_labels; |
2746 | 0 | int length; |
2747 | | |
2748 | | /* Provider ID */ |
2749 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2750 | 0 | *offset += 4; |
2751 | | |
2752 | | /* Issuer Event ID */ |
2753 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2754 | 0 | *offset += 4; |
2755 | | |
2756 | | /* Issuer Tariff ID */ |
2757 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_tariff_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2758 | 0 | *offset += 4; |
2759 | | |
2760 | | /* Command Index */ |
2761 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_command_index, tvb, *offset, 1, ENC_NA); |
2762 | 0 | *offset += 1; |
2763 | | |
2764 | | /* Total Number of Commands */ |
2765 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
2766 | 0 | *offset += 1; |
2767 | | |
2768 | | /* Number of Labels */ |
2769 | 0 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_price_tier_labels_number_of_labels, tvb, *offset, 1, ENC_NA, &number_of_labels); |
2770 | 0 | *offset += 1; |
2771 | |
|
2772 | 0 | for (int i = 0; i < number_of_labels; i++) { |
2773 | | /* Tier ID */ |
2774 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_tier_labels_tier_id, tvb, *offset, 1, ENC_NA); |
2775 | 0 | *offset += 1; |
2776 | | |
2777 | | /* Tier Label */ |
2778 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_price_tier_labels_tier_label, tvb, *offset, 1, ENC_NA|ENC_ZIGBEE, &length); |
2779 | 0 | *offset += length; |
2780 | 0 | } |
2781 | 0 | } /*dissect_zcl_price_publish_tier_labels*/ |
2782 | | |
2783 | | /** |
2784 | | *This function manages the Publish Consolidated Bill payload |
2785 | | * |
2786 | | *@param tvb pointer to buffer containing raw packet. |
2787 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2788 | | *@param offset pointer to offset from caller |
2789 | | */ |
2790 | | static void |
2791 | | dissect_zcl_price_publish_billing_period(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2792 | 0 | { |
2793 | | /* Provider ID */ |
2794 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2795 | 0 | *offset += 4; |
2796 | | |
2797 | | /* Issuer Event ID */ |
2798 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2799 | 0 | *offset += 4; |
2800 | | |
2801 | | /* Billing Period Start Time */ |
2802 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_billing_period_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2803 | 0 | *offset += 4; |
2804 | | |
2805 | | /* Billing Period Duration */ |
2806 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_billing_period_duration, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
2807 | 0 | *offset += 3; |
2808 | | |
2809 | | /* Billing Period Duration Type */ |
2810 | 0 | 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); |
2811 | 0 | *offset += 1; |
2812 | | |
2813 | | /* Tariff Type */ |
2814 | 0 | 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); |
2815 | 0 | *offset += 1; |
2816 | 0 | } /*dissect_zcl_price_publish_billing_period*/ |
2817 | | |
2818 | | /** |
2819 | | *This function manages the Publish Consolidated Bill payload |
2820 | | * |
2821 | | *@param tvb pointer to buffer containing raw packet. |
2822 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2823 | | *@param offset pointer to offset from caller |
2824 | | */ |
2825 | | static void |
2826 | | dissect_zcl_price_publish_consolidated_bill(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2827 | 0 | { |
2828 | 0 | static int * const bill_trailing_digit[] = { |
2829 | 0 | &hf_zbee_zcl_price_consolidated_bill_trailing_digit, |
2830 | 0 | NULL |
2831 | 0 | }; |
2832 | | |
2833 | | /* Provider ID */ |
2834 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2835 | 0 | *offset += 4; |
2836 | | |
2837 | | /* Issuer Event ID */ |
2838 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2839 | 0 | *offset += 4; |
2840 | | |
2841 | | /* Billing Period Start Time */ |
2842 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time_with_cancel, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2843 | 0 | *offset += 4; |
2844 | | |
2845 | | /* Billing Period Duration */ |
2846 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_billing_period_duration, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
2847 | 0 | *offset += 3; |
2848 | | |
2849 | | /* Billing Period Duration Type */ |
2850 | 0 | 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); |
2851 | 0 | *offset += 1; |
2852 | | |
2853 | | /* Tariff Type */ |
2854 | 0 | 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); |
2855 | 0 | *offset += 1; |
2856 | | |
2857 | | /* Consolidated Bill */ |
2858 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_consolidated_bill, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2859 | 0 | *offset += 4; |
2860 | | |
2861 | | /* Currency */ |
2862 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_currency, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2863 | 0 | *offset += 2; |
2864 | | |
2865 | | /* Bill Trailing Digit */ |
2866 | 0 | 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); |
2867 | 0 | *offset += 1; |
2868 | 0 | } /*dissect_zcl_price_publish_consolidated_bill*/ |
2869 | | /** |
2870 | | *This function manages the Publish CPP Event payload |
2871 | | * |
2872 | | *@param tvb pointer to buffer containing raw packet. |
2873 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2874 | | *@param offset pointer to offset from caller |
2875 | | */ |
2876 | | static void |
2877 | | dissect_zcl_price_publish_cpp_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2878 | 0 | { |
2879 | | /* Provider ID */ |
2880 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2881 | 0 | *offset += 4; |
2882 | | |
2883 | | /* Issuer Event ID */ |
2884 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2885 | 0 | *offset += 4; |
2886 | | |
2887 | | /* Start Time */ |
2888 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time_with_cancel, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2889 | 0 | *offset += 4; |
2890 | | |
2891 | | /* Duration in Minutes */ |
2892 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_duration_in_minutes, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2893 | 0 | *offset += 2; |
2894 | | |
2895 | | /* Tariff Type */ |
2896 | 0 | 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); |
2897 | 0 | *offset += 1; |
2898 | | |
2899 | | /* CPP Price Tier */ |
2900 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_cpp_price_tier, tvb, *offset, 1, ENC_NA); |
2901 | 0 | *offset += 1; |
2902 | | |
2903 | | /* CPP Auth */ |
2904 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_cpp_auth, tvb, *offset, 1, ENC_NA); |
2905 | 0 | *offset += 1; |
2906 | 0 | } /*dissect_zcl_price_publish_cpp_event*/ |
2907 | | |
2908 | | |
2909 | | /** |
2910 | | *This function manages the Publish Credit Payment payload |
2911 | | * |
2912 | | *@param tvb pointer to buffer containing raw packet. |
2913 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2914 | | *@param offset pointer to offset from caller |
2915 | | */ |
2916 | | static void |
2917 | | dissect_zcl_price_publish_credit_payment(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2918 | 1 | { |
2919 | 1 | int length; |
2920 | | |
2921 | | /* Provider ID */ |
2922 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2923 | 1 | *offset += 4; |
2924 | | |
2925 | | /* Issuer Event ID */ |
2926 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2927 | 1 | *offset += 4; |
2928 | | |
2929 | | /* Credit Payment Due Date */ |
2930 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_credit_payment_due_date, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2931 | 1 | *offset += 4; |
2932 | | |
2933 | | /* Credit Payment Overdue Amount */ |
2934 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_credit_payment_overdue_amount, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2935 | 1 | *offset += 4; |
2936 | | |
2937 | | /* Credit Payment Status */ |
2938 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_credit_payment_status, tvb, *offset, 1, ENC_NA); |
2939 | 1 | *offset += 1; |
2940 | | |
2941 | | /* Credit Payment */ |
2942 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_credit_payment, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2943 | 1 | *offset += 4; |
2944 | | |
2945 | | /* Credit Payment Date */ |
2946 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_price_credit_payment_date, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2947 | 1 | *offset += 4; |
2948 | | |
2949 | | /* Credit Payment Ref */ |
2950 | 1 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_price_credit_payment_ref, tvb, *offset, 1, ENC_NA|ENC_ZIGBEE, &length); |
2951 | 1 | *offset += length; |
2952 | 1 | } /*dissect_zcl_price_publish_credit_payment*/ |
2953 | | |
2954 | | /** |
2955 | | *This function manages the Publish Currency Conversion payload |
2956 | | * |
2957 | | *@param tvb pointer to buffer containing raw packet. |
2958 | | *@param tree pointer to data tree Wireshark uses to display packet. |
2959 | | *@param offset pointer to offset from caller |
2960 | | */ |
2961 | | static void |
2962 | | dissect_zcl_price_publish_currency_conversion(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
2963 | 0 | { |
2964 | |
|
2965 | 0 | static int * const conversion_factor_trailing_digit[] = { |
2966 | 0 | &hf_zbee_zcl_price_conversion_factor_trailing_digit, |
2967 | 0 | NULL |
2968 | 0 | }; |
2969 | | |
2970 | | /* Provider ID */ |
2971 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2972 | 0 | *offset += 4; |
2973 | | |
2974 | | /* Issuer Event ID */ |
2975 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2976 | 0 | *offset += 4; |
2977 | | |
2978 | | /* Start Time */ |
2979 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_start_time_with_cancel, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
2980 | 0 | *offset += 4; |
2981 | | |
2982 | | /* Old Currency */ |
2983 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_old_currency, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2984 | 0 | *offset += 2; |
2985 | | |
2986 | | /* New Currency */ |
2987 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_new_currency, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
2988 | 0 | *offset += 2; |
2989 | | |
2990 | | /* Conversion Factor */ |
2991 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_conversion_factor, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
2992 | 0 | *offset += 4; |
2993 | | |
2994 | | /* Conversion Factor Trailing digit */ |
2995 | 0 | 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); |
2996 | 0 | *offset += 1; |
2997 | | |
2998 | | /* Currency Change Control Flags */ |
2999 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_currency_change_control_flags, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
3000 | 0 | *offset += 4; |
3001 | 0 | } /*dissect_zcl_price_publish_currency_conversion*/ |
3002 | | |
3003 | | /** |
3004 | | *This function manages the Publish Cancel Tariff payload |
3005 | | * |
3006 | | *@param tvb pointer to buffer containing raw packet. |
3007 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3008 | | *@param offset pointer to offset from caller |
3009 | | */ |
3010 | | static void |
3011 | | dissect_zcl_price_publish_cancel_tariff(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
3012 | 0 | { |
3013 | | /* Provider ID */ |
3014 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
3015 | 0 | *offset += 4; |
3016 | | |
3017 | | /* Issuer Event ID */ |
3018 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_price_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
3019 | 0 | *offset += 4; |
3020 | | |
3021 | | /* Tariff Type */ |
3022 | 0 | 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); |
3023 | 0 | *offset += 1; |
3024 | 0 | } /*dissect_zcl_price_publish_cancel_tariff*/ |
3025 | | |
3026 | | /** |
3027 | | *This function registers the ZCL Price dissector |
3028 | | * |
3029 | | */ |
3030 | | void |
3031 | | proto_register_zbee_zcl_price(void) |
3032 | 15 | { |
3033 | 15 | static hf_register_info hf[] = { |
3034 | | |
3035 | 15 | { &hf_zbee_zcl_price_attr_server_id, |
3036 | 15 | { "Attribute", "zbee_zcl_se.price.attr_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &zbee_zcl_price_attr_server_names_ext, |
3037 | 15 | 0x0, NULL, HFILL } }, |
3038 | | |
3039 | 15 | { &hf_zbee_zcl_price_attr_client_id, |
3040 | 15 | { "Attribute", "zbee_zcl_se.price.attr_client_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_price_attr_client_names), |
3041 | 15 | 0x0, NULL, HFILL } }, |
3042 | | |
3043 | 15 | { &hf_zbee_zcl_price_attr_reporting_status, /* common to all SE clusters */ |
3044 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.price.attr.attr_reporting_status", |
3045 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
3046 | | |
3047 | 15 | { &hf_zbee_zcl_price_srv_tx_cmd_id, |
3048 | 15 | { "Command", "zbee_zcl_se.price.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_srv_tx_cmd_names), |
3049 | 15 | 0x00, NULL, HFILL } }, |
3050 | | |
3051 | 15 | { &hf_zbee_zcl_price_srv_rx_cmd_id, |
3052 | 15 | { "Command", "zbee_zcl_se.price.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_srv_rx_cmd_names), |
3053 | 15 | 0x00, NULL, HFILL } }, |
3054 | | |
3055 | 15 | { &hf_zbee_zcl_price_provider_id, |
3056 | 15 | { "Provider ID", "zbee_zcl_se.price.provider_id", FT_UINT32, BASE_DEC, NULL, |
3057 | 15 | 0x00, NULL, HFILL } }, |
3058 | | |
3059 | 15 | { &hf_zbee_zcl_price_issuer_event_id, |
3060 | 15 | { "Issuer Event ID", "zbee_zcl_se.price.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
3061 | 15 | 0x00, NULL, HFILL } }, |
3062 | | |
3063 | 15 | { &hf_zbee_zcl_price_min_issuer_event_id, |
3064 | 15 | { "Min Issuer Event ID", "zbee_zcl_se.price.min_issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
3065 | 15 | 0x00, NULL, HFILL } }, |
3066 | | |
3067 | 15 | { &hf_zbee_zcl_price_issuer_tariff_id, |
3068 | 15 | { "Issuer Tariff ID", "zbee_zcl_se.price.issuer_tariff_id", FT_UINT32, BASE_DEC, NULL, |
3069 | 15 | 0x00, NULL, HFILL } }, |
3070 | | |
3071 | 15 | { &hf_zbee_zcl_price_command_index, |
3072 | 15 | { "Command Index", "zbee_zcl_se.price.command_index", FT_UINT8, BASE_DEC, NULL, |
3073 | 15 | 0x00, NULL, HFILL } }, |
3074 | | |
3075 | 15 | { &hf_zbee_zcl_price_total_number_of_commands, |
3076 | 15 | { "Total Number of Commands", "zbee_zcl_se.price.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
3077 | 15 | 0x00, NULL, HFILL } }, |
3078 | | |
3079 | 15 | { &hf_zbee_zcl_price_number_of_commands, |
3080 | 15 | { "Number of Commands", "zbee_zcl_se.price.number_of_commands", FT_UINT8, BASE_DEC, NULL, |
3081 | 15 | 0x00, NULL, HFILL } }, |
3082 | | |
3083 | 15 | { &hf_zbee_zcl_price_number_of_events, |
3084 | 15 | { "Number of Events", "zbee_zcl_se.price.number_of_events", FT_UINT8, BASE_DEC, NULL, |
3085 | 15 | 0x00, NULL, HFILL } }, |
3086 | | |
3087 | 15 | { &hf_zbee_zcl_price_number_of_records, |
3088 | 15 | { "Number of Records", "zbee_zcl_se.price.number_of_records", FT_UINT8, BASE_DEC, NULL, |
3089 | 15 | 0x00, NULL, HFILL } }, |
3090 | | |
3091 | 15 | { &hf_zbee_zcl_price_number_of_block_thresholds, |
3092 | 15 | { "Number of Block Thresholds", "zbee_zcl_se.price.number_of_block_thresholds", FT_UINT8, BASE_DEC, NULL, |
3093 | 15 | 0x00, NULL, HFILL } }, |
3094 | | |
3095 | 15 | { &hf_zbee_zcl_price_number_of_generation_tiers, |
3096 | 15 | { "Number of Generation Tiers", "zbee_zcl_se.price.number_of_generation_tiers", FT_UINT8, BASE_DEC, NULL, |
3097 | 15 | 0x00, NULL, HFILL } }, |
3098 | | |
3099 | 15 | { &hf_zbee_zcl_price_extended_number_of_price_tiers, |
3100 | 15 | { "Extended Number of Price Tiers", "zbee_zcl_se.price.extended_number_of_price_tiers", FT_UINT8, BASE_DEC, NULL, |
3101 | 15 | 0x00, NULL, HFILL } }, |
3102 | | |
3103 | 15 | { &hf_zbee_zcl_price_command_options, |
3104 | 15 | { "Command Options", "zbee_zcl_se.price.command_options", FT_UINT8, BASE_HEX, NULL, |
3105 | 15 | 0x00, NULL, HFILL } }, |
3106 | | |
3107 | 15 | { &hf_zbee_zcl_price_control, |
3108 | 15 | { "Price Control", "zbee_zcl_se.price.control", FT_UINT8, BASE_HEX, NULL, |
3109 | 15 | 0x00, NULL, HFILL } }, |
3110 | | |
3111 | | /* start Tariff Type fields */ |
3112 | 15 | { &hf_zbee_zcl_price_tariff_type_mask, |
3113 | 15 | { "Tariff Type", "zbee_zcl_se.price.tariff_type_mask", FT_UINT8, BASE_HEX, NULL, |
3114 | 15 | 0x00, NULL, HFILL } }, |
3115 | | |
3116 | 15 | { &hf_zbee_zcl_price_tariff_type, |
3117 | 15 | { "Tariff Type", "zbee_zcl_se.price.tariff_type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_type_names), |
3118 | 15 | ZBEE_ZCL_PRICE_TARIFF_TYPE, NULL, HFILL } }, |
3119 | | /* end Tariff Type fields */ |
3120 | | |
3121 | 15 | { &hf_zbee_zcl_price_tariff_resolution_period, |
3122 | 15 | { "Tariff Resolution Period", "zbee_zcl_se.price.tariff.resolution_period", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_resolution_period_names), |
3123 | 15 | 0x00, NULL, HFILL } }, |
3124 | | |
3125 | 15 | { &hf_zbee_zcl_price_cpp_price_tier, |
3126 | 15 | { "CPP Price Tier", "zbee_zcl_se.price.cpp_price_tier", FT_UINT8, BASE_DEC, NULL, |
3127 | 15 | 0x00, NULL, HFILL } }, |
3128 | | |
3129 | 15 | { &hf_zbee_zcl_price_cpp_auth, |
3130 | 15 | { "CPP Auth", "zbee_zcl_se.price.cpp_auth", FT_UINT8, BASE_DEC, NULL, |
3131 | 15 | 0x00, NULL, HFILL } }, |
3132 | | |
3133 | 15 | { &hf_zbee_zcl_price_rate_label, |
3134 | 15 | { "Rate Label", "zbee_zcl_se.price.rate_label", FT_UINT_STRING, BASE_NONE, NULL, |
3135 | 15 | 0x00, NULL, HFILL } }, |
3136 | | |
3137 | 15 | { &hf_zbee_zcl_price_unit_of_measure, |
3138 | 15 | { "Unit of Measure", "zbee_zcl_se.price.unit_of_measure", FT_UINT8, BASE_HEX, NULL, |
3139 | 15 | 0x00, NULL, HFILL } }, |
3140 | | |
3141 | 15 | { &hf_zbee_zcl_price_currency, |
3142 | 15 | { "Currency", "zbee_zcl_se.price.currency", FT_UINT16, BASE_HEX, NULL, |
3143 | 15 | 0x00, NULL, HFILL } }, |
3144 | | |
3145 | | /* start Trailing Digit and Price Tier fields */ |
3146 | 15 | { &hf_zbee_zcl_price_trailing_digit_and_price_tier, |
3147 | 15 | { "Trailing Digit and Price Tier", "zbee_zcl_se.price.trailing_digit_and_price_tier", FT_UINT8, BASE_HEX, NULL, |
3148 | 15 | 0x00, NULL, HFILL } }, |
3149 | | |
3150 | 15 | { &hf_zbee_zcl_price_tier, |
3151 | 15 | { "Price Tier", "zbee_zcl_se.price.tier", FT_UINT8, BASE_HEX, NULL, |
3152 | 15 | ZBEE_ZCL_PRICE_TIER, NULL, HFILL } }, |
3153 | | |
3154 | 15 | { &hf_zbee_zcl_price_trailing_digit, |
3155 | 15 | { "Trailing Digit", "zbee_zcl_se.price.trailing_digit", FT_UINT8, BASE_HEX, NULL, |
3156 | 15 | ZBEE_ZCL_PRICE_TRAILING_DIGIT, NULL, HFILL } }, |
3157 | | /* end Trailing Digit and Price Tier fields */ |
3158 | | |
3159 | | /* start Number of Price Tiers and Register Tier fields */ |
3160 | 15 | { &hf_zbee_zcl_price_number_of_price_tiers_and_register_tier, |
3161 | 15 | { "Number of Price Tiers and Register Tier", "zbee_zcl_se.price.number_of_price_tiers_and_register_tier", FT_UINT8, BASE_HEX, NULL, |
3162 | 15 | 0x00, NULL, HFILL } }, |
3163 | | |
3164 | 15 | { &hf_zbee_zcl_price_register_tier, |
3165 | 15 | { "Register Tier", "zbee_zcl_se.price.register_tier", FT_UINT8, BASE_HEX, NULL, |
3166 | 15 | ZBEE_ZCL_PRICE_REGISTER_TIER, NULL, HFILL } }, |
3167 | | |
3168 | 15 | { &hf_zbee_zcl_price_number_of_price_tiers, |
3169 | 15 | { "Number of Price Tiers", "zbee_zcl_se.price.number_of_price_tiers", FT_UINT8, BASE_HEX, NULL, |
3170 | 15 | ZBEE_ZCL_PRICE_NUMBER_OF_PRICE_TIERS, NULL, HFILL } }, |
3171 | | /* end Number of Price Tiers and Register Tier fields */ |
3172 | | |
3173 | 15 | { &hf_zbee_zcl_price_extended_price_tier, |
3174 | 15 | { "Extended Price Tier", "zbee_zcl_se.price.extended_price_tier", FT_UINT8, BASE_HEX, NULL, |
3175 | 15 | 0x00, NULL, HFILL } }, |
3176 | | |
3177 | 15 | { &hf_zbee_zcl_price_extended_register_tier, |
3178 | 15 | { "Extended Register Tier", "zbee_zcl_se.price.extended_register_tier", FT_UINT8, BASE_HEX, NULL, |
3179 | 15 | 0x00, NULL, HFILL } }, |
3180 | | |
3181 | 15 | { &hf_zbee_zcl_price_duration_in_minutes, |
3182 | 15 | { "Duration in Minutes", "zbee_zcl_se.price.duration_in_minutes", FT_UINT16, BASE_DEC, NULL, |
3183 | 15 | 0x00, NULL, HFILL } }, |
3184 | | |
3185 | 15 | { &hf_zbee_zcl_price, |
3186 | 15 | { "Price", "zbee_zcl_se.price.price", FT_UINT32, BASE_DEC, NULL, |
3187 | 15 | 0x00, NULL, HFILL } }, |
3188 | | |
3189 | 15 | { &hf_zbee_zcl_price_ratio, |
3190 | 15 | { "Price Ratio", "zbee_zcl_se.price.price.ratio", FT_UINT8, BASE_DEC, NULL, |
3191 | 15 | 0x00, NULL, HFILL } }, |
3192 | | |
3193 | 15 | { &hf_zbee_zcl_price_generation_price, |
3194 | 15 | { "Generation Price", "zbee_zcl_se.price.generation_price", FT_UINT32, BASE_DEC, NULL, |
3195 | 15 | 0x00, NULL, HFILL } }, |
3196 | | |
3197 | 15 | { &hf_zbee_zcl_price_generation_price_ratio, |
3198 | 15 | { "Generation Price Ratio", "zbee_zcl_se.price.generation_price.ratio", FT_UINT8, BASE_DEC, NULL, |
3199 | 15 | 0x00, NULL, HFILL } }, |
3200 | | |
3201 | 15 | { &hf_zbee_zcl_price_generation_tier, |
3202 | 15 | { "Generation Tier", "zbee_zcl_se.price.generation_tier", FT_UINT8, BASE_HEX, NULL, |
3203 | 15 | 0x00, NULL, HFILL } }, |
3204 | | |
3205 | 15 | { &hf_zbee_zcl_price_alternate_cost_delivered, |
3206 | 15 | { "Alternate Cost Delivered", "zbee_zcl_se.price.alternate_cost_delivered", FT_UINT32, BASE_DEC, NULL, |
3207 | 15 | 0x00, NULL, HFILL } }, |
3208 | | |
3209 | 15 | { &hf_zbee_zcl_price_alternate_cost_unit, |
3210 | 15 | { "Alternate Cost Unit", "zbee_zcl_se.price.alternate_cost.unit", FT_UINT8, BASE_HEX, NULL, |
3211 | 15 | 0x00, NULL, HFILL } }, |
3212 | | |
3213 | | /* start Alternate Cost Trailing Digit */ |
3214 | 15 | { &hf_zbee_zcl_price_alternate_cost_trailing_digit_mask, |
3215 | 15 | { "Alternate Cost Trailing Digit", "zbee_zcl_se.price.alternate_cost.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3216 | 15 | 0x00, NULL, HFILL } }, |
3217 | | |
3218 | 15 | { &hf_zbee_zcl_price_alternate_cost_trailing_digit, |
3219 | 15 | { "Alternate Cost Trailing Digit", "zbee_zcl_se.price.alternate_cost.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3220 | 15 | ZBEE_ZCL_PRICE_ALTERNATE_COST_TRAILING_DIGIT, NULL, HFILL } }, |
3221 | | /* end Alternate Cost Trailing Digit */ |
3222 | | |
3223 | 15 | { &hf_zbee_zcl_price_start_time, |
3224 | 15 | { "Start Time", "zbee_zcl_se.price.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3225 | 15 | TIME_VALS(now_strings), 0x00, NULL, HFILL } }, |
3226 | | |
3227 | 15 | { &hf_zbee_zcl_price_start_time_with_cancel, |
3228 | 15 | { "Start Time", "zbee_zcl_se.price.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3229 | 15 | TIME_VALS(now_or_cancel_strings), 0x00, NULL, HFILL } }, |
3230 | | |
3231 | 15 | { &hf_zbee_zcl_price_earliest_start_time, |
3232 | 15 | { "Earliest Start Time", "zbee_zcl_se.price.earliest_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3233 | 15 | NULL, 0x00, NULL, HFILL } }, |
3234 | | |
3235 | 15 | { &hf_zbee_zcl_price_latest_end_time, |
3236 | 15 | { "Latest End Time", "zbee_zcl_se.price.latest_end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3237 | 15 | NULL, 0x00, NULL, HFILL } }, |
3238 | | |
3239 | 15 | { &hf_zbee_zcl_price_current_time, |
3240 | 15 | { "Current Time", "zbee_zcl_se.price.current_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3241 | 15 | NULL, 0x00, NULL, HFILL } }, |
3242 | | |
3243 | 15 | { &hf_zbee_zcl_price_price_ack_time, |
3244 | 15 | { "Price Ack Time", "zbee_zcl_se.price.price_ack_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3245 | 15 | NULL, 0x00, NULL, HFILL } }, |
3246 | | |
3247 | 15 | { &hf_zbee_zcl_price_block_period_start_time, |
3248 | 15 | { "Block Period Start Time", "zbee_zcl_se.price.block_period.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3249 | 15 | TIME_VALS(now_or_cancel_strings), 0x00, NULL, HFILL } }, |
3250 | | |
3251 | 15 | { &hf_zbee_zcl_price_block_period_duration, |
3252 | 15 | { "Block Period Duration", "zbee_zcl_se.price.block_period.duration", FT_UINT24, BASE_DEC, NULL, |
3253 | 15 | 0x00, NULL, HFILL } }, |
3254 | | |
3255 | | /* start Block Period Control */ |
3256 | 15 | { &hf_zbee_zcl_price_block_period_control, |
3257 | 15 | { "Block Period Control", "zbee_zcl_se.price.block_period.control", FT_UINT8, BASE_HEX, NULL, |
3258 | 15 | 0x00, NULL, HFILL } }, |
3259 | | |
3260 | 15 | { &hf_zbee_zcl_price_block_period_control_price_acknowledgement, |
3261 | 15 | { "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), |
3262 | 15 | ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT, NULL, HFILL } }, |
3263 | | |
3264 | 15 | { &hf_zbee_zcl_price_block_period_control_repeating_block, |
3265 | 15 | { "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), |
3266 | 15 | ZBEE_ZCL_PRICE_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK, NULL, HFILL } }, |
3267 | | /* end Block Period Control */ |
3268 | | |
3269 | | /* start Block Period Duration Type fields */ |
3270 | 15 | { &hf_zbee_zcl_price_block_period_duration_type, |
3271 | 15 | { "Block Period Duration Type", "zbee_zcl_se.price.block_period.duration.type", FT_UINT8, BASE_HEX, NULL, |
3272 | 15 | 0x00, NULL, HFILL } }, |
3273 | | |
3274 | 15 | { &hf_zbee_zcl_price_block_period_duration_timebase, |
3275 | 15 | { "Duration Timebase", "zbee_zcl_se.price.block_period.duration.timebase", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_block_period_duration_timebase_names), |
3276 | 15 | ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_TIMEBASE, NULL, HFILL } }, |
3277 | | |
3278 | 15 | { &hf_zbee_zcl_price_block_period_duration_control, |
3279 | 15 | { "Duration Control", "zbee_zcl_se.price.block_period.duration.control", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_block_period_duration_control_names), |
3280 | 15 | ZBEE_ZCL_PRICE_BLOCK_PERIOD_DURATION_CONTROL, NULL, HFILL } }, |
3281 | | /* end Block Period Duration Type fields */ |
3282 | | |
3283 | 15 | { &hf_zbee_zcl_price_conversion_factor, |
3284 | 15 | { "Conversion Factor", "zbee_zcl_se.price.conversion_factor", FT_UINT32, BASE_DEC, NULL, |
3285 | 15 | 0x00, NULL, HFILL } }, |
3286 | | |
3287 | | /* start Conversion Factor Trailing Digit fields */ |
3288 | 15 | { &hf_zbee_zcl_price_conversion_factor_trailing_digit_mask, |
3289 | 15 | { "Conversion Factor Trailing Digit", "zbee_zcl_se.price.conversion_factor_trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3290 | 15 | 0x00, NULL, HFILL } }, |
3291 | | |
3292 | 15 | { &hf_zbee_zcl_price_conversion_factor_trailing_digit, |
3293 | 15 | { "Conversion Factor Trailing Digit", "zbee_zcl_se.price.conversion_factor.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3294 | 15 | ZBEE_ZCL_PRICE_CONVERSION_FACTOR_TRAILING_DIGIT, NULL, HFILL } }, |
3295 | | /* end Conversion Factor Trailing Digit fields */ |
3296 | | |
3297 | 15 | { &hf_zbee_zcl_price_calorific_value, |
3298 | 15 | { "Calorific Value", "zbee_zcl_se.price.calorific_value", FT_UINT32, BASE_DEC, NULL, |
3299 | 15 | 0x00, NULL, HFILL } }, |
3300 | | |
3301 | 15 | { &hf_zbee_zcl_price_calorific_value_unit, |
3302 | 15 | { "Calorific Value Unit", "zbee_zcl_se.price.calorific_value.unit", FT_UINT8, BASE_HEX, NULL, |
3303 | 15 | 0x00, NULL, HFILL } }, |
3304 | | |
3305 | | /* start Calorific Value Trailing Digit fields */ |
3306 | 15 | { &hf_zbee_zcl_price_calorific_value_trailing_digit_mask, |
3307 | 15 | { "Calorific Value Trailing Digit", "zbee_zcl_se.price.calorific_value.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3308 | 15 | 0x00, NULL, HFILL } }, |
3309 | | |
3310 | 15 | { &hf_zbee_zcl_price_calorific_value_trailing_digit, |
3311 | 15 | { "Calorific Value Trailing Digit", "zbee_zcl_se.price.calorific_value.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3312 | 15 | ZBEE_ZCL_PRICE_CALORIFIC_VALUE_TRAILING_DIGIT, NULL, HFILL } }, |
3313 | | /* end Calorific Value Trailing Digit fields */ |
3314 | | |
3315 | | /* start Tariff Information Type/Charging Scheme fields */ |
3316 | 15 | { &hf_zbee_zcl_price_tariff_information_type_and_charging_scheme, |
3317 | 15 | { "Tariff Type/Charging Scheme", "zbee_zcl_se.price.tariff_information.type_and_charging_scheme", FT_UINT8, BASE_HEX, NULL, |
3318 | 15 | 0x00, NULL, HFILL } }, |
3319 | | |
3320 | 15 | { &hf_zbee_zcl_price_tariff_information_type, |
3321 | 15 | { "Tariff Type", "zbee_zcl_se.price.tariff_information.type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_type_names), |
3322 | 15 | ZBEE_ZCL_PRICE_TARIFF_INFORMATION_TYPE, NULL, HFILL } }, |
3323 | | |
3324 | 15 | { &hf_zbee_zcl_price_tariff_information_charging_scheme, |
3325 | 15 | { "Charging Scheme", "zbee_zcl_se.price.tariff_information.charging_scheme", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_charging_scheme_names), |
3326 | 15 | ZBEE_ZCL_PRICE_TARIFF_INFORMATION_CHARGING_SCHEME, NULL, HFILL } }, |
3327 | | /* end Tariff Information Type/Charging Scheme fields */ |
3328 | | |
3329 | 15 | { &hf_zbee_zcl_price_tariff_information_tariff_label, |
3330 | 15 | { "Tariff Label", "zbee_zcl_se.price.tariff_information.tariff_label", FT_UINT_STRING, BASE_NONE, NULL, |
3331 | 15 | 0x00, NULL, HFILL } }, |
3332 | | |
3333 | 15 | { &hf_zbee_zcl_price_tariff_information_number_of_price_tiers_in_use, |
3334 | 15 | { "Number of Price Tiers in Use", "zbee_zcl_se.price.tariff_information.number_of_price_tiers_in_use", FT_UINT8, BASE_DEC, NULL, |
3335 | 15 | 0x00, NULL, HFILL } }, |
3336 | | |
3337 | 15 | { &hf_zbee_zcl_price_tariff_information_number_of_block_thresholds_in_use, |
3338 | 15 | { "Number of Block Thresholds in Use", "zbee_zcl_se.price.tariff_information.number_of_block_thresholds_in_use", FT_UINT8, BASE_DEC, NULL, |
3339 | 15 | 0x00, NULL, HFILL } }, |
3340 | | |
3341 | | /* start Price Trailing Digit fields */ |
3342 | 15 | { &hf_zbee_zcl_price_tariff_information_price_trailing_digit_mask, |
3343 | 15 | { "Price Trailing Digit", "zbee_zcl_se.price.tariff_information.price.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3344 | 15 | 0x00, NULL, HFILL } }, |
3345 | | |
3346 | 15 | { &hf_zbee_zcl_price_tariff_information_price_trailing_digit, |
3347 | 15 | { "Price Trailing Digit", "zbee_zcl_se.price.tariff_information.price.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3348 | 15 | ZBEE_ZCL_PRICE_TARIFF_INFORMATION_PRICE_TRAILING_DIGIT, NULL, HFILL } }, |
3349 | | /* start Price Trailing Digit fields */ |
3350 | | |
3351 | 15 | { &hf_zbee_zcl_price_tariff_information_standing_charge, |
3352 | 15 | { "Standing Charge", "zbee_zcl_se.price.tariff_information.standing_charge", FT_UINT32, BASE_DEC, NULL, |
3353 | 15 | 0x00, NULL, HFILL } }, |
3354 | | |
3355 | 15 | { &hf_zbee_zcl_price_tariff_information_tier_block_mode, |
3356 | 15 | { "Tier Block Mode", "zbee_zcl_se.price.tariff_information.tier_block_mode", FT_UINT8, BASE_HEX, NULL, |
3357 | 15 | 0x00, NULL, HFILL } }, |
3358 | | |
3359 | 15 | { &hf_zbee_zcl_price_block_thresholds_number_of_block_thresholds, |
3360 | 15 | { "Number of Block Thresholds", "zbee_zcl_se.price.tariff_information.number_of_block_thresholds", FT_UINT8, BASE_DEC, NULL, |
3361 | 15 | ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_NUMBER_OF_BLOCK_THRESHOLDS, NULL, HFILL } }, |
3362 | | |
3363 | 15 | { &hf_zbee_zcl_price_tariff_information_block_threshold_multiplier, |
3364 | 15 | { "Block Threshold Multiplier", "zbee_zcl_se.price.tariff_information.block_threshold_multiplier", FT_UINT24, BASE_DEC, NULL, |
3365 | 15 | 0x00, NULL, HFILL } }, |
3366 | | |
3367 | 15 | { &hf_zbee_zcl_price_tariff_information_block_threshold_divisor, |
3368 | 15 | { "Block Threshold Divisor", "zbee_zcl_se.price.tariff_information.block_threshold_divisor", FT_UINT24, BASE_DEC, NULL, |
3369 | 15 | 0x00, NULL, HFILL } }, |
3370 | | |
3371 | 15 | { &hf_zbee_zcl_price_price_matrix_sub_payload_control, |
3372 | 15 | { "Sub Payload Control", "zbee_zcl_se.price.price_matrix.sub_payload_control", FT_UINT8, BASE_DEC, NULL, |
3373 | 15 | 0x01, NULL, HFILL } }, |
3374 | | |
3375 | | /* start Tier/Block ID fields */ |
3376 | 15 | { &hf_zbee_zcl_price_price_matrix_tier_block_id, |
3377 | 15 | { "Tier/Block ID", "zbee_zcl_se.price.price_matrix.tier_block_id", FT_UINT8, BASE_HEX, NULL, |
3378 | 15 | 0x00, NULL, HFILL } }, |
3379 | | |
3380 | 15 | { &hf_zbee_zcl_price_price_matrix_tier_block_id_block, |
3381 | 15 | { "Block", "zbee_zcl_se.price.price_matrix.block", FT_UINT8, BASE_DEC, NULL, |
3382 | 15 | ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_BLOCK, NULL, HFILL } }, |
3383 | | |
3384 | 15 | { &hf_zbee_zcl_price_price_matrix_tier_block_id_tier, |
3385 | 15 | { "Tier", "zbee_zcl_se.price.price_matrix.tier", FT_UINT8, BASE_DEC, NULL, |
3386 | 15 | ZBEE_ZCL_PRICE_PRICE_MATRIX_TIER_BLOCK_ID_TIER, NULL, HFILL } }, |
3387 | | /* end Tier/Block ID fields */ |
3388 | | |
3389 | 15 | { &hf_zbee_zcl_price_price_matrix_tier_block_id_tou_tier, |
3390 | 15 | { "Tier", "zbee_zcl_se.price.price_matrix.tier", FT_UINT8, BASE_DEC, NULL, |
3391 | 15 | 0x00, NULL, HFILL } }, |
3392 | | |
3393 | 15 | { &hf_zbee_zcl_price_price_matrix_price, |
3394 | 15 | { "Price", "zbee_zcl_se.price.price_matrix.price", FT_UINT32, BASE_DEC, NULL, |
3395 | 15 | 0x00, NULL, HFILL } }, |
3396 | | |
3397 | 15 | { &hf_zbee_zcl_price_block_thresholds_sub_payload_control, |
3398 | 15 | { "Sub Payload Control", "zbee_zcl_se.price.block_thresholds.sub_payload_control", FT_UINT8, BASE_DEC, NULL, |
3399 | 15 | 0x01, NULL, HFILL } }, |
3400 | | |
3401 | | /* start Tier/Number of Block Thresholds fields */ |
3402 | 15 | { &hf_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds, |
3403 | 15 | { "Tier/Number of Block Thresholds", "zbee_zcl_se.price.block_thresholds.tier_number_of_block_thresholds", FT_UINT8, BASE_HEX, NULL, |
3404 | 15 | 0x00, NULL, HFILL } }, |
3405 | | |
3406 | 15 | { &hf_zbee_zcl_price_block_thresholds_tier, |
3407 | 15 | { "Tier", "zbee_zcl_se.price.block_thresholds.tier", FT_UINT8, BASE_DEC, NULL, |
3408 | 15 | ZBEE_ZCL_PRICE_BLOCK_THRESHOLDS_TIER, NULL, HFILL } }, |
3409 | | /* end Tier/Number of Block Thresholds fields */ |
3410 | | |
3411 | 15 | { &hf_zbee_zcl_price_block_thresholds_block_threshold, |
3412 | 15 | { "Block Threshold", "zbee_zcl_se.price.block_threshold", FT_UINT48, BASE_DEC, NULL, |
3413 | 15 | 0x00, NULL, HFILL } }, |
3414 | | |
3415 | 15 | { &hf_zbee_zcl_price_co2_value, |
3416 | 15 | { "CO2 Value", "zbee_zcl_se.price.co2.value", FT_UINT32, BASE_DEC, NULL, |
3417 | 15 | 0x00, NULL, HFILL } }, |
3418 | | |
3419 | 15 | { &hf_zbee_zcl_price_co2_unit, |
3420 | 15 | { "CO2 Unit", "zbee_zcl_se.price.co2.unit", FT_UINT8, BASE_HEX, NULL, |
3421 | 15 | 0x00, NULL, HFILL } }, |
3422 | | |
3423 | | /* start CO2 Trailing Digit fields */ |
3424 | 15 | { &hf_zbee_zcl_price_co2_value_trailing_digit_mask, |
3425 | 15 | { "CO2 Value Trailing Digit", "zbee_zcl_se.price.co2.value.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3426 | 15 | 0x00, NULL, HFILL } }, |
3427 | | |
3428 | 15 | { &hf_zbee_zcl_price_co2_value_trailing_digit, |
3429 | 15 | { "CO2 Value Trailing Digit", "zbee_zcl_se.price.co2.value.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3430 | 15 | ZBEE_ZCL_PRICE_CO2_VALUE_TRAILING_DIGIT, NULL, HFILL } }, |
3431 | | /* end CO2 Trailing Digit fields */ |
3432 | | |
3433 | 15 | { &hf_zbee_zcl_price_tier_labels_number_of_labels, |
3434 | 15 | { "Number of Labels", "zbee_zcl_se.price.tier_labels.number_of_labels", FT_UINT8, BASE_DEC, NULL, |
3435 | 15 | 0x00, NULL, HFILL } }, |
3436 | | |
3437 | 15 | { &hf_zbee_zcl_price_tier_labels_tier_id, |
3438 | 15 | { "Tier ID", "zbee_zcl_se.price.tier_labels.tier_id", FT_UINT8, BASE_DEC, NULL, |
3439 | 15 | 0x00, NULL, HFILL } }, |
3440 | | |
3441 | 15 | { &hf_zbee_zcl_price_tier_labels_tier_label, |
3442 | 15 | { "Tariff Label", "zbee_zcl_se.price.tier_labels.tier_label", FT_UINT_STRING, BASE_NONE, NULL, |
3443 | 15 | 0x00, NULL, HFILL } }, |
3444 | | |
3445 | 15 | { &hf_zbee_zcl_price_billing_period_start_time, |
3446 | 15 | { "Billing Period Start Time", "zbee_zcl_se.price.billing_period.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, |
3447 | 15 | TIME_VALS(now_or_cancel_strings), 0x00, NULL, HFILL } }, |
3448 | | |
3449 | 15 | { &hf_zbee_zcl_price_billing_period_duration, |
3450 | 15 | { "Billing Period Duration", "zbee_zcl_se.price.billing_period.duration", FT_UINT24, BASE_DEC, NULL, |
3451 | 15 | 0x00, NULL, HFILL } }, |
3452 | | |
3453 | | /* start Billing Period Duration Type fields */ |
3454 | 15 | { &hf_zbee_zcl_price_billing_period_duration_type, |
3455 | 15 | { "Billing Period Duration Type", "zbee_zcl_se.price.billing_period.duration.type", FT_UINT8, BASE_HEX, NULL, |
3456 | 15 | 0x00, NULL, HFILL } }, |
3457 | | |
3458 | 15 | { &hf_zbee_zcl_price_billing_period_duration_timebase, |
3459 | 15 | { "Duration Timebase", "zbee_zcl_se.price.billing_period.duration.timebase", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_block_period_duration_timebase_names), |
3460 | 15 | ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_TIMEBASE, NULL, HFILL } }, |
3461 | | |
3462 | 15 | { &hf_zbee_zcl_price_billing_period_duration_control, |
3463 | 15 | { "Duration Control", "zbee_zcl_se.price.billing_period.duration.control", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_block_period_duration_control_names), |
3464 | 15 | ZBEE_ZCL_PRICE_BILLING_PERIOD_DURATION_CONTROL, NULL, HFILL } }, |
3465 | | /* end Billing Period Duration Type fields */ |
3466 | | |
3467 | 15 | { &hf_zbee_zcl_price_consolidated_bill, |
3468 | 15 | { "Consolidated Bill", "zbee_zcl_se.price.consolidated_bill", FT_UINT32, BASE_DEC, NULL, |
3469 | 15 | 0x00, NULL, HFILL } }, |
3470 | | |
3471 | | /* start Consolidated Bill Trailing Digit fields */ |
3472 | 15 | { &hf_zbee_zcl_price_consolidated_bill_trailing_digit_mask, |
3473 | 15 | { "Bill Trailing Digit", "zbee_zcl_se.price.consolidated_bill.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3474 | 15 | 0x00, NULL, HFILL } }, |
3475 | | |
3476 | 15 | { &hf_zbee_zcl_price_consolidated_bill_trailing_digit, |
3477 | 15 | { "Bill Trailing Digit", "zbee_zcl_se.price.consolidated_bill.trailing_digit", FT_UINT8, BASE_DEC, NULL, |
3478 | 15 | ZBEE_ZCL_PRICE_CONSOLIDATED_BILL_TRAILING_DIGIT, NULL, HFILL } }, |
3479 | | /* end Consolidated Bill Trailing Digit fields */ |
3480 | | |
3481 | 15 | { &hf_zbee_zcl_price_credit_payment_due_date, |
3482 | 15 | { "Credit Payment Due Date", "zbee_zcl_se.price.credit_payment.due_date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
3483 | 15 | 0x00, NULL, HFILL } }, |
3484 | | |
3485 | 15 | { &hf_zbee_zcl_price_credit_payment_date, |
3486 | 15 | { "Credit Payment Date", "zbee_zcl_se.price.credit_payment.date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
3487 | 15 | 0x00, NULL, HFILL } }, |
3488 | | |
3489 | 15 | { &hf_zbee_zcl_price_credit_payment_overdue_amount, |
3490 | 15 | { "Credit Payment Overdue Amount", "zbee_zcl_se.price.credit_payment.overdue_amount", FT_UINT32, BASE_DEC, NULL, |
3491 | 15 | 0x00, NULL, HFILL } }, |
3492 | | |
3493 | 15 | { &hf_zbee_zcl_price_credit_payment_status, |
3494 | 15 | { "Credit Payment Status", "zbee_zcl_se.price.credit_payment.status", FT_UINT8, BASE_DEC, NULL, |
3495 | 15 | 0x00, NULL, HFILL } }, |
3496 | | |
3497 | 15 | { &hf_zbee_zcl_price_credit_payment, |
3498 | 15 | { "Credit Payment", "zbee_zcl_se.price.credit_payment", FT_UINT32, BASE_DEC, NULL, |
3499 | 15 | 0x00, NULL, HFILL } }, |
3500 | | |
3501 | 15 | { &hf_zbee_zcl_price_credit_payment_ref, |
3502 | 15 | { "Credit Payment Ref", "zbee_zcl_se.price.credit_payment.ref", FT_UINT_STRING, BASE_NONE, NULL, |
3503 | 15 | 0x00, NULL, HFILL } }, |
3504 | | |
3505 | 15 | { &hf_zbee_zcl_price_old_currency, |
3506 | 15 | { "Old Currency", "zbee_zcl_se.price.old_currency", FT_UINT16, BASE_HEX, NULL, |
3507 | 15 | 0x00, NULL, HFILL } }, |
3508 | | |
3509 | 15 | { &hf_zbee_zcl_price_new_currency, |
3510 | 15 | { "New Currency", "zbee_zcl_se.price.new_currency", FT_UINT16, BASE_HEX, NULL, |
3511 | 15 | 0x00, NULL, HFILL } }, |
3512 | | |
3513 | 15 | { &hf_zbee_zcl_price_currency_change_control_flags, |
3514 | 15 | { "Currency Change Control Flags", "zbee_zcl_se.price.currency_change_control_flags", FT_UINT32, BASE_HEX, NULL, |
3515 | 15 | 0x00, NULL, HFILL } }, |
3516 | 15 | }; |
3517 | | |
3518 | | /* ZCL Price subtrees */ |
3519 | 15 | int *ett[] = { |
3520 | 15 | &ett_zbee_zcl_price, |
3521 | 15 | &ett_zbee_zcl_price_tariff_type, |
3522 | 15 | &ett_zbee_zcl_price_trailing_digit_and_price_tier, |
3523 | 15 | &ett_zbee_zcl_price_number_of_price_tiers_and_register_tier, |
3524 | 15 | &ett_zbee_zcl_price_alternate_cost_trailing_digit, |
3525 | 15 | &ett_zbee_zcl_price_block_period_control, |
3526 | 15 | &ett_zbee_zcl_price_block_period_duration_type, |
3527 | 15 | &ett_zbee_zcl_price_conversion_factor_trailing_digit, |
3528 | 15 | &ett_zbee_zcl_price_calorific_value_trailing_digit, |
3529 | 15 | &ett_zbee_zcl_price_tariff_information_tariff_type_and_charging_scheme, |
3530 | 15 | &ett_zbee_zcl_price_tariff_information_price_trailing_digit, |
3531 | 15 | &ett_zbee_zcl_price_price_matrix_tier_block_id, |
3532 | 15 | &ett_zbee_zcl_price_block_thresholds_tier_number_of_block_thresholds, |
3533 | 15 | &ett_zbee_zcl_price_co2_value_trailing_digit, |
3534 | 15 | &ett_zbee_zcl_price_billing_period_duration_type, |
3535 | 15 | &ett_zbee_zcl_price_consolidated_bill_trailing_digit, |
3536 | 15 | }; |
3537 | | |
3538 | | /* Register the ZigBee ZCL Price cluster protocol name and description */ |
3539 | 15 | proto_zbee_zcl_price = proto_register_protocol("ZigBee ZCL Price", "ZCL Price", ZBEE_PROTOABBREV_ZCL_PRICE); |
3540 | 15 | proto_register_field_array(proto_zbee_zcl_price, hf, array_length(hf)); |
3541 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
3542 | | |
3543 | | /* Register the ZigBee ZCL Price dissector. */ |
3544 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_PRICE, dissect_zbee_zcl_price, proto_zbee_zcl_price); |
3545 | 15 | } /*proto_register_zbee_zcl_price*/ |
3546 | | |
3547 | | /** |
3548 | | *Hands off the ZCL Price dissector. |
3549 | | * |
3550 | | */ |
3551 | | void |
3552 | | proto_reg_handoff_zbee_zcl_price(void) |
3553 | 15 | { |
3554 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_PRICE, |
3555 | 15 | proto_zbee_zcl_price, |
3556 | 15 | ett_zbee_zcl_price, |
3557 | 15 | ZBEE_ZCL_CID_PRICE, |
3558 | 15 | ZBEE_MFG_CODE_NONE, |
3559 | 15 | hf_zbee_zcl_price_attr_server_id, |
3560 | 15 | hf_zbee_zcl_price_attr_client_id, |
3561 | 15 | hf_zbee_zcl_price_srv_rx_cmd_id, |
3562 | 15 | hf_zbee_zcl_price_srv_tx_cmd_id, |
3563 | 15 | dissect_zcl_price_attr_data |
3564 | 15 | ); |
3565 | 15 | } /*proto_reg_handoff_zbee_zcl_price*/ |
3566 | | |
3567 | | /* ########################################################################## */ |
3568 | | /* #### (0x0701) DEMAND RESPONSE AND LOAD CONTROL CLUSTER ################### */ |
3569 | | /* ########################################################################## */ |
3570 | | |
3571 | | /* Attributes */ |
3572 | | #define zbee_zcl_drlc_attr_client_names_VALUE_STRING_LIST(XXX) \ |
3573 | | XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_UTILITY_ENROLLMENT_GROUP, 0x0000, "Utility Enrollment Group" ) \ |
3574 | | XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_START_RANDOMIZATION_MINUTES,0x0001, "Start Randomization Minutes" ) \ |
3575 | | XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_DURATION_RND_MINUTES, 0x0002, "Duration Randomization Minutes" ) \ |
3576 | | XXX(ZBEE_ZCL_ATTR_ID_DRLC_CLNT_DEVICE_CLASS_VALUE, 0x0003, "Device Class Value" ) \ |
3577 | | /* Smart Energy */ \ |
3578 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DRLC_CLNT, 0xFFFE, "Attribute Reporting Status" ) |
3579 | | |
3580 | | VALUE_STRING_ENUM(zbee_zcl_drlc_attr_client_names); |
3581 | | VALUE_STRING_ARRAY(zbee_zcl_drlc_attr_client_names); |
3582 | | |
3583 | | /* Server Commands Received */ |
3584 | | #define zbee_zcl_drlc_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
3585 | | XXX(ZBEE_ZCL_CMD_ID_DRLC_REPORT_EVENT_STATUS, 0x00, "Report Event Status" ) \ |
3586 | | XXX(ZBEE_ZCL_CMD_ID_DRLC_GET_SCHEDULED_EVENTS, 0x01, "Get Scheduled Events" ) |
3587 | | |
3588 | | VALUE_STRING_ENUM(zbee_zcl_drlc_srv_rx_cmd_names); |
3589 | | VALUE_STRING_ARRAY(zbee_zcl_drlc_srv_rx_cmd_names); |
3590 | | |
3591 | | /* Server Commands Generated */ |
3592 | | #define zbee_zcl_drlc_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
3593 | | XXX(ZBEE_ZCL_CMD_ID_DRLC_LOAD_CONTROL_EVENT, 0x00, "Load Control Event" ) \ |
3594 | | XXX(ZBEE_ZCL_CMD_ID_DRLC_CANCEL_LOAD_CONTROL_EVENT, 0x01, "Cancel Load Control Event" ) \ |
3595 | | XXX(ZBEE_ZCL_CMD_ID_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS, 0x02, "Cancel All Load Control Events" ) |
3596 | | |
3597 | | VALUE_STRING_ENUM(zbee_zcl_drlc_srv_tx_cmd_names); |
3598 | | VALUE_STRING_ARRAY(zbee_zcl_drlc_srv_tx_cmd_names); |
3599 | | |
3600 | 0 | #define ZBEE_ZCL_DRLC_TEMP_OFFSET_NOT_USED 0xFF |
3601 | 0 | #define ZBEE_ZCL_DRLC_TEMP_OFFSET_DIVIDER 10.0f |
3602 | | |
3603 | 0 | #define ZBEE_ZCL_DRLC_TEMP_SET_POINT_NOT_USED 0x8000 |
3604 | 0 | #define ZBEE_ZCL_DRLC_TEMP_SET_POINT_DIVIDER 100.0f |
3605 | | |
3606 | 0 | #define ZBEE_ZCL_DRLC_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE 0x80 |
3607 | | |
3608 | | static const range_string zbee_zcl_drlc_load_control_event_criticality_level[] = { |
3609 | | { 0x0, 0x0, "Reserved" }, |
3610 | | { 0x1, 0x1, "Green" }, |
3611 | | { 0x2, 0x2, "1" }, |
3612 | | { 0x3, 0x3, "2" }, |
3613 | | { 0x4, 0x4, "3" }, |
3614 | | { 0x5, 0x5, "4" }, |
3615 | | { 0x6, 0x6, "5" }, |
3616 | | { 0x7, 0x7, "Emergency" }, |
3617 | | { 0x8, 0x8, "Planned Outage" }, |
3618 | | { 0x9, 0x9, "Service Disconnect" }, |
3619 | | { 0x0A, 0x0F, "Utility Defined" }, |
3620 | | { 0x10, 0xFF, "Reserved" }, |
3621 | | { 0, 0, NULL } |
3622 | | }; |
3623 | | |
3624 | | static const range_string zbee_zcl_drlc_report_event_status_event_status[] = { |
3625 | | { 0x0, 0x0, "Reserved for future use." }, |
3626 | | { 0x01, 0x01, "Load Control Event command received" }, |
3627 | | { 0x02, 0x02, "Event started" }, |
3628 | | { 0x03, 0x03, "Event completed" }, |
3629 | | { 0x04, 0x04, "User has chosen to \"Opt-Out\", user will not participate in this event" }, |
3630 | | { 0x05, 0x05, "User has chosen to \"Opt-In\", user will participate in this event" }, |
3631 | | { 0x06, 0x06, "The event has been cancelled" }, |
3632 | | { 0x07, 0x07, "The event has been superseded" }, |
3633 | | { 0x08, 0x08, "Event partially completed with User \"Opt-Out\"." }, |
3634 | | { 0x09, 0x09, "Event partially completed due to User \"Opt-In\"." }, |
3635 | | { 0x0A, 0x0A, "Event completed, no User participation (Previous \"Opt-Out\")." }, |
3636 | | { 0x0B, 0xF7, "Reserved for future use." }, |
3637 | | { 0xF8, 0xF8, "Rejected - Invalid Cancel Command (Default)" }, |
3638 | | { 0xF9, 0xF9, "Rejected - Invalid Cancel Command (Invalid Effective Time)" }, |
3639 | | { 0xFA, 0xFA , "Reserved" }, |
3640 | | { 0xFB, 0xFB, "Rejected - Event was received after it had expired (Current Time > Start Time + Duration)" }, |
3641 | | { 0xFC, 0xFC, "Reserved for future use." }, |
3642 | | { 0xFD, 0xFD, "Rejected - Invalid Cancel Command (Undefined Event)" }, |
3643 | | { 0xFE, 0xFE, "Load Control Event command Rejected" }, |
3644 | | { 0xFF, 0xFF, "Reserved for future use." }, |
3645 | | { 0, 0, NULL } |
3646 | | }; |
3647 | | |
3648 | | static const range_string zbee_zcl_drlc_report_event_signature_type[] = { |
3649 | | { 0x0, 0x0, "No Signature" }, |
3650 | | { 0x01, 0x01, "ECDSA" }, |
3651 | | { 0x02, 0xFF, "Reserved" }, |
3652 | | { 0, 0, NULL } |
3653 | | }; |
3654 | | |
3655 | | static const true_false_string zbee_zcl_drlc_randomize_start_tfs = { |
3656 | | "Randomize Start time", |
3657 | | "Randomized Start not Applied" |
3658 | | }; |
3659 | | |
3660 | | static const true_false_string zbee_zcl_drlc_randomize_duration_tfs = { |
3661 | | "Randomize Duration time", |
3662 | | "Randomized Duration not Applied" |
3663 | | }; |
3664 | | /*************************/ |
3665 | | /* Function Declarations */ |
3666 | | /*************************/ |
3667 | | void proto_register_zbee_zcl_drlc(void); |
3668 | | void proto_reg_handoff_zbee_zcl_drlc(void); |
3669 | | |
3670 | | static void decode_zcl_drlc_temp_offset (char *s, uint8_t value); |
3671 | | static void decode_zcl_drlc_temp_set_point (char *s, int16_t value); |
3672 | | static void decode_zcl_drlc_average_load_adjustment_percentage (char *s, int8_t value); |
3673 | | |
3674 | | static void dissect_zcl_drlc_load_control_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
3675 | | static void dissect_zcl_drlc_cancel_load_control_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
3676 | | static void dissect_zcl_drlc_cancel_all_load_control_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
3677 | | static void dissect_zcl_drlc_report_event_status (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
3678 | | static void dissect_zcl_drlc_get_scheduled_events (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
3679 | | |
3680 | | /*************************/ |
3681 | | /* Global Variables */ |
3682 | | /*************************/ |
3683 | | |
3684 | | /* Initialize the protocol and registered fields */ |
3685 | | static int proto_zbee_zcl_drlc; |
3686 | | |
3687 | | static int hf_zbee_zcl_drlc_srv_tx_cmd_id; |
3688 | | static int hf_zbee_zcl_drlc_srv_rx_cmd_id; |
3689 | | static int hf_zbee_zcl_drlc_attr_client_id; |
3690 | | static int hf_zbee_zcl_drlc_attr_reporting_status; |
3691 | | static int hf_zbee_zcl_drlc_issuer_event_id; |
3692 | | static int hf_zbee_zcl_drlc_device_class; |
3693 | | static int hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace; |
3694 | | static int hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters; |
3695 | | static int hf_zbee_zcl_drlc_device_class_water_heater; |
3696 | | static int hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi; |
3697 | | static int hf_zbee_zcl_drlc_device_class_smart_appliances; |
3698 | | static int hf_zbee_zcl_drlc_device_class_irrigation_pump; |
3699 | | static int hf_zbee_zcl_drlc_device_class_managed_c_i_loads; |
3700 | | static int hf_zbee_zcl_drlc_device_class_simple_misc_loads; |
3701 | | static int hf_zbee_zcl_drlc_device_class_exterior_lighting; |
3702 | | static int hf_zbee_zcl_drlc_device_class_interior_lighting; |
3703 | | static int hf_zbee_zcl_drlc_device_class_electric_vehicle; |
3704 | | static int hf_zbee_zcl_drlc_device_class_generation_systems; |
3705 | | static int hf_zbee_zcl_drlc_device_class_reserved; |
3706 | | static int hf_zbee_zcl_drlc_utility_enrollment_group; |
3707 | | static int hf_zbee_zcl_drlc_start_time; |
3708 | | static int hf_zbee_zcl_drlc_duration_in_minutes; |
3709 | | static int hf_zbee_zcl_drlc_criticality_level; |
3710 | | static int hf_zbee_zcl_drlc_cooling_temp_offset; |
3711 | | static int hf_zbee_zcl_drlc_heating_temp_offset; |
3712 | | static int hf_zbee_zcl_drlc_cooling_temp_set_point; |
3713 | | static int hf_zbee_zcl_drlc_heating_temp_set_point; |
3714 | | static int hf_zbee_zcl_drlc_average_load_adjustment_percentage; |
3715 | | static int hf_zbee_zcl_drlc_duty_cycle; |
3716 | | static int hf_zbee_zcl_drlc_event_control; |
3717 | | static int hf_zbee_zcl_drlc_event_control_randomize_start_time; |
3718 | | static int hf_zbee_zcl_drlc_event_control_randomize_duration_time; |
3719 | | static int hf_zbee_zcl_drlc_event_control_reserved; |
3720 | | static int hf_zbee_zcl_drlc_cancel_control; |
3721 | | static int hf_zbee_zcl_drlc_cancel_control_event_in_process; |
3722 | | static int hf_zbee_zcl_drlc_cancel_control_reserved; |
3723 | | static int hf_zbee_zcl_drlc_effective_time; |
3724 | | static int hf_zbee_zcl_drlc_report_event_issuer_event_id; |
3725 | | static int hf_zbee_zcl_drlc_report_event_event_status; |
3726 | | static int hf_zbee_zcl_drlc_report_event_event_status_time; |
3727 | | static int hf_zbee_zcl_drlc_report_event_criticality_level_applied; |
3728 | | static int hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied; |
3729 | | static int hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied; |
3730 | | static int hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage; |
3731 | | static int hf_zbee_zcl_drlc_report_event_duty_cycle; |
3732 | | static int hf_zbee_zcl_drlc_report_event_event_control; |
3733 | | static int hf_zbee_zcl_drlc_report_event_signature_type; |
3734 | | static int hf_zbee_zcl_drlc_report_event_signature; |
3735 | | static int hf_zbee_zcl_drlc_get_scheduled_events_earliest_end_time; |
3736 | | static int hf_zbee_zcl_drlc_get_scheduled_events_number_of_events; |
3737 | | static int hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id; |
3738 | | |
3739 | | static int* const zbee_zcl_drlc_control_event_device_classes[] = { |
3740 | | &hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace, |
3741 | | &hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters, |
3742 | | &hf_zbee_zcl_drlc_device_class_water_heater, |
3743 | | &hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi, |
3744 | | &hf_zbee_zcl_drlc_device_class_smart_appliances, |
3745 | | &hf_zbee_zcl_drlc_device_class_irrigation_pump, |
3746 | | &hf_zbee_zcl_drlc_device_class_managed_c_i_loads, |
3747 | | &hf_zbee_zcl_drlc_device_class_simple_misc_loads, |
3748 | | &hf_zbee_zcl_drlc_device_class_exterior_lighting, |
3749 | | &hf_zbee_zcl_drlc_device_class_interior_lighting, |
3750 | | &hf_zbee_zcl_drlc_device_class_electric_vehicle, |
3751 | | &hf_zbee_zcl_drlc_device_class_generation_systems, |
3752 | | &hf_zbee_zcl_drlc_device_class_reserved, |
3753 | | NULL |
3754 | | }; |
3755 | | |
3756 | | static int* const hf_zbee_zcl_drlc_event_control_flags[] = { |
3757 | | &hf_zbee_zcl_drlc_event_control_randomize_start_time, |
3758 | | &hf_zbee_zcl_drlc_event_control_randomize_duration_time, |
3759 | | &hf_zbee_zcl_drlc_event_control_reserved, |
3760 | | NULL |
3761 | | }; |
3762 | | |
3763 | | static int* const hf_zbee_zcl_drlc_cancel_control_flags[] = { |
3764 | | &hf_zbee_zcl_drlc_cancel_control_event_in_process, |
3765 | | &hf_zbee_zcl_drlc_cancel_control_reserved, |
3766 | | NULL |
3767 | | }; |
3768 | | /* Initialize the subtree pointers */ |
3769 | | static int ett_zbee_zcl_drlc; |
3770 | | static int ett_zbee_zcl_drlc_device_class; |
3771 | | static int ett_zbee_zcl_drlc_event_control; |
3772 | | static int ett_zbee_zcl_drlc_cancel_control; |
3773 | | |
3774 | | /*************************/ |
3775 | | /* Function Bodies */ |
3776 | | /*************************/ |
3777 | | /** |
3778 | | * This function decodes Temperature Offset. |
3779 | | * |
3780 | | * @param s string to display |
3781 | | * @param value value to decode |
3782 | | */ |
3783 | | static void |
3784 | | decode_zcl_drlc_temp_offset(char *s, uint8_t value) |
3785 | 0 | { |
3786 | 0 | if (value == ZBEE_ZCL_DRLC_TEMP_OFFSET_NOT_USED) |
3787 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "Not Used"); |
3788 | 0 | else { |
3789 | 0 | float temp_delta; |
3790 | 0 | temp_delta = value / ZBEE_ZCL_DRLC_TEMP_OFFSET_DIVIDER; |
3791 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "%+.2f%s", temp_delta, units_degree_celsius.singular); |
3792 | 0 | } |
3793 | 0 | } /*decode_zcl_drlc_temp_offset*/ |
3794 | | |
3795 | | /** |
3796 | | * This function decodes Temperature Set Point. |
3797 | | * |
3798 | | * @param s string to display |
3799 | | * @param value value to decode |
3800 | | */ |
3801 | | static void decode_zcl_drlc_temp_set_point(char *s, int16_t value) |
3802 | 0 | { |
3803 | 0 | if (value & ZBEE_ZCL_DRLC_TEMP_SET_POINT_NOT_USED) |
3804 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "Not Used"); |
3805 | 0 | else { |
3806 | 0 | float temp_delta; |
3807 | 0 | temp_delta = value / ZBEE_ZCL_DRLC_TEMP_SET_POINT_DIVIDER; |
3808 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "%+.2f%s", temp_delta, units_degree_celsius.singular); |
3809 | 0 | } |
3810 | 0 | } /*decode_zcl_drlc_temp_set_point*/ |
3811 | | |
3812 | | /** |
3813 | | * This function decodes Average Load Adjustment Percentage. |
3814 | | * |
3815 | | * @param s string to display |
3816 | | * @param value value to decode |
3817 | | */ |
3818 | | static void decode_zcl_drlc_average_load_adjustment_percentage(char *s, int8_t value) |
3819 | 0 | { |
3820 | 0 | if (value & ZBEE_ZCL_DRLC_AVERAGE_LOAD_ADJUSTMENT_PERCENTAGE) |
3821 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "Not Used"); |
3822 | 0 | else { |
3823 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "%+d%%", value); |
3824 | 0 | } |
3825 | 0 | } /*decode_zcl_drlc_average_load_adjustment_percentage*/ |
3826 | | |
3827 | | /** |
3828 | | *This function is called by ZCL foundation dissector in order to decode |
3829 | | * |
3830 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3831 | | *@param tvb pointer to buffer containing raw packet. |
3832 | | *@param offset pointer to buffer offset |
3833 | | *@param attr_id attribute identifier |
3834 | | *@param data_type attribute data type |
3835 | | *@param client_attr ZCL client |
3836 | | */ |
3837 | | static void |
3838 | | dissect_zcl_drlc_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
3839 | 132 | { |
3840 | 132 | switch (attr_id) { |
3841 | | /* applies to all SE clusters */ |
3842 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DRLC_CLNT: |
3843 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
3844 | 0 | *offset += 1; |
3845 | 0 | break; |
3846 | | |
3847 | 132 | default: /* Catch all */ |
3848 | 132 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
3849 | 132 | break; |
3850 | 132 | } |
3851 | 132 | } /*dissect_zcl_drlc_attr_data*/ |
3852 | | |
3853 | | /** |
3854 | | *This function is called by ZCL foundation dissector in order to decode |
3855 | | *DRLC Load Control Event Command Payload. |
3856 | | * |
3857 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3858 | | *@param tvb pointer to buffer containing raw packet. |
3859 | | *@param offset pointer to buffer offset |
3860 | | */ |
3861 | | static void |
3862 | | dissect_zcl_drlc_load_control_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
3863 | 0 | { |
3864 | | /* Issuer Event ID */ |
3865 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_issuer_event_id, tvb, |
3866 | 0 | *offset, 4, ENC_LITTLE_ENDIAN); |
3867 | 0 | *offset += 4; |
3868 | | |
3869 | | /* Device Class */ |
3870 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_device_class, ett_zbee_zcl_drlc_device_class, |
3871 | 0 | zbee_zcl_drlc_control_event_device_classes, ENC_LITTLE_ENDIAN); |
3872 | 0 | *offset += 2; |
3873 | | |
3874 | | /* Utility Enrollment Group */ |
3875 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_utility_enrollment_group, tvb, |
3876 | 0 | *offset, 1, ENC_NA); |
3877 | 0 | *offset += 1; |
3878 | | |
3879 | | /* Start Time */ |
3880 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_start_time, tvb, |
3881 | 0 | *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
3882 | 0 | *offset += 4; |
3883 | | /* Duration In Minutes */ |
3884 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_duration_in_minutes, tvb, |
3885 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
3886 | 0 | *offset += 2; |
3887 | | |
3888 | | /* Criticality Level */ |
3889 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_criticality_level, tvb, |
3890 | 0 | *offset, 1, ENC_NA); |
3891 | 0 | *offset += 1; |
3892 | | |
3893 | | /* Cooling Temperature Offset */ |
3894 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_cooling_temp_offset, tvb, |
3895 | 0 | *offset, 1, ENC_NA); |
3896 | 0 | *offset += 1; |
3897 | | |
3898 | | /* Heating Temperature Offset */ |
3899 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_heating_temp_offset, tvb, |
3900 | 0 | *offset, 1, ENC_NA); |
3901 | 0 | *offset += 1; |
3902 | | |
3903 | | /* Cooling Temperature Set Point */ |
3904 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_cooling_temp_set_point, tvb, |
3905 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
3906 | 0 | *offset += 2; |
3907 | | |
3908 | | /* Heating Temperature Set Point */ |
3909 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_heating_temp_set_point, tvb, |
3910 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
3911 | 0 | *offset += 2; |
3912 | | |
3913 | | /* Average Load Adjustment Percentage */ |
3914 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_average_load_adjustment_percentage, tvb, |
3915 | 0 | *offset, 1, ENC_NA); |
3916 | 0 | *offset += 1; |
3917 | | |
3918 | | /* Duty Cycle */ |
3919 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_duty_cycle, tvb, |
3920 | 0 | *offset, 1, ENC_NA); |
3921 | 0 | *offset += 1; |
3922 | | |
3923 | | /* Event Control */ |
3924 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_event_control, ett_zbee_zcl_drlc_event_control, |
3925 | 0 | hf_zbee_zcl_drlc_event_control_flags, ENC_LITTLE_ENDIAN); |
3926 | 0 | *offset += 1; |
3927 | |
|
3928 | 0 | } /*dissect_zcl_drlc_load_control_event*/ |
3929 | | |
3930 | | /** |
3931 | | *This function is called by ZCL foundation dissector in order to decode |
3932 | | *DRLC Cancel Load Control Event Command Payload. |
3933 | | * |
3934 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3935 | | *@param tvb pointer to buffer containing raw packet. |
3936 | | *@param offset pointer to buffer offset |
3937 | | */ |
3938 | | static void |
3939 | | dissect_zcl_drlc_cancel_load_control_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
3940 | 0 | { |
3941 | | /* Issuer Event ID */ |
3942 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_issuer_event_id, tvb, |
3943 | 0 | *offset, 4, ENC_LITTLE_ENDIAN); |
3944 | 0 | *offset += 4; |
3945 | | |
3946 | | /* Device Class */ |
3947 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_device_class, ett_zbee_zcl_drlc_device_class, |
3948 | 0 | zbee_zcl_drlc_control_event_device_classes, ENC_LITTLE_ENDIAN); |
3949 | 0 | *offset += 2; |
3950 | | |
3951 | | /* Utility Enrollment Group */ |
3952 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_utility_enrollment_group, tvb, |
3953 | 0 | *offset, 1, ENC_NA); |
3954 | 0 | *offset += 1; |
3955 | | |
3956 | | /* Cancel Control */ |
3957 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_cancel_control, ett_zbee_zcl_drlc_cancel_control, |
3958 | 0 | hf_zbee_zcl_drlc_cancel_control_flags, ENC_LITTLE_ENDIAN); |
3959 | 0 | *offset += 1; |
3960 | | |
3961 | | /* Effective Time */ |
3962 | | /** XXX - expert info if it's not "Now? Other values are deprecated |
3963 | | * in the 1.4a spec. |
3964 | | */ |
3965 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_effective_time, tvb, |
3966 | 0 | *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
3967 | 0 | *offset += 4; |
3968 | |
|
3969 | 0 | } |
3970 | | |
3971 | | /** |
3972 | | *This function is called by ZCL foundation dissector in order to decode |
3973 | | *DRLC Cancel All Load Control Events Command Payload. |
3974 | | * |
3975 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3976 | | *@param tvb pointer to buffer containing raw packet. |
3977 | | *@param offset pointer to buffer offset |
3978 | | */ |
3979 | | static void |
3980 | | dissect_zcl_drlc_cancel_all_load_control_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
3981 | 0 | { |
3982 | | /* Cancel Control */ |
3983 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_cancel_control, ett_zbee_zcl_drlc_cancel_control, |
3984 | 0 | hf_zbee_zcl_drlc_cancel_control_flags, ENC_LITTLE_ENDIAN); |
3985 | 0 | *offset += 1; |
3986 | |
|
3987 | 0 | } /*dissect_zcl_drlc_cancel_all_load_control_event*/ |
3988 | | |
3989 | | /** |
3990 | | *This function is called by ZCL foundation dissector in order to decode |
3991 | | *DRLC Report Event Status Command Payload. |
3992 | | * |
3993 | | *@param tree pointer to data tree Wireshark uses to display packet. |
3994 | | *@param tvb pointer to buffer containing raw packet. |
3995 | | *@param offset pointer to buffer offset |
3996 | | */ |
3997 | | static void |
3998 | | dissect_zcl_drlc_report_event_status(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
3999 | 0 | { |
4000 | | /* Issuer Event ID */ |
4001 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_issuer_event_id, tvb, |
4002 | 0 | *offset, 4, ENC_LITTLE_ENDIAN); |
4003 | 0 | *offset += 4; |
4004 | | |
4005 | | /* Event Status */ |
4006 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_event_status, tvb, *offset, 1, ENC_NA); |
4007 | 0 | *offset += 1; |
4008 | | |
4009 | | /* Event Status Time */ |
4010 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_event_status_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
4011 | 0 | *offset += 4; |
4012 | | |
4013 | | /* Criticality Level Applied */ |
4014 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_criticality_level_applied, tvb, |
4015 | 0 | *offset, 1, ENC_NA); |
4016 | 0 | *offset += 1; |
4017 | | |
4018 | | /* Cooling Temperature Set Point Applied */ |
4019 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied, tvb, |
4020 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
4021 | 0 | *offset += 2; |
4022 | | |
4023 | | /* Heating Temperature Set Point Applied */ |
4024 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied, tvb, |
4025 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
4026 | 0 | *offset += 2; |
4027 | | |
4028 | | /* Average Load Adjustment Percentage Applied */ |
4029 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage, tvb, |
4030 | 0 | *offset, 1, ENC_NA); |
4031 | 0 | *offset += 1; |
4032 | | |
4033 | | /* Duty Cycle Applied */ |
4034 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_duty_cycle, tvb, |
4035 | 0 | *offset, 1, ENC_NA); |
4036 | 0 | *offset += 1; |
4037 | | |
4038 | | /* Event Control */ |
4039 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_drlc_report_event_event_control, ett_zbee_zcl_drlc_event_control, |
4040 | 0 | hf_zbee_zcl_drlc_event_control_flags, ENC_LITTLE_ENDIAN); |
4041 | 0 | *offset += 1; |
4042 | | |
4043 | | /* Signature Type */ |
4044 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_signature_type, tvb, |
4045 | 0 | *offset, 1, ENC_NA); |
4046 | 0 | *offset += 1; |
4047 | | |
4048 | | /* Signature */ |
4049 | 0 | unsigned rem_len; |
4050 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
4051 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_report_event_signature, tvb, |
4052 | 0 | *offset, rem_len, ENC_NA); |
4053 | 0 | *offset += rem_len; |
4054 | 0 | } /*dissect_zcl_drlc_report_event_status*/ |
4055 | | |
4056 | | /** |
4057 | | *This function is called by ZCL foundation dissector in order to decode |
4058 | | *DRLC Get Scheduled Events Command Payload. |
4059 | | * |
4060 | | *@param tree pointer to data tree Wireshark uses to display packet. |
4061 | | *@param tvb pointer to buffer containing raw packet. |
4062 | | *@param offset pointer to buffer offset |
4063 | | */ |
4064 | | static void |
4065 | | dissect_zcl_drlc_get_scheduled_events(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
4066 | 0 | { |
4067 | 0 | int rem_len; |
4068 | | |
4069 | | /* Earliest Event Time */ |
4070 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_get_scheduled_events_earliest_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
4071 | 0 | *offset += 4; |
4072 | | |
4073 | | /* Number of Events */ |
4074 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_get_scheduled_events_number_of_events, tvb, |
4075 | 0 | *offset, 1, ENC_NA); |
4076 | 0 | *offset += 1; |
4077 | |
|
4078 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
4079 | 0 | if (rem_len > 3) { |
4080 | | /* Issuer Event ID */ |
4081 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id, tvb, |
4082 | 0 | *offset, rem_len, ENC_LITTLE_ENDIAN); |
4083 | 0 | *offset += 4; |
4084 | 0 | } |
4085 | 0 | } /*dissect_zcl_drlc_report_event_status*/ |
4086 | | |
4087 | | /** |
4088 | | *ZigBee ZCL DRLC cluster dissector for wireshark. |
4089 | | * |
4090 | | *@param tvb pointer to buffer containing raw packet. |
4091 | | *@param pinfo pointer to packet information fields |
4092 | | *@param tree pointer to data tree Wireshark uses to display packet. |
4093 | | */ |
4094 | | static int |
4095 | | dissect_zbee_zcl_drlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
4096 | 1 | { |
4097 | 1 | zbee_zcl_packet *zcl; |
4098 | 1 | unsigned offset = 0; |
4099 | 1 | uint8_t cmd_id; |
4100 | 1 | int rem_len; |
4101 | 1 | proto_tree *payload_tree; |
4102 | | |
4103 | | /* Reject the packet if data is NULL */ |
4104 | 1 | if (data == NULL) |
4105 | 0 | return 0; |
4106 | 1 | zcl = (zbee_zcl_packet *)data; |
4107 | 1 | cmd_id = zcl->cmd_id; |
4108 | | |
4109 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
4110 | 1 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
4111 | | /* Append the command name to the info column. */ |
4112 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
4113 | 0 | val_to_str_const(cmd_id, zbee_zcl_drlc_srv_rx_cmd_names, "Unknown Command"), |
4114 | 0 | zcl->tran_seqno); |
4115 | | |
4116 | | /* Add the command ID. */ |
4117 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_drlc_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
4118 | | |
4119 | | /* Check is this command has a payload, than add the payload tree */ |
4120 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
4121 | 0 | if (rem_len > 0) { |
4122 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_drlc, NULL, "Payload"); |
4123 | | |
4124 | | /* Call the appropriate command dissector */ |
4125 | 0 | switch (cmd_id) { |
4126 | | |
4127 | 0 | case ZBEE_ZCL_CMD_ID_DRLC_REPORT_EVENT_STATUS: |
4128 | 0 | dissect_zcl_drlc_report_event_status(tvb, payload_tree, &offset); |
4129 | 0 | break; |
4130 | | |
4131 | 0 | case ZBEE_ZCL_CMD_ID_DRLC_GET_SCHEDULED_EVENTS: |
4132 | 0 | dissect_zcl_drlc_get_scheduled_events(tvb, payload_tree, &offset); |
4133 | 0 | break; |
4134 | | |
4135 | 0 | default: |
4136 | 0 | break; |
4137 | 0 | } |
4138 | 0 | } |
4139 | 0 | } |
4140 | 1 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
4141 | | /* Append the command name to the info column. */ |
4142 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
4143 | 1 | val_to_str_const(cmd_id, zbee_zcl_drlc_srv_tx_cmd_names, "Unknown Command"), |
4144 | 1 | zcl->tran_seqno); |
4145 | | |
4146 | | /* Add the command ID. */ |
4147 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_drlc_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
4148 | | |
4149 | | /* Check is this command has a payload, than add the payload tree */ |
4150 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
4151 | 1 | if (rem_len > 0) { |
4152 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_drlc, NULL, "Payload"); |
4153 | | |
4154 | | /* Call the appropriate command dissector */ |
4155 | 1 | switch (cmd_id) { |
4156 | | |
4157 | 0 | case ZBEE_ZCL_CMD_ID_DRLC_LOAD_CONTROL_EVENT: |
4158 | 0 | dissect_zcl_drlc_load_control_event(tvb, payload_tree, &offset); |
4159 | 0 | break; |
4160 | | |
4161 | 0 | case ZBEE_ZCL_CMD_ID_DRLC_CANCEL_LOAD_CONTROL_EVENT: |
4162 | 0 | dissect_zcl_drlc_cancel_load_control_event(tvb, payload_tree, &offset); |
4163 | 0 | break; |
4164 | | |
4165 | 0 | case ZBEE_ZCL_CMD_ID_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS: |
4166 | 0 | dissect_zcl_drlc_cancel_all_load_control_event(tvb, payload_tree, &offset); |
4167 | 0 | break; |
4168 | | |
4169 | 1 | default: |
4170 | 1 | break; |
4171 | 1 | } |
4172 | 1 | } |
4173 | 1 | } |
4174 | | |
4175 | 1 | return tvb_captured_length(tvb); |
4176 | 1 | } /*dissect_zbee_zcl_drlc*/ |
4177 | | |
4178 | | /** |
4179 | | *This function registers the ZCL DRLC dissector |
4180 | | * |
4181 | | */ |
4182 | | void |
4183 | | proto_register_zbee_zcl_drlc(void) |
4184 | 15 | { |
4185 | 15 | static hf_register_info hf[] = { |
4186 | | |
4187 | 15 | { &hf_zbee_zcl_drlc_attr_client_id, |
4188 | 15 | { "Attribute", "zbee_zcl_se.drlc.attr_client_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_drlc_attr_client_names), |
4189 | 15 | 0x0, NULL, HFILL } }, |
4190 | | |
4191 | 15 | { &hf_zbee_zcl_drlc_attr_reporting_status, /* common to all SE clusters */ |
4192 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.drlc.attr.attr_reporting_status", |
4193 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
4194 | | |
4195 | 15 | { &hf_zbee_zcl_drlc_srv_tx_cmd_id, |
4196 | 15 | { "Command", "zbee_zcl_se.drlc.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_drlc_srv_tx_cmd_names), |
4197 | 15 | 0x00, NULL, HFILL } }, |
4198 | | |
4199 | 15 | { &hf_zbee_zcl_drlc_srv_rx_cmd_id, |
4200 | 15 | { "Command", "zbee_zcl_se.drlc.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_drlc_srv_rx_cmd_names), |
4201 | 15 | 0x00, NULL, HFILL } }, |
4202 | | |
4203 | 15 | { &hf_zbee_zcl_drlc_issuer_event_id, |
4204 | 15 | { "Issuer Event ID", "zbee_zcl_se.drlc.issuer_id", |
4205 | 15 | FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4206 | | |
4207 | 15 | { &hf_zbee_zcl_drlc_device_class, |
4208 | 15 | { "Device Class", "zbee_zcl_se.drlc.device_class", |
4209 | 15 | FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4210 | | |
4211 | 15 | { &hf_zbee_zcl_drlc_device_class_hvac_compressor_or_furnace, |
4212 | 15 | { "HVAC Compressor or Furnace", "zbee_zcl_se.drlc.device_class.hvac_compressor_or_furnace", |
4213 | 15 | FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL } }, |
4214 | | |
4215 | 15 | { &hf_zbee_zcl_drlc_device_class_strip_heaters_baseboard_heaters, |
4216 | 15 | { "Strip Heaters/Baseboard Heaters", "zbee_zcl_se.drlc.device_class.strip_heaters_baseboard_heaters", |
4217 | 15 | FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } }, |
4218 | | |
4219 | 15 | { &hf_zbee_zcl_drlc_device_class_water_heater, |
4220 | 15 | { "Water Heater", "zbee_zcl_se.drlc.device_class.water_heater", |
4221 | 15 | FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } }, |
4222 | | |
4223 | 15 | { &hf_zbee_zcl_drlc_device_class_pool_pump_spa_jacuzzi, |
4224 | 15 | { "Pool Pump/Spa/Jacuzzi", "zbee_zcl_se.drlc.device_class.pool_pump_spa_jacuzzi", |
4225 | 15 | FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } }, |
4226 | | |
4227 | 15 | { &hf_zbee_zcl_drlc_device_class_smart_appliances, |
4228 | 15 | { "Smart Appliances", "zbee_zcl_se.drlc.device_class.smart_appliances", |
4229 | 15 | FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL } }, |
4230 | | |
4231 | 15 | { &hf_zbee_zcl_drlc_device_class_irrigation_pump, |
4232 | 15 | { "Irrigation Pump", "zbee_zcl_se.drlc.device_class.irrigation_pump", |
4233 | 15 | FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } }, |
4234 | | |
4235 | 15 | { &hf_zbee_zcl_drlc_device_class_managed_c_i_loads, |
4236 | 15 | { "Managed Commercial & Industrial (C&I) loads", "zbee_zcl_se.drlc.device_class.managed_c_i_loads", |
4237 | 15 | FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL } }, |
4238 | | |
4239 | 15 | { &hf_zbee_zcl_drlc_device_class_simple_misc_loads, |
4240 | 15 | { "Simple misc. (Residential On/Off) loads", "zbee_zcl_se.drlc.device_class.simple_misc_loads", |
4241 | 15 | FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL } }, |
4242 | | |
4243 | 15 | { &hf_zbee_zcl_drlc_device_class_exterior_lighting, |
4244 | 15 | { "Exterior Lighting", "zbee_zcl_se.drlc.device_class.exterior_lighting", |
4245 | 15 | FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } }, |
4246 | | |
4247 | 15 | { &hf_zbee_zcl_drlc_device_class_interior_lighting, |
4248 | 15 | { "Interior Lighting", "zbee_zcl_se.drlc.device_class.interior_lighting", |
4249 | 15 | FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } }, |
4250 | | |
4251 | 15 | { &hf_zbee_zcl_drlc_device_class_electric_vehicle, |
4252 | 15 | { "Electric Vehicle", "zbee_zcl_se.drlc.device_class.electric_vehicle", |
4253 | 15 | FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } }, |
4254 | | |
4255 | 15 | { &hf_zbee_zcl_drlc_device_class_generation_systems, |
4256 | 15 | { "Generation Systems", "zbee_zcl_se.drlc.device_class.generation_systems", |
4257 | 15 | FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } }, |
4258 | | |
4259 | 15 | { &hf_zbee_zcl_drlc_device_class_reserved , |
4260 | 15 | { "Reserved", "zbee_zcl_se.drlc.device_class.reserved", |
4261 | 15 | FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL } }, |
4262 | | |
4263 | 15 | { &hf_zbee_zcl_drlc_utility_enrollment_group, |
4264 | 15 | { "Utility Enrollment Group", "zbee_zcl_se.drlc.utility_enrollment_group", |
4265 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4266 | | |
4267 | 15 | { &hf_zbee_zcl_drlc_start_time, |
4268 | 15 | { "Start Time", "zbee_zcl_se.drlc.start_time", |
4269 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_strings), 0x0, NULL, HFILL } }, |
4270 | | |
4271 | 15 | { &hf_zbee_zcl_drlc_duration_in_minutes, |
4272 | 15 | { "Duration In Minutes", "zbee_zcl_se.drlc.duration_in_minutes", |
4273 | 15 | FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, |
4274 | | |
4275 | 15 | { &hf_zbee_zcl_drlc_criticality_level, |
4276 | 15 | { "Criticality Level", "zbee_zcl_se.drlc.criticality_level", |
4277 | 15 | FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_drlc_load_control_event_criticality_level), 0x0, NULL, HFILL } }, |
4278 | | |
4279 | 15 | { &hf_zbee_zcl_drlc_cooling_temp_offset, |
4280 | 15 | { "Cooling Temperature Offset", "zbee_zcl_se.drlc.cooling_temperature_offset", |
4281 | 15 | FT_UINT8, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_offset), 0x0, NULL, HFILL } }, |
4282 | | |
4283 | 15 | { &hf_zbee_zcl_drlc_heating_temp_offset, |
4284 | 15 | { "Heating Temperature Offset", "zbee_zcl_se.drlc.heating_temperature_offset", |
4285 | 15 | FT_UINT8, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_offset), 0x0, NULL, HFILL } }, |
4286 | | |
4287 | 15 | { &hf_zbee_zcl_drlc_cooling_temp_set_point, |
4288 | 15 | { "Cooling Temperature Set Point", "zbee_zcl_se.drlc.cooling_temperature_set_point", |
4289 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
4290 | | |
4291 | 15 | { &hf_zbee_zcl_drlc_heating_temp_set_point, |
4292 | 15 | { "Heating Temperature Set Point", "zbee_zcl_se.drlc.heating_temperature_set_point", |
4293 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
4294 | | |
4295 | 15 | { &hf_zbee_zcl_drlc_average_load_adjustment_percentage, |
4296 | 15 | { "Average Load Adjustment Percentage", "zbee_zcl_se.drlc.average_load_adjustment_percentage", |
4297 | 15 | FT_INT8, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage), 0x0, NULL, HFILL } }, |
4298 | | |
4299 | 15 | { &hf_zbee_zcl_drlc_duty_cycle, |
4300 | 15 | { "Duty Cycle", "zbee_zcl_se.drlc.duty_cycle", |
4301 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4302 | | |
4303 | 15 | { &hf_zbee_zcl_drlc_event_control, |
4304 | 15 | { "Event Control", "zbee_zcl_se.drlc.event_control", |
4305 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4306 | | |
4307 | 15 | { &hf_zbee_zcl_drlc_event_control_randomize_start_time, |
4308 | 15 | { "Randomize Start time", "zbee_zcl_se.drlc.randomize_start_time", |
4309 | 15 | FT_BOOLEAN, 8, TFS(&zbee_zcl_drlc_randomize_start_tfs), 0x01, NULL, HFILL } }, |
4310 | | |
4311 | 15 | { &hf_zbee_zcl_drlc_event_control_randomize_duration_time, |
4312 | 15 | { "Randomize Duration time", "zbee_zcl_se.drlc.randomize_duration_time", |
4313 | 15 | FT_BOOLEAN, 8, TFS(&zbee_zcl_drlc_randomize_duration_tfs), 0x02, NULL, HFILL } }, |
4314 | | |
4315 | 15 | { &hf_zbee_zcl_drlc_event_control_reserved, |
4316 | 15 | { "Reserved", "zbee_zcl_se.drlc.reserved", |
4317 | 15 | FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } }, |
4318 | | |
4319 | 15 | { &hf_zbee_zcl_drlc_cancel_control, |
4320 | 15 | { "Cancel Control", "zbee_zcl_se.drlc.cancel_control", |
4321 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4322 | | |
4323 | 15 | { &hf_zbee_zcl_drlc_cancel_control_event_in_process, |
4324 | 15 | { "Event in process", "zbee_zcl_se.drlc.cancel_control.event_in_process", |
4325 | 15 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, |
4326 | | |
4327 | 15 | { &hf_zbee_zcl_drlc_cancel_control_reserved, |
4328 | 15 | { "Reserved", "zbee_zcl_se.drlc.cancel_control.reserved", |
4329 | 15 | FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL } }, |
4330 | | |
4331 | 15 | { &hf_zbee_zcl_drlc_effective_time, |
4332 | 15 | { "Effective time", "zbee_zcl_se.drlc.effective_time", |
4333 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_strings), 0x0, NULL, HFILL } }, |
4334 | | |
4335 | 15 | { &hf_zbee_zcl_drlc_report_event_issuer_event_id, |
4336 | 15 | { "Issuer Event ID", "zbee_zcl_se.drlc.report_event.issuer_id", |
4337 | 15 | FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4338 | | |
4339 | 15 | { &hf_zbee_zcl_drlc_report_event_event_status, |
4340 | 15 | { "Event Status", "zbee_zcl_se.drlc.report_event.event_status", |
4341 | 15 | FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_drlc_report_event_status_event_status), 0x0, NULL, HFILL } }, |
4342 | | |
4343 | 15 | { &hf_zbee_zcl_drlc_report_event_event_status_time, |
4344 | 15 | { "Event Status Time", "zbee_zcl_se.drlc.report_event.event_status_time", |
4345 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(zero_is_invalid_strings), 0x0, NULL, HFILL } }, |
4346 | | |
4347 | 15 | { &hf_zbee_zcl_drlc_report_event_criticality_level_applied , |
4348 | 15 | { "Criticality Level Applied", "zbee_zcl_se.drlc.report_event.criticality_level_applied", |
4349 | 15 | FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_drlc_load_control_event_criticality_level), 0x0, NULL, HFILL } }, |
4350 | | |
4351 | 15 | { &hf_zbee_zcl_drlc_report_event_cooling_temp_set_point_applied, |
4352 | 15 | { "Cooling Temperature Set Point Applied", "zbee_zcl_se.drlc.report_event.cooling_temperature_set_point_applied", |
4353 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
4354 | | |
4355 | 15 | { &hf_zbee_zcl_drlc_report_event_heating_temp_set_point_applied, |
4356 | 15 | { "Heating Temperature Set Point Applied", "zbee_zcl_se.drlc.report_event.heating_temperature_set_point_applied", |
4357 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
4358 | | |
4359 | 15 | { &hf_zbee_zcl_drlc_report_event_average_load_adjustment_percentage , |
4360 | 15 | { "Average Load Adjustment Percentage Applied", "zbee_zcl_se.drlc.report_event.average_load_adjustment_percentage_applied", |
4361 | 15 | FT_INT8, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage), 0x0, NULL, HFILL } }, |
4362 | | |
4363 | 15 | { &hf_zbee_zcl_drlc_report_event_duty_cycle, |
4364 | 15 | { "Duty Cycle Applied", "zbee_zcl_se.drlc.report_event.duty_cycle_applied", |
4365 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4366 | | |
4367 | 15 | { &hf_zbee_zcl_drlc_report_event_event_control , |
4368 | 15 | { "Event Control", "zbee_zcl_se.drlc.report_event.event_control", |
4369 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4370 | | |
4371 | 15 | { &hf_zbee_zcl_drlc_report_event_signature_type, |
4372 | 15 | { "Signature Type", "zbee_zcl_se.drlc.report_event.signature_type", |
4373 | 15 | FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_drlc_report_event_signature_type), 0x0, NULL, HFILL } }, |
4374 | | |
4375 | 15 | { &hf_zbee_zcl_drlc_report_event_signature, |
4376 | 15 | { "Signature", "zbee_zcl_se.drlc.report_event.signature", |
4377 | 15 | FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, |
4378 | | |
4379 | 15 | { & hf_zbee_zcl_drlc_get_scheduled_events_earliest_end_time, |
4380 | 15 | { "Earliest End Time", "zbee_zcl_se.drlc.get_scheduled_events.earliest_end_time", |
4381 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_strings), 0x0, NULL, HFILL } }, |
4382 | | |
4383 | 15 | { &hf_zbee_zcl_drlc_get_scheduled_events_number_of_events, |
4384 | 15 | { "Number of Events", "zbee_zcl_se.drlc.get_scheduled_events.numbers_of_events", |
4385 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4386 | | |
4387 | 15 | { &hf_zbee_zcl_drlc_get_scheduled_events_issuer_event_id, |
4388 | 15 | { "Minimum Issuer Event ID", "zbee_zcl_se.drlc.get_scheduled_events.issuer_event_id", |
4389 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
4390 | 15 | }; |
4391 | | |
4392 | | /* ZCL DRLC subtrees */ |
4393 | 15 | int *ett[] = { |
4394 | 15 | &ett_zbee_zcl_drlc, |
4395 | 15 | &ett_zbee_zcl_drlc_device_class, |
4396 | 15 | &ett_zbee_zcl_drlc_event_control, |
4397 | 15 | &ett_zbee_zcl_drlc_cancel_control |
4398 | 15 | }; |
4399 | | |
4400 | | /* Register the ZigBee ZCL DRLC cluster protocol name and description */ |
4401 | 15 | proto_zbee_zcl_drlc = proto_register_protocol("ZigBee ZCL DLRC", "ZCL DLRC", ZBEE_PROTOABBREV_ZCL_DRLC); |
4402 | 15 | proto_register_field_array(proto_zbee_zcl_drlc, hf, array_length(hf)); |
4403 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
4404 | | |
4405 | | /* Register the ZigBee ZCL DRLC dissector. */ |
4406 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_DRLC, dissect_zbee_zcl_drlc, proto_zbee_zcl_drlc); |
4407 | 15 | } /*proto_register_zbee_zcl_drlc*/ |
4408 | | |
4409 | | /** |
4410 | | *Hands off the ZCL DRLC dissector. |
4411 | | * |
4412 | | */ |
4413 | | void |
4414 | | proto_reg_handoff_zbee_zcl_drlc(void) |
4415 | 15 | { |
4416 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DRLC, |
4417 | 15 | proto_zbee_zcl_drlc, |
4418 | 15 | ett_zbee_zcl_drlc, |
4419 | 15 | ZBEE_ZCL_CID_DEMAND_RESPONSE_LOAD_CONTROL, |
4420 | 15 | ZBEE_MFG_CODE_NONE, |
4421 | 15 | -1, |
4422 | 15 | hf_zbee_zcl_drlc_attr_client_id, |
4423 | 15 | hf_zbee_zcl_drlc_srv_rx_cmd_id, |
4424 | 15 | hf_zbee_zcl_drlc_srv_tx_cmd_id, |
4425 | 15 | dissect_zcl_drlc_attr_data |
4426 | 15 | ); |
4427 | 15 | } /*proto_reg_handoff_zbee_zcl_drlc*/ |
4428 | | |
4429 | | /* ########################################################################## */ |
4430 | | /* #### (0x0702) METERING CLUSTER ########################################## */ |
4431 | | /* ########################################################################## */ |
4432 | | |
4433 | | /* Attributes */ |
4434 | | #define zbee_zcl_met_attr_server_names_VALUE_STRING_LIST(XXX) \ |
4435 | | /* Reading Information Set */ \ |
4436 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_SUM_DEL, 0x0000, "Current Summation Delivered" ) \ |
4437 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_SUM_RECV, 0x0001, "Current Summation Received" ) \ |
4438 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DE_DEL, 0x0002, "Current Max Demand Delivered" ) \ |
4439 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DE_RECV, 0x0003, "Current Max Demand Received" ) \ |
4440 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DFT_SUM, 0x0004, "DFTSummation" ) \ |
4441 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DAILY_FREEZE_TIME, 0x0005, "Daily Freeze Time" ) \ |
4442 | | XXX(ZBEE_ZCL_ATTR_ID_MET_POWER_FACTOR, 0x0006, "Power Factor" ) \ |
4443 | | XXX(ZBEE_ZCL_ATTR_ID_MET_READ_SNAP_TIME, 0x0007, "Reading Snapshot Time" ) \ |
4444 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_DEL_TIME, 0x0008, "Current Max Demand Delivered Time" ) \ |
4445 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MAX_DEMAND_RECV_TIME, 0x0009, "Current Max Demand Received Time" ) \ |
4446 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEFAULT_UPDATE_PERIOD, 0x000A, "Default Update Period" ) \ |
4447 | | XXX(ZBEE_ZCL_ATTR_ID_MET_FAST_POLL_UPDATE_PERIOD, 0x000B, "Fast Poll Update Period" ) \ |
4448 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_BLOCK_PER_CON_DEL, 0x000C, "Current Block Period Consumption Delivered" ) \ |
4449 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DAILY_CON_TARGET, 0x000D, "Daily Consumption Target" ) \ |
4450 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_BLOCK, 0x000E, "Current Block" ) \ |
4451 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROFILE_INTERVAL_PERIOD, 0x000F, "Profile Interval Period" ) \ |
4452 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEPRECATED, 0x0010, "Deprecated" ) \ |
4453 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PRESET_READING_TIME, 0x0011, "Preset Reading Time" ) \ |
4454 | | XXX(ZBEE_ZCL_ATTR_ID_MET_VOLUME_PER_REPORT, 0x0012, "Volume Per Report" ) \ |
4455 | | XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_RESTRICTION, 0x0013, "Flow Restriction" ) \ |
4456 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_STATUS, 0x0014, "Supply Status" ) \ |
4457 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_INLET_ENER_CAR_SUM, 0x0015, "Current Inlet Energy Carrier Summation" ) \ |
4458 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_OUTLET_ENER_CAR_SUM, 0x0016, "Current Outlet Energy Carrier Summation" ) \ |
4459 | | XXX(ZBEE_ZCL_ATTR_ID_MET_INLET_TEMPERATURE, 0x0017, "Inlet Temperature" ) \ |
4460 | | XXX(ZBEE_ZCL_ATTR_ID_MET_OUTLET_TEMPERATURE, 0x0018, "Outlet Temperature" ) \ |
4461 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CONTROL_TEMPERATURE, 0x0019, "Control Temperature" ) \ |
4462 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_INLET_ENER_CAR_DEM, 0x001A, "Current Inlet Energy Carrier Demand" ) \ |
4463 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_OUTLET_ENER_CAR_DEM, 0x001B, "Current Outlet Energy Carrier Demand" ) \ |
4464 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_BLOCK_CON_DEL, 0x001C, "Previous Block Period Consumption Delivered" ) \ |
4465 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_BLOCL_CON_RECV, 0x001D, "Current Block Period Consumption Received" ) \ |
4466 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_BLOCK_RECEIVED, 0x001E, "Current Block Received" ) \ |
4467 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DFT_SUMMATION_RECEIVED, 0x001F, "DFT Summation Received" ) \ |
4468 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ACTIVE_REG_TIER_DEL, 0x0020, "Active Register Tier Delivered" ) \ |
4469 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ACTIVE_REG_TIER_RECV, 0x0021, "Active Register Tier Received" ) \ |
4470 | | XXX(ZBEE_ZCL_ATTR_ID_MET_LAST_BLOCK_SWITCH_TIME, 0x0022, "Last Block Switch Time" ) \ |
4471 | | /* Summation TOU Information Set */ \ |
4472 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_1_SUM_DEL, 0x0100, "Current Tier 1 Summation Delivered" ) \ |
4473 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_1_SUM_RECV, 0x0101, "Current Tier 1 Summation Received" ) \ |
4474 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_2_SUM_DEL, 0x0102, "Current Tier 2 Summation Delivered" ) \ |
4475 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_2_SUM_RECV, 0x0103, "Current Tier 2 Summation Received" ) \ |
4476 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_3_SUM_DEL, 0x0104, "Current Tier 3 Summation Delivered" ) \ |
4477 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_3_SUM_RECV, 0x0105, "Current Tier 3 Summation Received" ) \ |
4478 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_4_SUM_DEL, 0x0106, "Current Tier 4 Summation Delivered" ) \ |
4479 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_4_SUM_RECV, 0x0107, "Current Tier 4 Summation Received" ) \ |
4480 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_5_SUM_DEL, 0x0108, "Current Tier 5 Summation Delivered" ) \ |
4481 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_5_SUM_RECV, 0x0109, "Current Tier 5 Summation Received" ) \ |
4482 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_6_SUM_DEL, 0x010A, "Current Tier 6 Summation Delivered" ) \ |
4483 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_6_SUM_RECV, 0x010B, "Current Tier 6 Summation Received" ) \ |
4484 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_7_SUM_DEL, 0x010C, "Current Tier 7 Summation Delivered" ) \ |
4485 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_7_SUM_RECV, 0x010D, "Current Tier 7 Summation Received" ) \ |
4486 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_8_SUM_DEL, 0x010E, "Current Tier 8 Summation Delivered" ) \ |
4487 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_8_SUM_RECV, 0x010F, "Current Tier 8 Summation Received" ) \ |
4488 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_9_SUM_DEL, 0x0110, "Current Tier 9 Summation Delivered" ) \ |
4489 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_9_SUM_RECV, 0x0111, "Current Tier 9 Summation Received" ) \ |
4490 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_10_SUM_DEL, 0x0112, "Current Tier 10 Summation Delivered" ) \ |
4491 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_10_SUM_RECV, 0x0113, "Current Tier 10 Summation Received" ) \ |
4492 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_11_SUM_DEL, 0x0114, "Current Tier 11 Summation Delivered" ) \ |
4493 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_11_SUM_RECV, 0x0115, "Current Tier 11 Summation Received" ) \ |
4494 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_12_SUM_DEL, 0x0116, "Current Tier 12 Summation Delivered" ) \ |
4495 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_12_SUM_RECV, 0x0117, "Current Tier 12 Summation Received" ) \ |
4496 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_13_SUM_DEL, 0x0118, "Current Tier 13 Summation Delivered" ) \ |
4497 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_13_SUM_RECV, 0x0119, "Current Tier 13 Summation Received" ) \ |
4498 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_14_SUM_DEL, 0x011A, "Current Tier 14 Summation Delivered" ) \ |
4499 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_14_SUM_RECV, 0x011B, "Current Tier 14 Summation Received" ) \ |
4500 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_15_SUM_DEL, 0x011C, "Current Tier 15 Summation Delivered" ) \ |
4501 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_15_SUM_RECV, 0x011D, "Current Tier 15 Summation Received" ) \ |
4502 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_16_SUM_DEL, 0x011E, "Current Tier 16 Summation Delivered" ) \ |
4503 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_16_SUM_RECV, 0x011F, "Current Tier 16 Summation Received" ) \ |
4504 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_17_SUM_DEL, 0x0120, "Current Tier 17 Summation Delivered" ) \ |
4505 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_17_SUM_RECV, 0x0121, "Current Tier 17 Summation Received" ) \ |
4506 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_18_SUM_DEL, 0x0122, "Current Tier 18 Summation Delivered" ) \ |
4507 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_18_SUM_RECV, 0x0123, "Current Tier 18 Summation Received" ) \ |
4508 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_19_SUM_DEL, 0x0124, "Current Tier 19 Summation Delivered" ) \ |
4509 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_19_SUM_RECV, 0x0125, "Current Tier 19 Summation Received" ) \ |
4510 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_20_SUM_DEL, 0x0126, "Current Tier 20 Summation Delivered" ) \ |
4511 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_20_SUM_RECV, 0x0127, "Current Tier 20 Summation Received" ) \ |
4512 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_21_SUM_DEL, 0x0128, "Current Tier 21 Summation Delivered" ) \ |
4513 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_21_SUM_RECV, 0x0129, "Current Tier 21 Summation Received" ) \ |
4514 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_22_SUM_DEL, 0x012A, "Current Tier 22 Summation Delivered" ) \ |
4515 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_22_SUM_RECV, 0x012B, "Current Tier 22 Summation Received" ) \ |
4516 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_23_SUM_DEL, 0x012C, "Current Tier 23 Summation Delivered" ) \ |
4517 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_23_SUM_RECV, 0x012D, "Current Tier 23 Summation Received" ) \ |
4518 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_24_SUM_DEL, 0x012E, "Current Tier 24 Summation Delivered" ) \ |
4519 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_24_SUM_RECV, 0x012F, "Current Tier 24 Summation Received" ) \ |
4520 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_25_SUM_DEL, 0x0130, "Current Tier 25 Summation Delivered" ) \ |
4521 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_25_SUM_RECV, 0x0131, "Current Tier 25 Summation Received" ) \ |
4522 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_26_SUM_DEL, 0x0132, "Current Tier 26 Summation Delivered" ) \ |
4523 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_26_SUM_RECV, 0x0133, "Current Tier 26 Summation Received" ) \ |
4524 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_27_SUM_DEL, 0x0134, "Current Tier 27 Summation Delivered" ) \ |
4525 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_27_SUM_RECV, 0x0135, "Current Tier 27 Summation Received" ) \ |
4526 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_28_SUM_DEL, 0x0136, "Current Tier 28 Summation Delivered" ) \ |
4527 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_28_SUM_RECV, 0x0137, "Current Tier 28 Summation Received" ) \ |
4528 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_29_SUM_DEL, 0x0138, "Current Tier 29 Summation Delivered" ) \ |
4529 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_29_SUM_RECV, 0x0139, "Current Tier 29 Summation Received" ) \ |
4530 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_30_SUM_DEL, 0x013A, "Current Tier 30 Summation Delivered" ) \ |
4531 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_30_SUM_RECV, 0x013B, "Current Tier 30 Summation Received" ) \ |
4532 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_31_SUM_DEL, 0x013C, "Current Tier 31 Summation Delivered" ) \ |
4533 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_31_SUM_RECV, 0x013D, "Current Tier 31 Summation Received" ) \ |
4534 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_32_SUM_DEL, 0x013E, "Current Tier 32 Summation Delivered" ) \ |
4535 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_32_SUM_RECV, 0x013F, "Current Tier 32 Summation Received" ) \ |
4536 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_33_SUM_DEL, 0x0140, "Current Tier 33 Summation Delivered" ) \ |
4537 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_33_SUM_RECV, 0x0141, "Current Tier 33 Summation Received" ) \ |
4538 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_34_SUM_DEL, 0x0142, "Current Tier 34 Summation Delivered" ) \ |
4539 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_34_SUM_RECV, 0x0143, "Current Tier 34 Summation Received" ) \ |
4540 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_35_SUM_DEL, 0x0144, "Current Tier 35 Summation Delivered" ) \ |
4541 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_35_SUM_RECV, 0x0145, "Current Tier 35 Summation Received" ) \ |
4542 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_36_SUM_DEL, 0x0146, "Current Tier 36 Summation Delivered" ) \ |
4543 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_36_SUM_RECV, 0x0147, "Current Tier 36 Summation Received" ) \ |
4544 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_37_SUM_DEL, 0x0148, "Current Tier 37 Summation Delivered" ) \ |
4545 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_37_SUM_RECV, 0x0149, "Current Tier 37 Summation Received" ) \ |
4546 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_38_SUM_DEL, 0x014A, "Current Tier 38 Summation Delivered" ) \ |
4547 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_38_SUM_RECV, 0x014B, "Current Tier 38 Summation Received" ) \ |
4548 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_39_SUM_DEL, 0x014C, "Current Tier 39 Summation Delivered" ) \ |
4549 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_39_SUM_RECV, 0x014D, "Current Tier 39 Summation Received" ) \ |
4550 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_40_SUM_DEL, 0x014E, "Current Tier 40 Summation Delivered" ) \ |
4551 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_40_SUM_RECV, 0x014F, "Current Tier 40 Summation Received" ) \ |
4552 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_41_SUM_DEL, 0x0150, "Current Tier 41 Summation Delivered" ) \ |
4553 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_41_SUM_RECV, 0x0151, "Current Tier 41 Summation Received" ) \ |
4554 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_42_SUM_DEL, 0x0152, "Current Tier 42 Summation Delivered" ) \ |
4555 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_42_SUM_RECV, 0x0153, "Current Tier 42 Summation Received" ) \ |
4556 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_43_SUM_DEL, 0x0154, "Current Tier 43 Summation Delivered" ) \ |
4557 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_43_SUM_RECV, 0x0155, "Current Tier 43 Summation Received" ) \ |
4558 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_44_SUM_DEL, 0x0156, "Current Tier 44 Summation Delivered" ) \ |
4559 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_44_SUM_RECV, 0x0157, "Current Tier 44 Summation Received" ) \ |
4560 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_45_SUM_DEL, 0x0158, "Current Tier 45 Summation Delivered" ) \ |
4561 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_45_SUM_RECV, 0x0159, "Current Tier 45 Summation Received" ) \ |
4562 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_46_SUM_DEL, 0x015A, "Current Tier 46 Summation Delivered" ) \ |
4563 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_46_SUM_RECV, 0x015B, "Current Tier 46 Summation Received" ) \ |
4564 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_47_SUM_DEL, 0x015C, "Current Tier 47 Summation Delivered" ) \ |
4565 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_47_SUM_RECV, 0x015D, "Current Tier 47 Summation Received" ) \ |
4566 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_48_SUM_DEL, 0x015E, "Current Tier 48 Summation Delivered" ) \ |
4567 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_TIER_48_SUM_RECV, 0x015F, "Current Tier 48 Summation Received" ) \ |
4568 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CPP1_SUMMATION_DELIVERED, 0x01FC, "CPP1 Summation Delivered" ) \ |
4569 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CPP2_SUMMATION_DELIVERED, 0x01FE, "CPP2 Summation Delivered" ) \ |
4570 | | /* Meter Status Attribute Set */ \ |
4571 | | XXX(ZBEE_ZCL_ATTR_ID_MET_STATUS, 0x0200, "Status" ) \ |
4572 | | XXX(ZBEE_ZCL_ATTR_ID_MET_REMAIN_BAT_LIFE, 0x0201, "Remaining Battery Life" ) \ |
4573 | | XXX(ZBEE_ZCL_ATTR_ID_MET_HOURS_IN_OPERATION, 0x0202, "Hours in Operation" ) \ |
4574 | | XXX(ZBEE_ZCL_ATTR_ID_MET_HOURS_IN_FAULT, 0x0203, "Hours in Fault" ) \ |
4575 | | XXX(ZBEE_ZCL_ATTR_ID_MET_EXTENDED_STATUS, 0x0204, "Extended Status" ) \ |
4576 | | XXX(ZBEE_ZCL_ATTR_ID_MET_REMAIN_BAT_LIFE_DAYS, 0x0205, "Remaining Battery Life in Days" ) \ |
4577 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_METER_ID, 0x0206, "Current Meter ID" ) \ |
4578 | | XXX(ZBEE_ZCL_ATTR_ID_MET_AMBIENT_CON_IND, 0x0207, "Ambient Consumption Indicator" ) \ |
4579 | | /* Formatting */ \ |
4580 | | XXX(ZBEE_ZCL_ATTR_ID_MET_UNIT_OF_MEASURE, 0x0300, "Unit of Measure" ) \ |
4581 | | XXX(ZBEE_ZCL_ATTR_ID_MET_MULTIPLIER, 0x0301, "Multiplier" ) \ |
4582 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DIVISOR, 0x0302, "Divisor" ) \ |
4583 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SUMMATION_FORMATTING, 0x0303, "Summation Formatting" ) \ |
4584 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_FORMATTING, 0x0304, "Demand Formatting" ) \ |
4585 | | XXX(ZBEE_ZCL_ATTR_ID_MET_HISTORICAL_CON_FORMATTING, 0x0305, "Historical Consumption Formatting" ) \ |
4586 | | XXX(ZBEE_ZCL_ATTR_ID_MET_METERING_DEVICE_TYPE, 0x0306, "Metering Device Type" ) \ |
4587 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SITE_ID, 0x0307, "Site ID" ) \ |
4588 | | XXX(ZBEE_ZCL_ATTR_ID_MET_METER_SERIAL_NUMBER, 0x0308, "Meter Serial Number" ) \ |
4589 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_UNIT_OF_MEASURE, 0x0309, "Energy Carrier Unit of Measure" ) \ |
4590 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_SUMMATION_FORMAT, 0x030A, "Energy Carrier Summation Formatting" ) \ |
4591 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ENERGY_CARRIER_DEMAND_FORMAT, 0x030B, "Energy Carrier Demand Formatting" ) \ |
4592 | | XXX(ZBEE_ZCL_ATTR_ID_MET_TEMPERATURE_UNIT_OF_MEASURE, 0x030C, "Temperature Unit of Measure" ) \ |
4593 | | XXX(ZBEE_ZCL_ATTR_ID_MET_TEMPERATURE_FORMATTING, 0x030D, "Temperature Formatting" ) \ |
4594 | | XXX(ZBEE_ZCL_ATTR_ID_MET_MODULE_SERIAL_NUMBER, 0x030E, "Module Serial Number" ) \ |
4595 | | XXX(ZBEE_ZCL_ATTR_ID_MET_OPERATING_TARIFF_LABEL_DELIVERED, 0x030F, "Operating Tariff Label Delivered" ) \ |
4596 | | XXX(ZBEE_ZCL_ATTR_ID_MET_OPERATING_TARIFF_LABEL_RECEIVED, 0x0310, "Operating Tariff Label Received" ) \ |
4597 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUSTOMER_ID_NUMBER, 0x0311, "Customer ID Number" ) \ |
4598 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_UNIT_OF_MEASURE, 0x0312, "Alternative Unit of Measure" ) \ |
4599 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_DEMAND_FORMATTING, 0x0313, "Alternative Demand Formatting" ) \ |
4600 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ALT_CON_FORMATTING, 0x0314, "Alternative Consumption Formatting" ) \ |
4601 | | /* Historical Consumption Attribute */ \ |
4602 | | XXX(ZBEE_ZCL_ATTR_ID_MET_INSTANT_DEMAND, 0x0400, "Instantaneous Demand" ) \ |
4603 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_CON_DEL, 0x0401, "Current Day Consumption Delivered" ) \ |
4604 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_CON_RECV, 0x0402, "Current Day Consumption Received" ) \ |
4605 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_CON_DEL, 0x0403, "Previous Day Consumption Delivered" ) \ |
4606 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_CON_RECV, 0x0404, "Previous Day Consumption Received" ) \ |
4607 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_START_DEL, 0x0405, "Current Partial Profile Interval Start Time Delivered" ) \ |
4608 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_START_RECV, 0x0406, "Current Partial Profile Interval Start Time Received" ) \ |
4609 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_VALUE_DEL, 0x0407, "Current Partial Profile Interval Value Delivered" ) \ |
4610 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_PAR_PROF_INT_VALUE_RECV, 0x0408, "Current Partial Profile Interval Value Received" ) \ |
4611 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_PRESSURE, 0x0409, "Current Day Max Pressure" ) \ |
4612 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MIN_PRESSURE, 0x040A, "Current Day Min Pressure" ) \ |
4613 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_PRESSURE, 0x040B, "Previous Day Max Pressure" ) \ |
4614 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MIN_PRESSURE, 0x040C, "Previous Day Min Pressure" ) \ |
4615 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_DEMAND, 0x040D, "Current Day Max Demand" ) \ |
4616 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_DEMAND, 0x040E, "Previous Day Max Demand" ) \ |
4617 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MAX_DEMAND, 0x040F, "Current Month Max Demand" ) \ |
4618 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MAX_DEMAND, 0x0410, "Current Year Max Demand" ) \ |
4619 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_MAX_ENERGY_CARR_DEM, 0x0411, "Current Day Max Energy Carrier Demand" ) \ |
4620 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_MAX_ENERGY_CARR_DEM, 0x0412, "Previous Day Max Energy Carrier Demand" ) \ |
4621 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MAX_ENERGY_CARR_DEM, 0x0413, "Current Month Max Energy Carrier Demand" ) \ |
4622 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_MIN_ENERGY_CARR_DEM, 0x0414, "Current Month Min Energy Carrier Demand" ) \ |
4623 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MAX_ENERGY_CARR_DEM, 0x0415, "Current Year Max Energy Carrier Demand" ) \ |
4624 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_MIN_ENERGY_CARR_DEM, 0x0416, "Current Year Min Energy Carrier Demand" ) \ |
4625 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_2_DAY_CON_DEL, 0x0420, "Previous Day 2 Consumption Delivered" ) \ |
4626 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_2_DAY_CON_RECV, 0x0421, "Previous Day 2 Consumption Received" ) \ |
4627 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_3_DAY_CON_DEL, 0x0422, "Previous Day 3 Consumption Delivered" ) \ |
4628 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_3_DAY_CON_RECV, 0x0423, "Previous Day 3 Consumption Received" ) \ |
4629 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_4_DAY_CON_DEL, 0x0424, "Previous Day 4 Consumption Delivered" ) \ |
4630 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_4_DAY_CON_RECV, 0x0425, "Previous Day 4 Consumption Received" ) \ |
4631 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_5_DAY_CON_DEL, 0x0426, "Previous Day 5 Consumption Delivered" ) \ |
4632 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_5_DAY_CON_RECV, 0x0427, "Previous Day 5 Consumption Received" ) \ |
4633 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_6_DAY_CON_DEL, 0x0428, "Previous Day 6 Consumption Delivered" ) \ |
4634 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_6_DAY_CON_RECV, 0x0429, "Previous Day 6 Consumption Received" ) \ |
4635 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_7_DAY_CON_DEL, 0x042A, "Previous Day 7 Consumption Delivered" ) \ |
4636 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_7_DAY_CON_RECV, 0x042B, "Previous Day 7 Consumption Received" ) \ |
4637 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_8_DAY_CON_DEL, 0x042C, "Previous Day 8 Consumption Delivered" ) \ |
4638 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_8_DAY_CON_RECV, 0x042D, "Previous Day 8 Consumption Received" ) \ |
4639 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_CON_DEL, 0x0430, "Current Week Consumption Delivered" ) \ |
4640 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_CON_RECV, 0x0431, "Current Week Consumption Received" ) \ |
4641 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_CON_DEL, 0x0432, "Previous Week Consumption Delivered" ) \ |
4642 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_CON_RECV, 0x0433, "Previous Week Consumption Received" ) \ |
4643 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_CON_DEL, 0x0434, "Previous Week 2 Consumption Delivered" ) \ |
4644 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_CON_RECV, 0x0435, "Previous Week 2 Consumption Received" ) \ |
4645 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_CON_DEL, 0x0436, "Previous Week 3 Consumption Delivered" ) \ |
4646 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_CON_RECV, 0x0437, "Previous Week 3 Consumption Received" ) \ |
4647 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_CON_DEL, 0x0438, "Previous Week 4 Consumption Delivered" ) \ |
4648 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_CON_RECV, 0x0439, "Previous Week 4 Consumption Received" ) \ |
4649 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_CON_DEL, 0x043A, "Previous Week 5 Consumption Delivered" ) \ |
4650 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_CON_RECV, 0x043B, "Previous Week 5 Consumption Received" ) \ |
4651 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_CON_DEL, 0x0440, "Current Month Consumption Delivered" ) \ |
4652 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_CON_RECV, 0x0441, "Current Month Consumption Received" ) \ |
4653 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_CON_DEL, 0x0442, "Previous Month Consumption Delivered" ) \ |
4654 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_CON_RECV, 0x0443, "Previous Month Consumption Received" ) \ |
4655 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_CON_DEL, 0x0444, "Previous Month 2 Consumption Delivered" ) \ |
4656 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_CON_RECV, 0x0445, "Previous Month 2 Consumption Received" ) \ |
4657 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_CON_DEL, 0x0446, "Previous Month 3 Consumption Delivered" ) \ |
4658 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_CON_RECV, 0x0447, "Previous Month 3 Consumption Received" ) \ |
4659 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_CON_DEL, 0x0448, "Previous Month 4 Consumption Delivered" ) \ |
4660 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_CON_RECV, 0x0449, "Previous Month 4 Consumption Received" ) \ |
4661 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_CON_DEL, 0x044A, "Previous Month 5 Consumption Delivered" ) \ |
4662 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_CON_RECV, 0x044B, "Previous Month 5 Consumption Received" ) \ |
4663 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_CON_DEL, 0x044C, "Previous Month 6 Consumption Delivered" ) \ |
4664 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_CON_RECV, 0x044D, "Previous Month 6 Consumption Received" ) \ |
4665 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_CON_DEL, 0x044E, "Previous Month 7 Consumption Delivered" ) \ |
4666 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_CON_RECV, 0x044F, "Previous Month 7 Consumption Received" ) \ |
4667 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_CON_DEL, 0x0450, "Previous Month 8 Consumption Delivered" ) \ |
4668 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_CON_RECV, 0x0451, "Previous Month 8 Consumption Received" ) \ |
4669 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_CON_DEL, 0x0452, "Previous Month 9 Consumption Delivered" ) \ |
4670 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_CON_RECV, 0x0453, "Previous Month 9 Consumption Received" ) \ |
4671 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_CON_DEL, 0x0454, "Previous Month 10 Consumption Delivered" ) \ |
4672 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_CON_RECV, 0x0455, "Previous Month 10 Consumption Received" ) \ |
4673 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_CON_DEL, 0x0456, "Previous Month 11 Consumption Delivered" ) \ |
4674 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_CON_RECV, 0x0457, "Previous Month 11 Consumption Received" ) \ |
4675 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_CON_DEL, 0x0458, "Previous Month 12 Consumption Delivered" ) \ |
4676 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_CON_RECV, 0x0459, "Previous Month 12 Consumption Received" ) \ |
4677 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_CON_DEL, 0x045A, "Previous Month 13 Consumption Delivered" ) \ |
4678 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_CON_RECV, 0x045B, "Previous Month 13 Consumption Received" ) \ |
4679 | | XXX(ZBEE_ZCL_ATTR_ID_MET_HISTORICAL_FREEZE_TIME, 0x045C, "Historical Freeze Time" ) \ |
4680 | | /* Load Profile Configuration */ \ |
4681 | | XXX(ZBEE_ZCL_ATTR_ID_MET_MAX_NUMBER_OF_PERIODS_DELIVERED, 0x0500, "Max Number of Periods Delivered" ) \ |
4682 | | /* Supply Limit Attributes */ \ |
4683 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DEMAND_DELIVERED, 0x0600, "Current Demand Delivered" ) \ |
4684 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_LIMIT, 0x0601, "Demand Limit" ) \ |
4685 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_INTEGRATION_PERIOD, 0x0602, "Demand Integration Period" ) \ |
4686 | | XXX(ZBEE_ZCL_ATTR_ID_MET_NUMBER_OF_DEMAND_SUBINTERVALS, 0x0603, "Number of Demand Subintervals" ) \ |
4687 | | XXX(ZBEE_ZCL_ATTR_ID_MET_DEMAND_LIMIT_ARM_DURATION, 0x0604, "Demand Limit Arm Duration" ) \ |
4688 | | XXX(ZBEE_ZCL_ATTR_ID_MET_LOAD_LIMIT_SUPPLY_STATE, 0x0605, "Load Limit Supply State" ) \ |
4689 | | XXX(ZBEE_ZCL_ATTR_ID_MET_LOAD_LIMIT_COUNTER, 0x0606, "Load Limit Counter" ) \ |
4690 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_TAMPER_STATE, 0x0607, "Supply Tamper State" ) \ |
4691 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_DEPLETION_STATE, 0x0608, "Supply Depletion State" ) \ |
4692 | | XXX(ZBEE_ZCL_ATTR_ID_MET_SUPPLY_UNCONTROLLED_FLOW_STATE, 0x0609, "Supply Uncontrolled Flow State" ) \ |
4693 | | /* Block Information Attribute Set (Delivered) */ \ |
4694 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_1_SUM_DEL, 0x0700, "Current No Tier Block 1 Summation Delivered" ) \ |
4695 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_2_SUM_DEL, 0x0701, "Current No Tier Block 2 Summation Delivered" ) \ |
4696 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_3_SUM_DEL, 0x0702, "Current No Tier Block 3 Summation Delivered" ) \ |
4697 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_4_SUM_DEL, 0x0703, "Current No Tier Block 4 Summation Delivered" ) \ |
4698 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_5_SUM_DEL, 0x0704, "Current No Tier Block 5 Summation Delivered" ) \ |
4699 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_6_SUM_DEL, 0x0705, "Current No Tier Block 6 Summation Delivered" ) \ |
4700 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_7_SUM_DEL, 0x0706, "Current No Tier Block 7 Summation Delivered" ) \ |
4701 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_8_SUM_DEL, 0x0707, "Current No Tier Block 8 Summation Delivered" ) \ |
4702 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_9_SUM_DEL, 0x0708, "Current No Tier Block 9 Summation Delivered" ) \ |
4703 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_10_SUM_DEL, 0x0709, "Current No Tier Block 10 Summation Delivered" ) \ |
4704 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_11_SUM_DEL, 0x070A, "Current No Tier Block 11 Summation Delivered" ) \ |
4705 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_12_SUM_DEL, 0x070B, "Current No Tier Block 12 Summation Delivered" ) \ |
4706 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_13_SUM_DEL, 0x070C, "Current No Tier Block 13 Summation Delivered" ) \ |
4707 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_14_SUM_DEL, 0x070D, "Current No Tier Block 14 Summation Delivered" ) \ |
4708 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_15_SUM_DEL, 0x070E, "Current No Tier Block 15 Summation Delivered" ) \ |
4709 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_16_SUM_DEL, 0x070F, "Current No Tier Block 16 Summation Delivered" ) \ |
4710 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_1_SUM_DEL, 0x0710, "Current Tier 1 Block 1 Summation Delivered" ) \ |
4711 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_2_SUM_DEL, 0x0711, "Current Tier 1 Block 2 Summation Delivered" ) \ |
4712 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_3_SUM_DEL, 0x0712, "Current Tier 1 Block 3 Summation Delivered" ) \ |
4713 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_4_SUM_DEL, 0x0713, "Current Tier 1 Block 4 Summation Delivered" ) \ |
4714 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_5_SUM_DEL, 0x0714, "Current Tier 1 Block 5 Summation Delivered" ) \ |
4715 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_6_SUM_DEL, 0x0715, "Current Tier 1 Block 6 Summation Delivered" ) \ |
4716 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_7_SUM_DEL, 0x0716, "Current Tier 1 Block 7 Summation Delivered" ) \ |
4717 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_8_SUM_DEL, 0x0717, "Current Tier 1 Block 8 Summation Delivered" ) \ |
4718 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_9_SUM_DEL, 0x0718, "Current Tier 1 Block 9 Summation Delivered" ) \ |
4719 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_10_SUM_DEL, 0x0719, "Current Tier 1 Block 10 Summation Delivered" ) \ |
4720 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_11_SUM_DEL, 0x071A, "Current Tier 1 Block 11 Summation Delivered" ) \ |
4721 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_12_SUM_DEL, 0x071B, "Current Tier 1 Block 12 Summation Delivered" ) \ |
4722 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_13_SUM_DEL, 0x071C, "Current Tier 1 Block 13 Summation Delivered" ) \ |
4723 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_14_SUM_DEL, 0x071D, "Current Tier 1 Block 14 Summation Delivered" ) \ |
4724 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_15_SUM_DEL, 0x071E, "Current Tier 1 Block 15 Summation Delivered" ) \ |
4725 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_16_SUM_DEL, 0x071F, "Current Tier 1 Block 16 Summation Delivered" ) \ |
4726 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_1_SUM_DEL, 0x0720, "Current Tier 2 Block 1 Summation Delivered" ) \ |
4727 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_2_SUM_DEL, 0x0721, "Current Tier 2 Block 2 Summation Delivered" ) \ |
4728 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_3_SUM_DEL, 0x0722, "Current Tier 2 Block 3 Summation Delivered" ) \ |
4729 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_4_SUM_DEL, 0x0723, "Current Tier 2 Block 4 Summation Delivered" ) \ |
4730 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_5_SUM_DEL, 0x0724, "Current Tier 2 Block 5 Summation Delivered" ) \ |
4731 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_6_SUM_DEL, 0x0725, "Current Tier 2 Block 6 Summation Delivered" ) \ |
4732 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_7_SUM_DEL, 0x0726, "Current Tier 2 Block 7 Summation Delivered" ) \ |
4733 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_8_SUM_DEL, 0x0727, "Current Tier 2 Block 8 Summation Delivered" ) \ |
4734 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_9_SUM_DEL, 0x0728, "Current Tier 2 Block 9 Summation Delivered" ) \ |
4735 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_10_SUM_DEL, 0x0729, "Current Tier 2 Block 10 Summation Delivered" ) \ |
4736 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_11_SUM_DEL, 0x072A, "Current Tier 2 Block 11 Summation Delivered" ) \ |
4737 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_12_SUM_DEL, 0x072B, "Current Tier 2 Block 12 Summation Delivered" ) \ |
4738 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_13_SUM_DEL, 0x072C, "Current Tier 2 Block 13 Summation Delivered" ) \ |
4739 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_14_SUM_DEL, 0x072D, "Current Tier 2 Block 14 Summation Delivered" ) \ |
4740 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_15_SUM_DEL, 0x072E, "Current Tier 2 Block 15 Summation Delivered" ) \ |
4741 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_16_SUM_DEL, 0x072F, "Current Tier 2 Block 16 Summation Delivered" ) \ |
4742 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_1_SUM_DEL, 0x0730, "Current Tier 3 Block 1 Summation Delivered" ) \ |
4743 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_2_SUM_DEL, 0x0731, "Current Tier 3 Block 2 Summation Delivered" ) \ |
4744 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_3_SUM_DEL, 0x0732, "Current Tier 3 Block 3 Summation Delivered" ) \ |
4745 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_4_SUM_DEL, 0x0733, "Current Tier 3 Block 4 Summation Delivered" ) \ |
4746 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_5_SUM_DEL, 0x0734, "Current Tier 3 Block 5 Summation Delivered" ) \ |
4747 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_6_SUM_DEL, 0x0735, "Current Tier 3 Block 6 Summation Delivered" ) \ |
4748 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_7_SUM_DEL, 0x0736, "Current Tier 3 Block 7 Summation Delivered" ) \ |
4749 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_8_SUM_DEL, 0x0737, "Current Tier 3 Block 8 Summation Delivered" ) \ |
4750 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_9_SUM_DEL, 0x0738, "Current Tier 3 Block 9 Summation Delivered" ) \ |
4751 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_10_SUM_DEL, 0x0739, "Current Tier 3 Block 10 Summation Delivered" ) \ |
4752 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_11_SUM_DEL, 0x073A, "Current Tier 3 Block 11 Summation Delivered" ) \ |
4753 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_12_SUM_DEL, 0x073B, "Current Tier 3 Block 12 Summation Delivered" ) \ |
4754 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_13_SUM_DEL, 0x073C, "Current Tier 3 Block 13 Summation Delivered" ) \ |
4755 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_14_SUM_DEL, 0x073D, "Current Tier 3 Block 14 Summation Delivered" ) \ |
4756 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_15_SUM_DEL, 0x073E, "Current Tier 3 Block 15 Summation Delivered" ) \ |
4757 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_16_SUM_DEL, 0x073F, "Current Tier 3 Block 16 Summation Delivered" ) \ |
4758 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_1_SUM_DEL, 0x0740, "Current Tier 4 Block 1 Summation Delivered" ) \ |
4759 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_2_SUM_DEL, 0x0741, "Current Tier 4 Block 2 Summation Delivered" ) \ |
4760 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_3_SUM_DEL, 0x0742, "Current Tier 4 Block 3 Summation Delivered" ) \ |
4761 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_4_SUM_DEL, 0x0743, "Current Tier 4 Block 4 Summation Delivered" ) \ |
4762 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_5_SUM_DEL, 0x0744, "Current Tier 4 Block 5 Summation Delivered" ) \ |
4763 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_6_SUM_DEL, 0x0745, "Current Tier 4 Block 6 Summation Delivered" ) \ |
4764 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_7_SUM_DEL, 0x0746, "Current Tier 4 Block 7 Summation Delivered" ) \ |
4765 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_8_SUM_DEL, 0x0747, "Current Tier 4 Block 8 Summation Delivered" ) \ |
4766 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_9_SUM_DEL, 0x0748, "Current Tier 4 Block 9 Summation Delivered" ) \ |
4767 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_10_SUM_DEL, 0x0749, "Current Tier 4 Block 10 Summation Delivered" ) \ |
4768 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_11_SUM_DEL, 0x074A, "Current Tier 4 Block 11 Summation Delivered" ) \ |
4769 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_12_SUM_DEL, 0x074B, "Current Tier 4 Block 12 Summation Delivered" ) \ |
4770 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_13_SUM_DEL, 0x074C, "Current Tier 4 Block 13 Summation Delivered" ) \ |
4771 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_14_SUM_DEL, 0x074D, "Current Tier 4 Block 14 Summation Delivered" ) \ |
4772 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_15_SUM_DEL, 0x074E, "Current Tier 4 Block 15 Summation Delivered" ) \ |
4773 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_16_SUM_DEL, 0x074F, "Current Tier 4 Block 16 Summation Delivered" ) \ |
4774 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_1_SUM_DEL, 0x0750, "Current Tier 5 Block 1 Summation Delivered" ) \ |
4775 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_2_SUM_DEL, 0x0751, "Current Tier 5 Block 2 Summation Delivered" ) \ |
4776 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_3_SUM_DEL, 0x0752, "Current Tier 5 Block 3 Summation Delivered" ) \ |
4777 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_4_SUM_DEL, 0x0753, "Current Tier 5 Block 4 Summation Delivered" ) \ |
4778 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_5_SUM_DEL, 0x0754, "Current Tier 5 Block 5 Summation Delivered" ) \ |
4779 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_6_SUM_DEL, 0x0755, "Current Tier 5 Block 6 Summation Delivered" ) \ |
4780 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_7_SUM_DEL, 0x0756, "Current Tier 5 Block 7 Summation Delivered" ) \ |
4781 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_8_SUM_DEL, 0x0757, "Current Tier 5 Block 8 Summation Delivered" ) \ |
4782 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_9_SUM_DEL, 0x0758, "Current Tier 5 Block 9 Summation Delivered" ) \ |
4783 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_10_SUM_DEL, 0x0759, "Current Tier 5 Block 10 Summation Delivered" ) \ |
4784 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_11_SUM_DEL, 0x075A, "Current Tier 5 Block 11 Summation Delivered" ) \ |
4785 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_12_SUM_DEL, 0x075B, "Current Tier 5 Block 12 Summation Delivered" ) \ |
4786 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_13_SUM_DEL, 0x075C, "Current Tier 5 Block 13 Summation Delivered" ) \ |
4787 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_14_SUM_DEL, 0x075D, "Current Tier 5 Block 14 Summation Delivered" ) \ |
4788 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_15_SUM_DEL, 0x075E, "Current Tier 5 Block 15 Summation Delivered" ) \ |
4789 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_16_SUM_DEL, 0x075F, "Current Tier 5 Block 16 Summation Delivered" ) \ |
4790 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_1_SUM_DEL, 0x0760, "Current Tier 6 Block 1 Summation Delivered" ) \ |
4791 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_2_SUM_DEL, 0x0761, "Current Tier 6 Block 2 Summation Delivered" ) \ |
4792 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_3_SUM_DEL, 0x0762, "Current Tier 6 Block 3 Summation Delivered" ) \ |
4793 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_4_SUM_DEL, 0x0763, "Current Tier 6 Block 4 Summation Delivered" ) \ |
4794 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_5_SUM_DEL, 0x0764, "Current Tier 6 Block 5 Summation Delivered" ) \ |
4795 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_6_SUM_DEL, 0x0765, "Current Tier 6 Block 6 Summation Delivered" ) \ |
4796 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_7_SUM_DEL, 0x0766, "Current Tier 6 Block 7 Summation Delivered" ) \ |
4797 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_8_SUM_DEL, 0x0767, "Current Tier 6 Block 8 Summation Delivered" ) \ |
4798 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_9_SUM_DEL, 0x0768, "Current Tier 6 Block 9 Summation Delivered" ) \ |
4799 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_10_SUM_DEL, 0x0769, "Current Tier 6 Block 10 Summation Delivered" ) \ |
4800 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_11_SUM_DEL, 0x076A, "Current Tier 6 Block 11 Summation Delivered" ) \ |
4801 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_12_SUM_DEL, 0x076B, "Current Tier 6 Block 12 Summation Delivered" ) \ |
4802 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_13_SUM_DEL, 0x076C, "Current Tier 6 Block 13 Summation Delivered" ) \ |
4803 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_14_SUM_DEL, 0x076D, "Current Tier 6 Block 14 Summation Delivered" ) \ |
4804 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_15_SUM_DEL, 0x076E, "Current Tier 6 Block 15 Summation Delivered" ) \ |
4805 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_16_SUM_DEL, 0x076F, "Current Tier 6 Block 16 Summation Delivered" ) \ |
4806 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_1_SUM_DEL, 0x0770, "Current Tier 7 Block 1 Summation Delivered" ) \ |
4807 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_2_SUM_DEL, 0x0771, "Current Tier 7 Block 2 Summation Delivered" ) \ |
4808 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_3_SUM_DEL, 0x0772, "Current Tier 7 Block 3 Summation Delivered" ) \ |
4809 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_4_SUM_DEL, 0x0773, "Current Tier 7 Block 4 Summation Delivered" ) \ |
4810 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_5_SUM_DEL, 0x0774, "Current Tier 7 Block 5 Summation Delivered" ) \ |
4811 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_6_SUM_DEL, 0x0775, "Current Tier 7 Block 6 Summation Delivered" ) \ |
4812 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_7_SUM_DEL, 0x0776, "Current Tier 7 Block 7 Summation Delivered" ) \ |
4813 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_8_SUM_DEL, 0x0777, "Current Tier 7 Block 8 Summation Delivered" ) \ |
4814 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_9_SUM_DEL, 0x0778, "Current Tier 7 Block 9 Summation Delivered" ) \ |
4815 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_10_SUM_DEL, 0x0779, "Current Tier 7 Block 10 Summation Delivered" ) \ |
4816 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_11_SUM_DEL, 0x077A, "Current Tier 7 Block 11 Summation Delivered" ) \ |
4817 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_12_SUM_DEL, 0x077B, "Current Tier 7 Block 12 Summation Delivered" ) \ |
4818 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_13_SUM_DEL, 0x077C, "Current Tier 7 Block 13 Summation Delivered" ) \ |
4819 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_14_SUM_DEL, 0x077D, "Current Tier 7 Block 14 Summation Delivered" ) \ |
4820 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_15_SUM_DEL, 0x077E, "Current Tier 7 Block 15 Summation Delivered" ) \ |
4821 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_16_SUM_DEL, 0x077F, "Current Tier 7 Block 16 Summation Delivered" ) \ |
4822 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_1_SUM_DEL, 0x0780, "Current Tier 8 Block 1 Summation Delivered" ) \ |
4823 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_2_SUM_DEL, 0x0781, "Current Tier 8 Block 2 Summation Delivered" ) \ |
4824 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_3_SUM_DEL, 0x0782, "Current Tier 8 Block 3 Summation Delivered" ) \ |
4825 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_4_SUM_DEL, 0x0783, "Current Tier 8 Block 4 Summation Delivered" ) \ |
4826 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_5_SUM_DEL, 0x0784, "Current Tier 8 Block 5 Summation Delivered" ) \ |
4827 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_6_SUM_DEL, 0x0785, "Current Tier 8 Block 6 Summation Delivered" ) \ |
4828 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_7_SUM_DEL, 0x0786, "Current Tier 8 Block 7 Summation Delivered" ) \ |
4829 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_8_SUM_DEL, 0x0787, "Current Tier 8 Block 8 Summation Delivered" ) \ |
4830 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_9_SUM_DEL, 0x0788, "Current Tier 8 Block 9 Summation Delivered" ) \ |
4831 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_10_SUM_DEL, 0x0789, "Current Tier 8 Block 10 Summation Delivered" ) \ |
4832 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_11_SUM_DEL, 0x078A, "Current Tier 8 Block 11 Summation Delivered" ) \ |
4833 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_12_SUM_DEL, 0x078B, "Current Tier 8 Block 12 Summation Delivered" ) \ |
4834 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_13_SUM_DEL, 0x078C, "Current Tier 8 Block 13 Summation Delivered" ) \ |
4835 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_14_SUM_DEL, 0x078D, "Current Tier 8 Block 14 Summation Delivered" ) \ |
4836 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_15_SUM_DEL, 0x078E, "Current Tier 8 Block 15 Summation Delivered" ) \ |
4837 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_16_SUM_DEL, 0x078F, "Current Tier 8 Block 16 Summation Delivered" ) \ |
4838 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_1_SUM_DEL, 0x0790, "Current Tier 9 Block 1 Summation Delivered" ) \ |
4839 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_2_SUM_DEL, 0x0791, "Current Tier 9 Block 2 Summation Delivered" ) \ |
4840 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_3_SUM_DEL, 0x0792, "Current Tier 9 Block 3 Summation Delivered" ) \ |
4841 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_4_SUM_DEL, 0x0793, "Current Tier 9 Block 4 Summation Delivered" ) \ |
4842 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_5_SUM_DEL, 0x0794, "Current Tier 9 Block 5 Summation Delivered" ) \ |
4843 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_6_SUM_DEL, 0x0795, "Current Tier 9 Block 6 Summation Delivered" ) \ |
4844 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_7_SUM_DEL, 0x0796, "Current Tier 9 Block 7 Summation Delivered" ) \ |
4845 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_8_SUM_DEL, 0x0797, "Current Tier 9 Block 8 Summation Delivered" ) \ |
4846 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_9_SUM_DEL, 0x0798, "Current Tier 9 Block 9 Summation Delivered" ) \ |
4847 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_10_SUM_DEL, 0x0799, "Current Tier 9 Block 10 Summation Delivered" ) \ |
4848 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_11_SUM_DEL, 0x079A, "Current Tier 9 Block 11 Summation Delivered" ) \ |
4849 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_12_SUM_DEL, 0x079B, "Current Tier 9 Block 12 Summation Delivered" ) \ |
4850 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_13_SUM_DEL, 0x079C, "Current Tier 9 Block 13 Summation Delivered" ) \ |
4851 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_14_SUM_DEL, 0x079D, "Current Tier 9 Block 14 Summation Delivered" ) \ |
4852 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_15_SUM_DEL, 0x079E, "Current Tier 9 Block 15 Summation Delivered" ) \ |
4853 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_16_SUM_DEL, 0x079F, "Current Tier 9 Block 16 Summation Delivered" ) \ |
4854 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_1_SUM_DEL, 0x07A0, "Current Tier 10 Block 1 Summation Delivered" ) \ |
4855 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_2_SUM_DEL, 0x07A1, "Current Tier 10 Block 2 Summation Delivered" ) \ |
4856 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_3_SUM_DEL, 0x07A2, "Current Tier 10 Block 3 Summation Delivered" ) \ |
4857 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_4_SUM_DEL, 0x07A3, "Current Tier 10 Block 4 Summation Delivered" ) \ |
4858 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_5_SUM_DEL, 0x07A4, "Current Tier 10 Block 5 Summation Delivered" ) \ |
4859 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_6_SUM_DEL, 0x07A5, "Current Tier 10 Block 6 Summation Delivered" ) \ |
4860 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_7_SUM_DEL, 0x07A6, "Current Tier 10 Block 7 Summation Delivered" ) \ |
4861 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_8_SUM_DEL, 0x07A7, "Current Tier 10 Block 8 Summation Delivered" ) \ |
4862 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_9_SUM_DEL, 0x07A8, "Current Tier 10 Block 9 Summation Delivered" ) \ |
4863 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_10_SUM_DEL, 0x07A9, "Current Tier 10 Block 10 Summation Delivered" ) \ |
4864 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_11_SUM_DEL, 0x07AA, "Current Tier 10 Block 11 Summation Delivered" ) \ |
4865 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_12_SUM_DEL, 0x07AB, "Current Tier 10 Block 12 Summation Delivered" ) \ |
4866 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_13_SUM_DEL, 0x07AC, "Current Tier 10 Block 13 Summation Delivered" ) \ |
4867 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_14_SUM_DEL, 0x07AD, "Current Tier 10 Block 14 Summation Delivered" ) \ |
4868 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_15_SUM_DEL, 0x07AE, "Current Tier 10 Block 15 Summation Delivered" ) \ |
4869 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_16_SUM_DEL, 0x07AF, "Current Tier 10 Block 16 Summation Delivered" ) \ |
4870 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_1_SUM_DEL, 0x07B0, "Current Tier 11 Block 1 Summation Delivered" ) \ |
4871 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_2_SUM_DEL, 0x07B1, "Current Tier 11 Block 2 Summation Delivered" ) \ |
4872 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_3_SUM_DEL, 0x07B2, "Current Tier 11 Block 3 Summation Delivered" ) \ |
4873 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_4_SUM_DEL, 0x07B3, "Current Tier 11 Block 4 Summation Delivered" ) \ |
4874 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_5_SUM_DEL, 0x07B4, "Current Tier 11 Block 5 Summation Delivered" ) \ |
4875 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_6_SUM_DEL, 0x07B5, "Current Tier 11 Block 6 Summation Delivered" ) \ |
4876 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_7_SUM_DEL, 0x07B6, "Current Tier 11 Block 7 Summation Delivered" ) \ |
4877 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_8_SUM_DEL, 0x07B7, "Current Tier 11 Block 8 Summation Delivered" ) \ |
4878 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_9_SUM_DEL, 0x07B8, "Current Tier 11 Block 9 Summation Delivered" ) \ |
4879 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_10_SUM_DEL, 0x07B9, "Current Tier 11 Block 10 Summation Delivered" ) \ |
4880 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_11_SUM_DEL, 0x07BA, "Current Tier 11 Block 11 Summation Delivered" ) \ |
4881 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_12_SUM_DEL, 0x07BB, "Current Tier 11 Block 12 Summation Delivered" ) \ |
4882 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_13_SUM_DEL, 0x07BC, "Current Tier 11 Block 13 Summation Delivered" ) \ |
4883 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_14_SUM_DEL, 0x07BD, "Current Tier 11 Block 14 Summation Delivered" ) \ |
4884 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_15_SUM_DEL, 0x07BE, "Current Tier 11 Block 15 Summation Delivered" ) \ |
4885 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_16_SUM_DEL, 0x07BF, "Current Tier 11 Block 16 Summation Delivered" ) \ |
4886 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_1_SUM_DEL, 0x07C0, "Current Tier 12 Block 1 Summation Delivered" ) \ |
4887 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_2_SUM_DEL, 0x07C1, "Current Tier 12 Block 2 Summation Delivered" ) \ |
4888 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_3_SUM_DEL, 0x07C2, "Current Tier 12 Block 3 Summation Delivered" ) \ |
4889 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_4_SUM_DEL, 0x07C3, "Current Tier 12 Block 4 Summation Delivered" ) \ |
4890 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_5_SUM_DEL, 0x07C4, "Current Tier 12 Block 5 Summation Delivered" ) \ |
4891 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_6_SUM_DEL, 0x07C5, "Current Tier 12 Block 6 Summation Delivered" ) \ |
4892 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_7_SUM_DEL, 0x07C6, "Current Tier 12 Block 7 Summation Delivered" ) \ |
4893 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_8_SUM_DEL, 0x07C7, "Current Tier 12 Block 8 Summation Delivered" ) \ |
4894 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_9_SUM_DEL, 0x07C8, "Current Tier 12 Block 9 Summation Delivered" ) \ |
4895 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_10_SUM_DEL, 0x07C9, "Current Tier 12 Block 10 Summation Delivered" ) \ |
4896 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_11_SUM_DEL, 0x07CA, "Current Tier 12 Block 11 Summation Delivered" ) \ |
4897 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_12_SUM_DEL, 0x07CB, "Current Tier 12 Block 12 Summation Delivered" ) \ |
4898 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_13_SUM_DEL, 0x07CC, "Current Tier 12 Block 13 Summation Delivered" ) \ |
4899 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_14_SUM_DEL, 0x07CD, "Current Tier 12 Block 14 Summation Delivered" ) \ |
4900 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_15_SUM_DEL, 0x07CE, "Current Tier 12 Block 15 Summation Delivered" ) \ |
4901 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_16_SUM_DEL, 0x07CF, "Current Tier 12 Block 16 Summation Delivered" ) \ |
4902 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_1_SUM_DEL, 0x07D0, "Current Tier 13 Block 1 Summation Delivered" ) \ |
4903 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_2_SUM_DEL, 0x07D1, "Current Tier 13 Block 2 Summation Delivered" ) \ |
4904 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_3_SUM_DEL, 0x07D2, "Current Tier 13 Block 3 Summation Delivered" ) \ |
4905 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_4_SUM_DEL, 0x07D3, "Current Tier 13 Block 4 Summation Delivered" ) \ |
4906 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_5_SUM_DEL, 0x07D4, "Current Tier 13 Block 5 Summation Delivered" ) \ |
4907 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_6_SUM_DEL, 0x07D5, "Current Tier 13 Block 6 Summation Delivered" ) \ |
4908 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_7_SUM_DEL, 0x07D6, "Current Tier 13 Block 7 Summation Delivered" ) \ |
4909 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_8_SUM_DEL, 0x07D7, "Current Tier 13 Block 8 Summation Delivered" ) \ |
4910 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_9_SUM_DEL, 0x07D8, "Current Tier 13 Block 9 Summation Delivered" ) \ |
4911 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_10_SUM_DEL, 0x07D9, "Current Tier 13 Block 10 Summation Delivered" ) \ |
4912 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_11_SUM_DEL, 0x07DA, "Current Tier 13 Block 11 Summation Delivered" ) \ |
4913 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_12_SUM_DEL, 0x07DB, "Current Tier 13 Block 12 Summation Delivered" ) \ |
4914 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_13_SUM_DEL, 0x07DC, "Current Tier 13 Block 13 Summation Delivered" ) \ |
4915 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_14_SUM_DEL, 0x07DD, "Current Tier 13 Block 14 Summation Delivered" ) \ |
4916 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_15_SUM_DEL, 0x07DE, "Current Tier 13 Block 15 Summation Delivered" ) \ |
4917 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_16_SUM_DEL, 0x07DF, "Current Tier 13 Block 16 Summation Delivered" ) \ |
4918 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_1_SUM_DEL, 0x07E0, "Current Tier 14 Block 1 Summation Delivered" ) \ |
4919 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_2_SUM_DEL, 0x07E1, "Current Tier 14 Block 2 Summation Delivered" ) \ |
4920 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_3_SUM_DEL, 0x07E2, "Current Tier 14 Block 3 Summation Delivered" ) \ |
4921 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_4_SUM_DEL, 0x07E3, "Current Tier 14 Block 4 Summation Delivered" ) \ |
4922 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_5_SUM_DEL, 0x07E4, "Current Tier 14 Block 5 Summation Delivered" ) \ |
4923 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_6_SUM_DEL, 0x07E5, "Current Tier 14 Block 6 Summation Delivered" ) \ |
4924 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_7_SUM_DEL, 0x07E6, "Current Tier 14 Block 7 Summation Delivered" ) \ |
4925 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_8_SUM_DEL, 0x07E7, "Current Tier 14 Block 8 Summation Delivered" ) \ |
4926 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_9_SUM_DEL, 0x07E8, "Current Tier 14 Block 9 Summation Delivered" ) \ |
4927 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_10_SUM_DEL, 0x07E9, "Current Tier 14 Block 10 Summation Delivered" ) \ |
4928 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_11_SUM_DEL, 0x07EA, "Current Tier 14 Block 11 Summation Delivered" ) \ |
4929 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_12_SUM_DEL, 0x07EB, "Current Tier 14 Block 12 Summation Delivered" ) \ |
4930 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_13_SUM_DEL, 0x07EC, "Current Tier 14 Block 13 Summation Delivered" ) \ |
4931 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_14_SUM_DEL, 0x07ED, "Current Tier 14 Block 14 Summation Delivered" ) \ |
4932 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_15_SUM_DEL, 0x07EE, "Current Tier 14 Block 15 Summation Delivered" ) \ |
4933 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_16_SUM_DEL, 0x07EF, "Current Tier 14 Block 16 Summation Delivered" ) \ |
4934 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_1_SUM_DEL, 0x07F0, "Current Tier 15 Block 1 Summation Delivered" ) \ |
4935 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_2_SUM_DEL, 0x07F1, "Current Tier 15 Block 2 Summation Delivered" ) \ |
4936 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_3_SUM_DEL, 0x07F2, "Current Tier 15 Block 3 Summation Delivered" ) \ |
4937 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_4_SUM_DEL, 0x07F3, "Current Tier 15 Block 4 Summation Delivered" ) \ |
4938 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_5_SUM_DEL, 0x07F4, "Current Tier 15 Block 5 Summation Delivered" ) \ |
4939 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_6_SUM_DEL, 0x07F5, "Current Tier 15 Block 6 Summation Delivered" ) \ |
4940 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_7_SUM_DEL, 0x07F6, "Current Tier 15 Block 7 Summation Delivered" ) \ |
4941 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_8_SUM_DEL, 0x07F7, "Current Tier 15 Block 8 Summation Delivered" ) \ |
4942 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_9_SUM_DEL, 0x07F8, "Current Tier 15 Block 9 Summation Delivered" ) \ |
4943 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_10_SUM_DEL, 0x07F9, "Current Tier 15 Block 10 Summation Delivered" ) \ |
4944 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_11_SUM_DEL, 0x07FA, "Current Tier 15 Block 11 Summation Delivered" ) \ |
4945 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_12_SUM_DEL, 0x07FB, "Current Tier 15 Block 12 Summation Delivered" ) \ |
4946 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_13_SUM_DEL, 0x07FC, "Current Tier 15 Block 13 Summation Delivered" ) \ |
4947 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_14_SUM_DEL, 0x07FD, "Current Tier 15 Block 14 Summation Delivered" ) \ |
4948 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_15_SUM_DEL, 0x07FE, "Current Tier 15 Block 15 Summation Delivered" ) \ |
4949 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_16_SUM_DEL, 0x07FF, "Current Tier 15 Block 16 Summation Delivered" ) \ |
4950 | | /* Alarms Set */ \ |
4951 | | XXX(ZBEE_ZCL_ATTR_ID_MET_GENERIC_ALARM_MASK, 0x0800, "Generic Alarm Mask" ) \ |
4952 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ELECTRICITY_ALARM_MASK, 0x0801, "Electricity Alarm Mask" ) \ |
4953 | | XXX(ZBEE_ZCL_ATTR_ID_MET_GENERIC_FLOW_PRESS_ALARM_MASK, 0x0802, "Generic Flow/Pressure Alarm Mask" ) \ |
4954 | | XXX(ZBEE_ZCL_ATTR_ID_MET_WATER_SPECIFIC_ALARM_MASK, 0x0803, "Water Specific Alarm Mask" ) \ |
4955 | | XXX(ZBEE_ZCL_ATTR_ID_MET_HEAT_COOLING_SPECIFIC_ALARM_MASK, 0x0804, "Heat and Cooling Specific Alarm Mask" ) \ |
4956 | | XXX(ZBEE_ZCL_ATTR_ID_MET_GAS_SPECIFIC_ALARM_MASK, 0x0805, "Gas Specific Alarm Mask" ) \ |
4957 | | XXX(ZBEE_ZCL_ATTR_ID_MET_EXTENDED_GENERIC_ALARM_MASK, 0x0806, "Extended Generic Alarm Mask" ) \ |
4958 | | XXX(ZBEE_ZCL_ATTR_ID_MET_MANUFACTURER_ALARM_MASK, 0x0807, "Manufacturer Alarm Mask" ) \ |
4959 | | /* Block Information Attribute Set (Received) */ \ |
4960 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_1_SUM_RECV, 0x0900, "Current No Tier Block 1 Summation Received" ) \ |
4961 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_2_SUM_RECV, 0x0901, "Current No Tier Block 2 Summation Received" ) \ |
4962 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_3_SUM_RECV, 0x0902, "Current No Tier Block 3 Summation Received" ) \ |
4963 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_4_SUM_RECV, 0x0903, "Current No Tier Block 4 Summation Received" ) \ |
4964 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_5_SUM_RECV, 0x0904, "Current No Tier Block 5 Summation Received" ) \ |
4965 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_6_SUM_RECV, 0x0905, "Current No Tier Block 6 Summation Received" ) \ |
4966 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_7_SUM_RECV, 0x0906, "Current No Tier Block 7 Summation Received" ) \ |
4967 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_8_SUM_RECV, 0x0907, "Current No Tier Block 8 Summation Received" ) \ |
4968 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_9_SUM_RECV, 0x0908, "Current No Tier Block 9 Summation Received" ) \ |
4969 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_10_SUM_RECV, 0x0909, "Current No Tier Block 10 Summation Received" ) \ |
4970 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_11_SUM_RECV, 0x090A, "Current No Tier Block 11 Summation Received" ) \ |
4971 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_12_SUM_RECV, 0x090B, "Current No Tier Block 12 Summation Received" ) \ |
4972 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_13_SUM_RECV, 0x090C, "Current No Tier Block 13 Summation Received" ) \ |
4973 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_14_SUM_RECV, 0x090D, "Current No Tier Block 14 Summation Received" ) \ |
4974 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_15_SUM_RECV, 0x090E, "Current No Tier Block 15 Summation Received" ) \ |
4975 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_NO_TIER_BLOCK_16_SUM_RECV, 0x090F, "Current No Tier Block 16 Summation Received" ) \ |
4976 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_1_SUM_RECV, 0x0910, "Current Tier 1 Block 1 Summation Received" ) \ |
4977 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_2_SUM_RECV, 0x0911, "Current Tier 1 Block 2 Summation Received" ) \ |
4978 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_3_SUM_RECV, 0x0912, "Current Tier 1 Block 3 Summation Received" ) \ |
4979 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_4_SUM_RECV, 0x0913, "Current Tier 1 Block 4 Summation Received" ) \ |
4980 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_5_SUM_RECV, 0x0914, "Current Tier 1 Block 5 Summation Received" ) \ |
4981 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_6_SUM_RECV, 0x0915, "Current Tier 1 Block 6 Summation Received" ) \ |
4982 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_7_SUM_RECV, 0x0916, "Current Tier 1 Block 7 Summation Received" ) \ |
4983 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_8_SUM_RECV, 0x0917, "Current Tier 1 Block 8 Summation Received" ) \ |
4984 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_9_SUM_RECV, 0x0918, "Current Tier 1 Block 9 Summation Received" ) \ |
4985 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_10_SUM_RECV, 0x0919, "Current Tier 1 Block 10 Summation Received" ) \ |
4986 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_11_SUM_RECV, 0x091A, "Current Tier 1 Block 11 Summation Received" ) \ |
4987 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_12_SUM_RECV, 0x091B, "Current Tier 1 Block 12 Summation Received" ) \ |
4988 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_13_SUM_RECV, 0x091C, "Current Tier 1 Block 13 Summation Received" ) \ |
4989 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_14_SUM_RECV, 0x091D, "Current Tier 1 Block 14 Summation Received" ) \ |
4990 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_15_SUM_RECV, 0x091E, "Current Tier 1 Block 15 Summation Received" ) \ |
4991 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_1_BLOCK_16_SUM_RECV, 0x091F, "Current Tier 1 Block 16 Summation Received" ) \ |
4992 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_1_SUM_RECV, 0x0920, "Current Tier 2 Block 1 Summation Received" ) \ |
4993 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_2_SUM_RECV, 0x0921, "Current Tier 2 Block 2 Summation Received" ) \ |
4994 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_3_SUM_RECV, 0x0922, "Current Tier 2 Block 3 Summation Received" ) \ |
4995 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_4_SUM_RECV, 0x0923, "Current Tier 2 Block 4 Summation Received" ) \ |
4996 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_5_SUM_RECV, 0x0924, "Current Tier 2 Block 5 Summation Received" ) \ |
4997 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_6_SUM_RECV, 0x0925, "Current Tier 2 Block 6 Summation Received" ) \ |
4998 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_7_SUM_RECV, 0x0926, "Current Tier 2 Block 7 Summation Received" ) \ |
4999 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_8_SUM_RECV, 0x0927, "Current Tier 2 Block 8 Summation Received" ) \ |
5000 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_9_SUM_RECV, 0x0928, "Current Tier 2 Block 9 Summation Received" ) \ |
5001 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_10_SUM_RECV, 0x0929, "Current Tier 2 Block 10 Summation Received" ) \ |
5002 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_11_SUM_RECV, 0x092A, "Current Tier 2 Block 11 Summation Received" ) \ |
5003 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_12_SUM_RECV, 0x092B, "Current Tier 2 Block 12 Summation Received" ) \ |
5004 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_13_SUM_RECV, 0x092C, "Current Tier 2 Block 13 Summation Received" ) \ |
5005 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_14_SUM_RECV, 0x092D, "Current Tier 2 Block 14 Summation Received" ) \ |
5006 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_15_SUM_RECV, 0x092E, "Current Tier 2 Block 15 Summation Received" ) \ |
5007 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_2_BLOCK_16_SUM_RECV, 0x092F, "Current Tier 2 Block 16 Summation Received" ) \ |
5008 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_1_SUM_RECV, 0x0930, "Current Tier 3 Block 1 Summation Received" ) \ |
5009 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_2_SUM_RECV, 0x0931, "Current Tier 3 Block 2 Summation Received" ) \ |
5010 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_3_SUM_RECV, 0x0932, "Current Tier 3 Block 3 Summation Received" ) \ |
5011 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_4_SUM_RECV, 0x0933, "Current Tier 3 Block 4 Summation Received" ) \ |
5012 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_5_SUM_RECV, 0x0934, "Current Tier 3 Block 5 Summation Received" ) \ |
5013 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_6_SUM_RECV, 0x0935, "Current Tier 3 Block 6 Summation Received" ) \ |
5014 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_7_SUM_RECV, 0x0936, "Current Tier 3 Block 7 Summation Received" ) \ |
5015 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_8_SUM_RECV, 0x0937, "Current Tier 3 Block 8 Summation Received" ) \ |
5016 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_9_SUM_RECV, 0x0938, "Current Tier 3 Block 9 Summation Received" ) \ |
5017 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_10_SUM_RECV, 0x0939, "Current Tier 3 Block 10 Summation Received" ) \ |
5018 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_11_SUM_RECV, 0x093A, "Current Tier 3 Block 11 Summation Received" ) \ |
5019 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_12_SUM_RECV, 0x093B, "Current Tier 3 Block 12 Summation Received" ) \ |
5020 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_13_SUM_RECV, 0x093C, "Current Tier 3 Block 13 Summation Received" ) \ |
5021 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_14_SUM_RECV, 0x093D, "Current Tier 3 Block 14 Summation Received" ) \ |
5022 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_15_SUM_RECV, 0x093E, "Current Tier 3 Block 15 Summation Received" ) \ |
5023 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_3_BLOCK_16_SUM_RECV, 0x093F, "Current Tier 3 Block 16 Summation Received" ) \ |
5024 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_1_SUM_RECV, 0x0940, "Current Tier 4 Block 1 Summation Received" ) \ |
5025 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_2_SUM_RECV, 0x0941, "Current Tier 4 Block 2 Summation Received" ) \ |
5026 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_3_SUM_RECV, 0x0942, "Current Tier 4 Block 3 Summation Received" ) \ |
5027 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_4_SUM_RECV, 0x0943, "Current Tier 4 Block 4 Summation Received" ) \ |
5028 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_5_SUM_RECV, 0x0944, "Current Tier 4 Block 5 Summation Received" ) \ |
5029 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_6_SUM_RECV, 0x0945, "Current Tier 4 Block 6 Summation Received" ) \ |
5030 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_7_SUM_RECV, 0x0946, "Current Tier 4 Block 7 Summation Received" ) \ |
5031 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_8_SUM_RECV, 0x0947, "Current Tier 4 Block 8 Summation Received" ) \ |
5032 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_9_SUM_RECV, 0x0948, "Current Tier 4 Block 9 Summation Received" ) \ |
5033 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_10_SUM_RECV, 0x0949, "Current Tier 4 Block 10 Summation Received" ) \ |
5034 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_11_SUM_RECV, 0x094A, "Current Tier 4 Block 11 Summation Received" ) \ |
5035 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_12_SUM_RECV, 0x094B, "Current Tier 4 Block 12 Summation Received" ) \ |
5036 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_13_SUM_RECV, 0x094C, "Current Tier 4 Block 13 Summation Received" ) \ |
5037 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_14_SUM_RECV, 0x094D, "Current Tier 4 Block 14 Summation Received" ) \ |
5038 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_15_SUM_RECV, 0x094E, "Current Tier 4 Block 15 Summation Received" ) \ |
5039 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_4_BLOCK_16_SUM_RECV, 0x094F, "Current Tier 4 Block 16 Summation Received" ) \ |
5040 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_1_SUM_RECV, 0x0950, "Current Tier 5 Block 1 Summation Received" ) \ |
5041 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_2_SUM_RECV, 0x0951, "Current Tier 5 Block 2 Summation Received" ) \ |
5042 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_3_SUM_RECV, 0x0952, "Current Tier 5 Block 3 Summation Received" ) \ |
5043 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_4_SUM_RECV, 0x0953, "Current Tier 5 Block 4 Summation Received" ) \ |
5044 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_5_SUM_RECV, 0x0954, "Current Tier 5 Block 5 Summation Received" ) \ |
5045 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_6_SUM_RECV, 0x0955, "Current Tier 5 Block 6 Summation Received" ) \ |
5046 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_7_SUM_RECV, 0x0956, "Current Tier 5 Block 7 Summation Received" ) \ |
5047 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_8_SUM_RECV, 0x0957, "Current Tier 5 Block 8 Summation Received" ) \ |
5048 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_9_SUM_RECV, 0x0958, "Current Tier 5 Block 9 Summation Received" ) \ |
5049 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_10_SUM_RECV, 0x0959, "Current Tier 5 Block 10 Summation Received" ) \ |
5050 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_11_SUM_RECV, 0x095A, "Current Tier 5 Block 11 Summation Received" ) \ |
5051 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_12_SUM_RECV, 0x095B, "Current Tier 5 Block 12 Summation Received" ) \ |
5052 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_13_SUM_RECV, 0x095C, "Current Tier 5 Block 13 Summation Received" ) \ |
5053 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_14_SUM_RECV, 0x095D, "Current Tier 5 Block 14 Summation Received" ) \ |
5054 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_15_SUM_RECV, 0x095E, "Current Tier 5 Block 15 Summation Received" ) \ |
5055 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_5_BLOCK_16_SUM_RECV, 0x095F, "Current Tier 5 Block 16 Summation Received" ) \ |
5056 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_1_SUM_RECV, 0x0960, "Current Tier 6 Block 1 Summation Received" ) \ |
5057 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_2_SUM_RECV, 0x0961, "Current Tier 6 Block 2 Summation Received" ) \ |
5058 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_3_SUM_RECV, 0x0962, "Current Tier 6 Block 3 Summation Received" ) \ |
5059 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_4_SUM_RECV, 0x0963, "Current Tier 6 Block 4 Summation Received" ) \ |
5060 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_5_SUM_RECV, 0x0964, "Current Tier 6 Block 5 Summation Received" ) \ |
5061 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_6_SUM_RECV, 0x0965, "Current Tier 6 Block 6 Summation Received" ) \ |
5062 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_7_SUM_RECV, 0x0966, "Current Tier 6 Block 7 Summation Received" ) \ |
5063 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_8_SUM_RECV, 0x0967, "Current Tier 6 Block 8 Summation Received" ) \ |
5064 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_9_SUM_RECV, 0x0968, "Current Tier 6 Block 9 Summation Received" ) \ |
5065 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_10_SUM_RECV, 0x0969, "Current Tier 6 Block 10 Summation Received" ) \ |
5066 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_11_SUM_RECV, 0x096A, "Current Tier 6 Block 11 Summation Received" ) \ |
5067 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_12_SUM_RECV, 0x096B, "Current Tier 6 Block 12 Summation Received" ) \ |
5068 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_13_SUM_RECV, 0x096C, "Current Tier 6 Block 13 Summation Received" ) \ |
5069 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_14_SUM_RECV, 0x096D, "Current Tier 6 Block 14 Summation Received" ) \ |
5070 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_15_SUM_RECV, 0x096E, "Current Tier 6 Block 15 Summation Received" ) \ |
5071 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_6_BLOCK_16_SUM_RECV, 0x096F, "Current Tier 6 Block 16 Summation Received" ) \ |
5072 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_1_SUM_RECV, 0x0970, "Current Tier 7 Block 1 Summation Received" ) \ |
5073 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_2_SUM_RECV, 0x0971, "Current Tier 7 Block 2 Summation Received" ) \ |
5074 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_3_SUM_RECV, 0x0972, "Current Tier 7 Block 3 Summation Received" ) \ |
5075 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_4_SUM_RECV, 0x0973, "Current Tier 7 Block 4 Summation Received" ) \ |
5076 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_5_SUM_RECV, 0x0974, "Current Tier 7 Block 5 Summation Received" ) \ |
5077 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_6_SUM_RECV, 0x0975, "Current Tier 7 Block 6 Summation Received" ) \ |
5078 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_7_SUM_RECV, 0x0976, "Current Tier 7 Block 7 Summation Received" ) \ |
5079 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_8_SUM_RECV, 0x0977, "Current Tier 7 Block 8 Summation Received" ) \ |
5080 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_9_SUM_RECV, 0x0978, "Current Tier 7 Block 9 Summation Received" ) \ |
5081 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_10_SUM_RECV, 0x0979, "Current Tier 7 Block 10 Summation Received" ) \ |
5082 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_11_SUM_RECV, 0x097A, "Current Tier 7 Block 11 Summation Received" ) \ |
5083 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_12_SUM_RECV, 0x097B, "Current Tier 7 Block 12 Summation Received" ) \ |
5084 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_13_SUM_RECV, 0x097C, "Current Tier 7 Block 13 Summation Received" ) \ |
5085 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_14_SUM_RECV, 0x097D, "Current Tier 7 Block 14 Summation Received" ) \ |
5086 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_15_SUM_RECV, 0x097E, "Current Tier 7 Block 15 Summation Received" ) \ |
5087 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_7_BLOCK_16_SUM_RECV, 0x097F, "Current Tier 7 Block 16 Summation Received" ) \ |
5088 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_1_SUM_RECV, 0x0980, "Current Tier 8 Block 1 Summation Received" ) \ |
5089 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_2_SUM_RECV, 0x0981, "Current Tier 8 Block 2 Summation Received" ) \ |
5090 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_3_SUM_RECV, 0x0982, "Current Tier 8 Block 3 Summation Received" ) \ |
5091 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_4_SUM_RECV, 0x0983, "Current Tier 8 Block 4 Summation Received" ) \ |
5092 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_5_SUM_RECV, 0x0984, "Current Tier 8 Block 5 Summation Received" ) \ |
5093 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_6_SUM_RECV, 0x0985, "Current Tier 8 Block 6 Summation Received" ) \ |
5094 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_7_SUM_RECV, 0x0986, "Current Tier 8 Block 7 Summation Received" ) \ |
5095 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_8_SUM_RECV, 0x0987, "Current Tier 8 Block 8 Summation Received" ) \ |
5096 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_9_SUM_RECV, 0x0988, "Current Tier 8 Block 9 Summation Received" ) \ |
5097 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_10_SUM_RECV, 0x0989, "Current Tier 8 Block 10 Summation Received" ) \ |
5098 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_11_SUM_RECV, 0x098A, "Current Tier 8 Block 11 Summation Received" ) \ |
5099 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_12_SUM_RECV, 0x098B, "Current Tier 8 Block 12 Summation Received" ) \ |
5100 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_13_SUM_RECV, 0x098C, "Current Tier 8 Block 13 Summation Received" ) \ |
5101 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_14_SUM_RECV, 0x098D, "Current Tier 8 Block 14 Summation Received" ) \ |
5102 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_15_SUM_RECV, 0x098E, "Current Tier 8 Block 15 Summation Received" ) \ |
5103 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_8_BLOCK_16_SUM_RECV, 0x098F, "Current Tier 8 Block 16 Summation Received" ) \ |
5104 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_1_SUM_RECV, 0x0990, "Current Tier 9 Block 1 Summation Received" ) \ |
5105 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_2_SUM_RECV, 0x0991, "Current Tier 9 Block 2 Summation Received" ) \ |
5106 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_3_SUM_RECV, 0x0992, "Current Tier 9 Block 3 Summation Received" ) \ |
5107 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_4_SUM_RECV, 0x0993, "Current Tier 9 Block 4 Summation Received" ) \ |
5108 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_5_SUM_RECV, 0x0994, "Current Tier 9 Block 5 Summation Received" ) \ |
5109 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_6_SUM_RECV, 0x0995, "Current Tier 9 Block 6 Summation Received" ) \ |
5110 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_7_SUM_RECV, 0x0996, "Current Tier 9 Block 7 Summation Received" ) \ |
5111 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_8_SUM_RECV, 0x0997, "Current Tier 9 Block 8 Summation Received" ) \ |
5112 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_9_SUM_RECV, 0x0998, "Current Tier 9 Block 9 Summation Received" ) \ |
5113 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_10_SUM_RECV, 0x0999, "Current Tier 9 Block 10 Summation Received" ) \ |
5114 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_11_SUM_RECV, 0x099A, "Current Tier 9 Block 11 Summation Received" ) \ |
5115 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_12_SUM_RECV, 0x099B, "Current Tier 9 Block 12 Summation Received" ) \ |
5116 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_13_SUM_RECV, 0x099C, "Current Tier 9 Block 13 Summation Received" ) \ |
5117 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_14_SUM_RECV, 0x099D, "Current Tier 9 Block 14 Summation Received" ) \ |
5118 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_15_SUM_RECV, 0x099E, "Current Tier 9 Block 15 Summation Received" ) \ |
5119 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_9_BLOCK_16_SUM_RECV, 0x099F, "Current Tier 9 Block 16 Summation Received" ) \ |
5120 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_1_SUM_RECV, 0x09A0, "Current Tier 10 Block 1 Summation Received" ) \ |
5121 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_2_SUM_RECV, 0x09A1, "Current Tier 10 Block 2 Summation Received" ) \ |
5122 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_3_SUM_RECV, 0x09A2, "Current Tier 10 Block 3 Summation Received" ) \ |
5123 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_4_SUM_RECV, 0x09A3, "Current Tier 10 Block 4 Summation Received" ) \ |
5124 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_5_SUM_RECV, 0x09A4, "Current Tier 10 Block 5 Summation Received" ) \ |
5125 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_6_SUM_RECV, 0x09A5, "Current Tier 10 Block 6 Summation Received" ) \ |
5126 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_7_SUM_RECV, 0x09A6, "Current Tier 10 Block 7 Summation Received" ) \ |
5127 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_8_SUM_RECV, 0x09A7, "Current Tier 10 Block 8 Summation Received" ) \ |
5128 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_9_SUM_RECV, 0x09A8, "Current Tier 10 Block 9 Summation Received" ) \ |
5129 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_10_SUM_RECV, 0x09A9, "Current Tier 10 Block 10 Summation Received" ) \ |
5130 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_11_SUM_RECV, 0x09AA, "Current Tier 10 Block 11 Summation Received" ) \ |
5131 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_12_SUM_RECV, 0x09AB, "Current Tier 10 Block 12 Summation Received" ) \ |
5132 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_13_SUM_RECV, 0x09AC, "Current Tier 10 Block 13 Summation Received" ) \ |
5133 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_14_SUM_RECV, 0x09AD, "Current Tier 10 Block 14 Summation Received" ) \ |
5134 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_15_SUM_RECV, 0x09AE, "Current Tier 10 Block 15 Summation Received" ) \ |
5135 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_10_BLOCK_16_SUM_RECV, 0x09AF, "Current Tier 10 Block 16 Summation Received" ) \ |
5136 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_1_SUM_RECV, 0x09B0, "Current Tier 11 Block 1 Summation Received" ) \ |
5137 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_2_SUM_RECV, 0x09B1, "Current Tier 11 Block 2 Summation Received" ) \ |
5138 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_3_SUM_RECV, 0x09B2, "Current Tier 11 Block 3 Summation Received" ) \ |
5139 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_4_SUM_RECV, 0x09B3, "Current Tier 11 Block 4 Summation Received" ) \ |
5140 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_5_SUM_RECV, 0x09B4, "Current Tier 11 Block 5 Summation Received" ) \ |
5141 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_6_SUM_RECV, 0x09B5, "Current Tier 11 Block 6 Summation Received" ) \ |
5142 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_7_SUM_RECV, 0x09B6, "Current Tier 11 Block 7 Summation Received" ) \ |
5143 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_8_SUM_RECV, 0x09B7, "Current Tier 11 Block 8 Summation Received" ) \ |
5144 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_9_SUM_RECV, 0x09B8, "Current Tier 11 Block 9 Summation Received" ) \ |
5145 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_10_SUM_RECV, 0x09B9, "Current Tier 11 Block 10 Summation Received" ) \ |
5146 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_11_SUM_RECV, 0x09BA, "Current Tier 11 Block 11 Summation Received" ) \ |
5147 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_12_SUM_RECV, 0x09BB, "Current Tier 11 Block 12 Summation Received" ) \ |
5148 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_13_SUM_RECV, 0x09BC, "Current Tier 11 Block 13 Summation Received" ) \ |
5149 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_14_SUM_RECV, 0x09BD, "Current Tier 11 Block 14 Summation Received" ) \ |
5150 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_15_SUM_RECV, 0x09BE, "Current Tier 11 Block 15 Summation Received" ) \ |
5151 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_11_BLOCK_16_SUM_RECV, 0x09BF, "Current Tier 11 Block 16 Summation Received" ) \ |
5152 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_1_SUM_RECV, 0x09C0, "Current Tier 12 Block 1 Summation Received" ) \ |
5153 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_2_SUM_RECV, 0x09C1, "Current Tier 12 Block 2 Summation Received" ) \ |
5154 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_3_SUM_RECV, 0x09C2, "Current Tier 12 Block 3 Summation Received" ) \ |
5155 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_4_SUM_RECV, 0x09C3, "Current Tier 12 Block 4 Summation Received" ) \ |
5156 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_5_SUM_RECV, 0x09C4, "Current Tier 12 Block 5 Summation Received" ) \ |
5157 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_6_SUM_RECV, 0x09C5, "Current Tier 12 Block 6 Summation Received" ) \ |
5158 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_7_SUM_RECV, 0x09C6, "Current Tier 12 Block 7 Summation Received" ) \ |
5159 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_8_SUM_RECV, 0x09C7, "Current Tier 12 Block 8 Summation Received" ) \ |
5160 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_9_SUM_RECV, 0x09C8, "Current Tier 12 Block 9 Summation Received" ) \ |
5161 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_10_SUM_RECV, 0x09C9, "Current Tier 12 Block 10 Summation Received" ) \ |
5162 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_11_SUM_RECV, 0x09CA, "Current Tier 12 Block 11 Summation Received" ) \ |
5163 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_12_SUM_RECV, 0x09CB, "Current Tier 12 Block 12 Summation Received" ) \ |
5164 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_13_SUM_RECV, 0x09CC, "Current Tier 12 Block 13 Summation Received" ) \ |
5165 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_14_SUM_RECV, 0x09CD, "Current Tier 12 Block 14 Summation Received" ) \ |
5166 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_15_SUM_RECV, 0x09CE, "Current Tier 12 Block 15 Summation Received" ) \ |
5167 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_12_BLOCK_16_SUM_RECV, 0x09CF, "Current Tier 12 Block 16 Summation Received" ) \ |
5168 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_1_SUM_RECV, 0x09D0, "Current Tier 13 Block 1 Summation Received" ) \ |
5169 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_2_SUM_RECV, 0x09D1, "Current Tier 13 Block 2 Summation Received" ) \ |
5170 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_3_SUM_RECV, 0x09D2, "Current Tier 13 Block 3 Summation Received" ) \ |
5171 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_4_SUM_RECV, 0x09D3, "Current Tier 13 Block 4 Summation Received" ) \ |
5172 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_5_SUM_RECV, 0x09D4, "Current Tier 13 Block 5 Summation Received" ) \ |
5173 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_6_SUM_RECV, 0x09D5, "Current Tier 13 Block 6 Summation Received" ) \ |
5174 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_7_SUM_RECV, 0x09D6, "Current Tier 13 Block 7 Summation Received" ) \ |
5175 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_8_SUM_RECV, 0x09D7, "Current Tier 13 Block 8 Summation Received" ) \ |
5176 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_9_SUM_RECV, 0x09D8, "Current Tier 13 Block 9 Summation Received" ) \ |
5177 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_10_SUM_RECV, 0x09D9, "Current Tier 13 Block 10 Summation Received" ) \ |
5178 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_11_SUM_RECV, 0x09DA, "Current Tier 13 Block 11 Summation Received" ) \ |
5179 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_12_SUM_RECV, 0x09DB, "Current Tier 13 Block 12 Summation Received" ) \ |
5180 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_13_SUM_RECV, 0x09DC, "Current Tier 13 Block 13 Summation Received" ) \ |
5181 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_14_SUM_RECV, 0x09DD, "Current Tier 13 Block 14 Summation Received" ) \ |
5182 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_15_SUM_RECV, 0x09DE, "Current Tier 13 Block 15 Summation Received" ) \ |
5183 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_13_BLOCK_16_SUM_RECV, 0x09DF, "Current Tier 13 Block 16 Summation Received" ) \ |
5184 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_1_SUM_RECV, 0x09E0, "Current Tier 14 Block 1 Summation Received" ) \ |
5185 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_2_SUM_RECV, 0x09E1, "Current Tier 14 Block 2 Summation Received" ) \ |
5186 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_3_SUM_RECV, 0x09E2, "Current Tier 14 Block 3 Summation Received" ) \ |
5187 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_4_SUM_RECV, 0x09E3, "Current Tier 14 Block 4 Summation Received" ) \ |
5188 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_5_SUM_RECV, 0x09E4, "Current Tier 14 Block 5 Summation Received" ) \ |
5189 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_6_SUM_RECV, 0x09E5, "Current Tier 14 Block 6 Summation Received" ) \ |
5190 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_7_SUM_RECV, 0x09E6, "Current Tier 14 Block 7 Summation Received" ) \ |
5191 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_8_SUM_RECV, 0x09E7, "Current Tier 14 Block 8 Summation Received" ) \ |
5192 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_9_SUM_RECV, 0x09E8, "Current Tier 14 Block 9 Summation Received" ) \ |
5193 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_10_SUM_RECV, 0x09E9, "Current Tier 14 Block 10 Summation Received" ) \ |
5194 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_11_SUM_RECV, 0x09EA, "Current Tier 14 Block 11 Summation Received" ) \ |
5195 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_12_SUM_RECV, 0x09EB, "Current Tier 14 Block 12 Summation Received" ) \ |
5196 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_13_SUM_RECV, 0x09EC, "Current Tier 14 Block 13 Summation Received" ) \ |
5197 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_14_SUM_RECV, 0x09ED, "Current Tier 14 Block 14 Summation Received" ) \ |
5198 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_15_SUM_RECV, 0x09EE, "Current Tier 14 Block 15 Summation Received" ) \ |
5199 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_14_BLOCK_16_SUM_RECV, 0x09EF, "Current Tier 14 Block 16 Summation Received" ) \ |
5200 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_1_SUM_RECV, 0x09F0, "Current Tier 15 Block 1 Summation Received" ) \ |
5201 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_2_SUM_RECV, 0x09F1, "Current Tier 15 Block 2 Summation Received" ) \ |
5202 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_3_SUM_RECV, 0x09F2, "Current Tier 15 Block 3 Summation Received" ) \ |
5203 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_4_SUM_RECV, 0x09F3, "Current Tier 15 Block 4 Summation Received" ) \ |
5204 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_5_SUM_RECV, 0x09F4, "Current Tier 15 Block 5 Summation Received" ) \ |
5205 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_6_SUM_RECV, 0x09F5, "Current Tier 15 Block 6 Summation Received" ) \ |
5206 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_7_SUM_RECV, 0x09F6, "Current Tier 15 Block 7 Summation Received" ) \ |
5207 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_8_SUM_RECV, 0x09F7, "Current Tier 15 Block 8 Summation Received" ) \ |
5208 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_9_SUM_RECV, 0x09F8, "Current Tier 15 Block 9 Summation Received" ) \ |
5209 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_10_SUM_RECV, 0x09F9, "Current Tier 15 Block 10 Summation Received" ) \ |
5210 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_11_SUM_RECV, 0x09FA, "Current Tier 15 Block 11 Summation Received" ) \ |
5211 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_12_SUM_RECV, 0x09FB, "Current Tier 15 Block 12 Summation Received" ) \ |
5212 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_13_SUM_RECV, 0x09FC, "Current Tier 15 Block 13 Summation Received" ) \ |
5213 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_14_SUM_RECV, 0x09FD, "Current Tier 15 Block 14 Summation Received" ) \ |
5214 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_15_SUM_RECV, 0x09FE, "Current Tier 15 Block 15 Summation Received" ) \ |
5215 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_TIER_15_BLOCK_16_SUM_RECV, 0x09FF, "Current Tier 15 Block 16 Summation Received" ) \ |
5216 | | /* Meter Billing Attribute Set */ \ |
5217 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_DELIVERED, 0x0A00, "Bill to Date Delivered" ) \ |
5218 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_TIMESTAMP_DEL, 0x0A01, "Bill to Date Time Stamp Delivered" ) \ |
5219 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_DELIVERED, 0x0A02, "Projected Bill Delivered" ) \ |
5220 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_TIME_STAMP_DEL, 0x0A03, "Projected Bill Time Stamp Delivered" ) \ |
5221 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_DELIVERED_TRAILING_DIGIT, 0x0A04, "Bill Delivered Trailing Digit" ) \ |
5222 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_RECEIVED, 0x0A10, "Bill to Date Received" ) \ |
5223 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_TO_DATE_TIMESTAMP_RECEIVED, 0x0A11, "Bill to Date Time Stamp Received" ) \ |
5224 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_RECEIVED, 0x0A12, "Projected Bill Received" ) \ |
5225 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROJECTED_BILL_TIME_STAMP_RECV, 0x0A13, "Projected Bill Time Stamp Received" ) \ |
5226 | | XXX(ZBEE_ZCL_ATTR_ID_MET_BILL_RECEIVED_TRAILING_DIGIT, 0x0A14, "Bill Received Trailing Digit" ) \ |
5227 | | /* Supply Control Attribute Set */ \ |
5228 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROPOSED_CHANGE_SUPPLY_IMP_TIME, 0x0B00, "Proposed Change Supply Implementation Time" ) \ |
5229 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PROPOSED_CHANGE_SUPPLY_STATUS, 0x0B01, "Proposed Change Supply Status" ) \ |
5230 | | XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_THRESHOLD, 0x0B10, "Uncontrolled Flow Threshold" ) \ |
5231 | | XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_UNIT_OF_MEAS, 0x0B11, "Uncontrolled Flow Unit of Measure" ) \ |
5232 | | XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_MULTIPLIER, 0x0B12, "Uncontrolled Flow Multiplier" ) \ |
5233 | | XXX(ZBEE_ZCL_ATTR_ID_MET_UNCONTROLLED_FLOW_DIVISOR, 0x0B13, "Uncontrolled Flow Divisor" ) \ |
5234 | | XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_STABILISATION_PERIOD, 0x0B14, "Flow Stabilisation Period" ) \ |
5235 | | XXX(ZBEE_ZCL_ATTR_ID_MET_FLOW_MEASUREMENT_PERIOD, 0x0B15, "Flow Measurement Period" ) \ |
5236 | | /* Alternative Historical Consumption Attribute Set */ \ |
5237 | | XXX(ZBEE_ZCL_ATTR_ID_MET_ALTERNATIVE_INSTANT_DEMAND, 0x0C00, "Alternative Instantaneous Demand" ) \ |
5238 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_ALT_CON_DEL, 0x0C01, "Current Day Alternative Consumption Delivered" ) \ |
5239 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_DAY_ALT_CON_RECV, 0x0C02, "Current Day Alternative Consumption Received" ) \ |
5240 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_ALT_CON_DEL, 0x0C03, "Previous Day Alternative Consumption Delivered" ) \ |
5241 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_ALT_CON_RECV, 0x0C04, "Previous Day Alternative Consumption Received" ) \ |
5242 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_DEL, 0x0C05, "Current Alternative Partial Profile Interval Start Time Delivered" ) \ |
5243 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_RECV, 0x0C06, "Current Alternative Partial Profile Interval Start Time Received" ) \ |
5244 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_VAL_DEL, 0x0C07, "Current Alternative Partial Profile Interval Value Delivered" ) \ |
5245 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_ALT_PAR_PROF_INT_VAL_RECV, 0x0C08, "Current Alternative Partial Profile Interval Value Received" ) \ |
5246 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MAX_PRESS, 0x0C09, "Current Day Alternative Max Pressure" ) \ |
5247 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MIN_PRESS, 0x0C0A, "Current Day Alternative Min Pressure" ) \ |
5248 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MAX_PRESS, 0x0C0B, "Previous Day Alternative Max Pressure" ) \ |
5249 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MIN_PRESS, 0x0C0C, "Previous Day Alternative Min Pressure" ) \ |
5250 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_DAY_ALT_MAX_DEMAND, 0x0C0D, "Current Day Alternative Max Demand" ) \ |
5251 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREVIOUS_DAY_ALT_MAX_DEMAND, 0x0C0E, "Previous Day Alternative Max Demand" ) \ |
5252 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_MONTH_ALT_MAX_DEMAND, 0x0C0F, "Current Month Alternative Max Demand" ) \ |
5253 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CURRENT_YEAR_ALT_MAX_DEMAND, 0x0C10, "Current Year Alternative Max Demand" ) \ |
5254 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_2_ALT_CON_DEL, 0x0C20, "Previous Day 2 Alternative Consumption Delivered" ) \ |
5255 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_2_ALT_CON_RECV, 0x0C21, "Previous Day 2 Alternative Consumption Received" ) \ |
5256 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_3_ALT_CON_DEL, 0x0C22, "Previous Day 3 Alternative Consumption Delivered" ) \ |
5257 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_3_ALT_CON_RECV, 0x0C23, "Previous Day 3 Alternative Consumption Received" ) \ |
5258 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_4_ALT_CON_DEL, 0x0C24, "Previous Day 4 Alternative Consumption Delivered" ) \ |
5259 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_4_ALT_CON_RECV, 0x0C25, "Previous Day 4 Alternative Consumption Received" ) \ |
5260 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_5_ALT_CON_DEL, 0x0C26, "Previous Day 5 Alternative Consumption Delivered" ) \ |
5261 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_5_ALT_CON_RECV, 0x0C27, "Previous Day 5 Alternative Consumption Received" ) \ |
5262 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_6_ALT_CON_DEL, 0x0C28, "Previous Day 6 Alternative Consumption Delivered" ) \ |
5263 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_6_ALT_CON_RECV, 0x0C29, "Previous Day 6 Alternative Consumption Received" ) \ |
5264 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_7_ALT_CON_DEL, 0x0C2A, "Previous Day 7 Alternative Consumption Delivered" ) \ |
5265 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_7_ALT_CON_RECV, 0x0C2B, "Previous Day 7 Alternative Consumption Received" ) \ |
5266 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_8_ALT_CON_DEL, 0x0C2C, "Previous Day 8 Alternative Consumption Delivered" ) \ |
5267 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_DAY_8_ALT_CON_RECV, 0x0C2D, "Previous Day 8 Alternative Consumption Received" ) \ |
5268 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_ALT_CON_DEL, 0x0C30, "Current Week Alternative Consumption Delivered" ) \ |
5269 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_WEEK_ALT_CON_RECV, 0x0C31, "Current Week Alternative Consumption Received" ) \ |
5270 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_ALT_CON_DEL, 0x0C32, "Previous Week Alternative Consumption Delivered" ) \ |
5271 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_ALT_CON_RECV, 0x0C33, "Previous Week Alternative Consumption Received" ) \ |
5272 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_ALT_CON_DEL, 0x0C34, "Previous Week 2 Alternative Consumption Delivered" ) \ |
5273 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_2_ALT_CON_RECV, 0x0C35, "Previous Week 2 Alternative Consumption Received" ) \ |
5274 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_ALT_CON_DEL, 0x0C36, "Previous Week 3 Alternative Consumption Delivered" ) \ |
5275 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_3_ALT_CON_RECV, 0x0C37, "Previous Week 3 Alternative Consumption Received" ) \ |
5276 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_ALT_CON_DEL, 0x0C38, "Previous Week 4 Alternative Consumption Delivered" ) \ |
5277 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_4_ALT_CON_RECV, 0x0C39, "Previous Week 4 Alternative Consumption Received" ) \ |
5278 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_ALT_CON_DEL, 0x0C3A, "Previous Week 5 Alternative Consumption Delivered" ) \ |
5279 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_WEEK_5_ALT_CON_RECV, 0x0C3B, "Previous Week 5 Alternative Consumption Received" ) \ |
5280 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_ALT_CON_DEL, 0x0C40, "Current Month Alternative Consumption Delivered" ) \ |
5281 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CUR_MONTH_ALT_CON_RECV, 0x0C41, "Current Month Alternative Consumption Received" ) \ |
5282 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_ALT_CON_DEL, 0x0C42, "Previous Month Alternative Consumption Delivered" ) \ |
5283 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_ALT_CON_RECV, 0x0C43, "Previous Month Alternative Consumption Received" ) \ |
5284 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_ALT_CON_DEL, 0x0C44, "Previous Month 2 Alternative Consumption Delivered" ) \ |
5285 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_2_ALT_CON_RECV, 0x0C45, "Previous Month 2 Alternative Consumption Received" ) \ |
5286 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_ALT_CON_DEL, 0x0C46, "Previous Month 3 Alternative Consumption Delivered" ) \ |
5287 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_3_ALT_CON_RECV, 0x0C47, "Previous Month 3 Alternative Consumption Received" ) \ |
5288 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_ALT_CON_DEL, 0x0C48, "Previous Month 4 Alternative Consumption Delivered" ) \ |
5289 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_4_ALT_CON_RECV, 0x0C49, "Previous Month 4 Alternative Consumption Received" ) \ |
5290 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_ALT_CON_DEL, 0x0C4A, "Previous Month 5 Alternative Consumption Delivered" ) \ |
5291 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_5_ALT_CON_RECV, 0x0C4B, "Previous Month 5 Alternative Consumption Received" ) \ |
5292 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_ALT_CON_DEL, 0x0C4C, "Previous Month 6 Alternative Consumption Delivered" ) \ |
5293 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_6_ALT_CON_RECV, 0x0C4D, "Previous Month 6 Alternative Consumption Received" ) \ |
5294 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_ALT_CON_DEL, 0x0C4E, "Previous Month 7 Alternative Consumption Delivered" ) \ |
5295 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_7_ALT_CON_RECV, 0x0C4F, "Previous Month 7 Alternative Consumption Received" ) \ |
5296 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_ALT_CON_DEL, 0x0C50, "Previous Month 8 Alternative Consumption Delivered" ) \ |
5297 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_8_ALT_CON_RECV, 0x0C51, "Previous Month 8 Alternative Consumption Received" ) \ |
5298 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_ALT_CON_DEL, 0x0C52, "Previous Month 9 Alternative Consumption Delivered" ) \ |
5299 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_9_ALT_CON_RECV, 0x0C53, "Previous Month 9 Alternative Consumption Received" ) \ |
5300 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_ALT_CON_DEL, 0x0C54, "Previous Month 10 Alternative Consumption Delivered" ) \ |
5301 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_10_ALT_CON_RECV, 0x0C55, "Previous Month 10 Alternative Consumption Received" ) \ |
5302 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_ALT_CON_DEL, 0x0C56, "Previous Month 11 Alternative Consumption Delivered" ) \ |
5303 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_11_ALT_CON_RECV, 0x0C57, "Previous Month 11 Alternative Consumption Received" ) \ |
5304 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_ALT_CON_DEL, 0x0C58, "Previous Month 12 Alternative Consumption Delivered" ) \ |
5305 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_12_ALT_CON_RECV, 0x0C59, "Previous Month 12 Alternative Consumption Received" ) \ |
5306 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_ALT_CON_DEL, 0x0C5A, "Previous Month 13 Alternative Consumption Delivered" ) \ |
5307 | | XXX(ZBEE_ZCL_ATTR_ID_MET_PREV_MONTH_13_ALT_CON_RECV, 0x0C5B, "Previous Month 13 Alternative Consumption Received" ) \ |
5308 | | /* Smart Energy */ \ |
5309 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET, 0xFFFE, "Attribute Reporting Status" ) |
5310 | | |
5311 | | VALUE_STRING_ENUM(zbee_zcl_met_attr_server_names); |
5312 | | VALUE_STRING_ARRAY(zbee_zcl_met_attr_server_names); |
5313 | | static value_string_ext zbee_zcl_met_attr_server_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_met_attr_server_names); |
5314 | | |
5315 | | #define zbee_zcl_met_attr_client_names_VALUE_STRING_LIST(XXX) \ |
5316 | | /* Notification AttributeSet*/ \ |
5317 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS, 0x0000, "Functional Notification Flags" ) \ |
5318 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2, 0x0001, "Notification Flags 2" ) \ |
5319 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3, 0x0002, "Notification Flags 3" ) \ |
5320 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4, 0x0003, "Notification Flags 4" ) \ |
5321 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5, 0x0004, "Notification Flags 5" ) \ |
5322 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_6, 0x0005, "Notification Flags 6" ) \ |
5323 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_7, 0x0006, "Notification Flags 7" ) \ |
5324 | | XXX(ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_8, 0x0007, "Notification Flags 8" ) \ |
5325 | | /* Smart Energy */ \ |
5326 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET_CLNT, 0xFFFE, "Attribute Reporting Status" ) |
5327 | | |
5328 | | VALUE_STRING_ENUM(zbee_zcl_met_attr_client_names); |
5329 | | VALUE_STRING_ARRAY(zbee_zcl_met_attr_client_names); |
5330 | | |
5331 | | /* Server Commands Received */ |
5332 | | #define zbee_zcl_met_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
5333 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_PROFILE, 0x00, "Get Profile" ) \ |
5334 | | XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR_RSP, 0x01, "Request Mirror Response" ) \ |
5335 | | XXX(ZBEE_ZCL_CMD_ID_MET_MIRROR_REMOVED, 0x02, "Mirror Removed" ) \ |
5336 | | XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE, 0x03, "Request Fast Poll Mode" ) \ |
5337 | | XXX(ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT, 0x04, "Schedule Snapshot" ) \ |
5338 | | XXX(ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT, 0x05, "Take Snapshot" ) \ |
5339 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_SNAPSHOT, 0x06, "Get Snapshot" ) \ |
5340 | | XXX(ZBEE_ZCL_CMD_ID_MET_START_SAMPLING, 0x07, "Start Sampling" ) \ |
5341 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA, 0x08, "Get Sampled Data" ) \ |
5342 | | XXX(ZBEE_ZCL_CMD_ID_MET_MIRROR_REPORT_ATTRIBUTE_RESPONSE, 0x09, "Mirror Report Attribute Response" ) \ |
5343 | | XXX(ZBEE_ZCL_CMD_ID_MET_RESET_LOAD_LIMIT_COUNTER, 0x0A, "Reset Load Limit Counter" ) \ |
5344 | | XXX(ZBEE_ZCL_CMD_ID_MET_CHANGE_SUPPLY, 0x0B, "Change Supply" ) \ |
5345 | | XXX(ZBEE_ZCL_CMD_ID_MET_LOCAL_CHANGE_SUPPLY, 0x0C, "Local Change Supply" ) \ |
5346 | | XXX(ZBEE_ZCL_CMD_ID_MET_SET_SUPPLY_STATUS, 0x0D, "Set Supply Status" ) \ |
5347 | | XXX(ZBEE_ZCL_CMD_ID_MET_SET_UNCONTROLLED_FLOW_THRESHOLD, 0x0E, "Set Uncontrolled Flow Threshold" ) |
5348 | | |
5349 | | VALUE_STRING_ENUM(zbee_zcl_met_srv_rx_cmd_names); |
5350 | | VALUE_STRING_ARRAY(zbee_zcl_met_srv_rx_cmd_names); |
5351 | | |
5352 | | /* Server Commands Generated */ |
5353 | | #define zbee_zcl_met_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
5354 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_PROFILE_RESPONSE, 0x00, "Get Profile Response" ) \ |
5355 | | XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR, 0x01, "Request Mirror" ) \ |
5356 | | XXX(ZBEE_ZCL_CMD_ID_MET_REMOVE_MIRROR, 0x02, "Remove Mirror" ) \ |
5357 | | XXX(ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE_RESPONSE, 0x03, "Request Fast Poll Mode Response" ) \ |
5358 | | XXX(ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT_RESPONSE, 0x04, "Schedule Snapshot Response" ) \ |
5359 | | XXX(ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT_RESPONSE, 0x05, "Take Snapshot Response" ) \ |
5360 | | XXX(ZBEE_ZCL_CMD_ID_MET_PUBLISH_SNAPSHOT, 0x06, "Publish Snapshot" ) \ |
5361 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA_RSP, 0x07, "Get Sampled Data Response" ) \ |
5362 | | XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_MIRROR, 0x08, "Configure Mirror" ) \ |
5363 | | XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_SCHEME, 0x09, "Configure Notification Scheme" ) \ |
5364 | | XXX(ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_FLAGS, 0x0A, "Configure Notification Flags" ) \ |
5365 | | XXX(ZBEE_ZCL_CMD_ID_MET_GET_NOTIFIED_MESSAGE, 0x0B, "Get Notified Message" ) \ |
5366 | | XXX(ZBEE_ZCL_CMD_ID_MET_SUPPLY_STATUS_RESPONSE, 0x0C, "Supply Status Response" ) \ |
5367 | | XXX(ZBEE_ZCL_CMD_ID_MET_START_SAMPLING_RESPONSE, 0x0D, "Start Sampling Response" ) |
5368 | | |
5369 | | VALUE_STRING_ENUM(zbee_zcl_met_srv_tx_cmd_names); |
5370 | | VALUE_STRING_ARRAY(zbee_zcl_met_srv_tx_cmd_names); |
5371 | | |
5372 | 0 | #define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A 0x1 |
5373 | 0 | #define ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B 0x2 |
5374 | | |
5375 | | static const range_string zbee_zcl_met_notification_scheme[] = { |
5376 | | { 0x0, 0x0, "No Notification Scheme Defined" }, |
5377 | | { ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A, "Predefined Notification Scheme A" }, |
5378 | | { ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B, ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B, "Predefined Notification Scheme B" }, |
5379 | | { 0x3, 0x80, "Reserved" }, |
5380 | | { 0x81, 0xFE, "For MSP Requirements" }, |
5381 | | { 0xFF, 0xFF, "Reserved" }, |
5382 | | { 0, 0, NULL } |
5383 | | }; |
5384 | | |
5385 | | /* Snapshot Schedule Confirmation */ |
5386 | | #define zbee_zcl_met_snapshot_schedule_confirmation_VALUE_STRING_LIST(XXX) \ |
5387 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_ACCEPTED, 0x00, "Accepted" ) \ |
5388 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_TYPE_NOT_SUPPORTED, 0x01, "Snapshot Type not supported") \ |
5389 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CAUSE_NOT_SUPPORTED, 0x02, "Snapshot Cause not supported") \ |
5390 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_CURRENTLY_NOT_AVAILABLE, 0x03, "Snapshot Cause not supported") \ |
5391 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_NOT_SUPPORTED_BY_DEVICE, 0x04, "Snapshot Schedules not supported by device") \ |
5392 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ID_INSUFFICIENT_SPACE, 0x05, "Insufficient space for snapshot schedule") |
5393 | | |
5394 | | VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_confirmation); |
5395 | | VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_confirmation); |
5396 | | |
5397 | | /* Snapshot Schedule Frequency Type*/ |
5398 | | #define zbee_zcl_met_snapshot_schedule_frequency_type_VALUE_STRING_LIST(XXX) \ |
5399 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_DAY, 0x0, "Day" ) \ |
5400 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_WEEK, 0x1, "Week" ) \ |
5401 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_MONTH, 0x2, "Month" ) \ |
5402 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_TYPE_RESERVED, 0x3, "Reserved" ) |
5403 | | |
5404 | | VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_type); |
5405 | | VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_type); |
5406 | | |
5407 | | /* Snapshot Schedule Wild-Card Frequency*/ |
5408 | | #define zbee_zcl_met_snapshot_schedule_frequency_wild_card_VALUE_STRING_LIST(XXX) \ |
5409 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_START_OF, 0x0, "Start of" ) \ |
5410 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_END_OF, 0x1, "End of" ) \ |
5411 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_NOT_USED, 0x2, "Wild-card not used" ) \ |
5412 | | XXX(ZBEE_ZCL_SNAPSHOT_SCHEDULE_FREQUENCY_WILD_CARD_RESERVED, 0x3, "Reserved" ) |
5413 | | |
5414 | | VALUE_STRING_ENUM(zbee_zcl_met_snapshot_schedule_frequency_wild_card); |
5415 | | VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_schedule_frequency_wild_card); |
5416 | | |
5417 | | /* Snapshot Payload Type */ |
5418 | | #define zbee_zcl_met_snapshot_payload_type_VALUE_STRING_LIST(XXX) \ |
5419 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_REGISTERS, 0, "TOU Information Set Delivered Registers" ) \ |
5420 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_REGISTERS, 1, "TOU Information Set Received Registers") \ |
5421 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED, 2, "Block Tier Information Set Delivered") \ |
5422 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED, 3, "Block Tier Information Set Received") \ |
5423 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_DELIVERED_NO_BILLING, 4, "TOU Information Set Delivered (No Billing)") \ |
5424 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFO_SET_RECEIVED_NO_BILLING, 5, "TOU Information Set Received (No Billing)") \ |
5425 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_DELIVERED_NO_BILLING, 6, "Block Tier Information Set Delivered (No Billing)") \ |
5426 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFO_SET_RECEIVED_NO_BILLING, 7, "Block Tier Information Set Received (No Billing)") \ |
5427 | | XXX(ZBEE_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE, 128, "Data Unavailable") |
5428 | | |
5429 | | VALUE_STRING_ENUM(zbee_zcl_met_snapshot_payload_type); |
5430 | | VALUE_STRING_ARRAY(zbee_zcl_met_snapshot_payload_type); |
5431 | | |
5432 | | /* Functional Notification Flags */ |
5433 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE 0x00000001 |
5434 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED 0x00000002 |
5435 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC 0x00000004 |
5436 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1 0x00000008 |
5437 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN 0x00000010 |
5438 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN 0x00000020 |
5439 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET 0x000001C0 |
5440 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET 0x00000E00 |
5441 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER 0x00001000 |
5442 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER 0x00002000 |
5443 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER 0x00004000 |
5444 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE 0x00008000 |
5445 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE 0x00010000 |
5446 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES 0x00020000 |
5447 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY 0x00040000 |
5448 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY 0x00080000 |
5449 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD 0x00100000 |
5450 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING 0x00200000 |
5451 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT 0x00400000 |
5452 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA 0x00800000 |
5453 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE 0x01000000 |
5454 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_ENERGY_SCAN_PENDING 0x02000000 |
5455 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_CHANNEL_CHANGE_PENDING 0x04000000 |
5456 | 15 | #define ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2 0xF8000000 |
5457 | | |
5458 | | /* Notification Flags 2 */ |
5459 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE 0x00000001 |
5460 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD 0x00000002 |
5461 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION 0x00000004 |
5462 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR 0x00000008 |
5463 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE 0x00000010 |
5464 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE 0x00000020 |
5465 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD 0x00000040 |
5466 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL 0x00000080 |
5467 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX 0x00000100 |
5468 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS 0x00000200 |
5469 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION 0x00000400 |
5470 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_RESERVED 0x00000800 |
5471 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO 0x00001000 |
5472 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT 0x00002000 |
5473 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS 0x00004000 |
5474 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF 0x00008000 |
5475 | 15 | #define ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE 0xFFFF0000 |
5476 | | |
5477 | | /* Notification Flags 3 */ |
5478 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR 0x00000001 |
5479 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS 0x00000002 |
5480 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS 0x00000004 |
5481 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK 0x00000008 |
5482 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY 0x00000010 |
5483 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY 0x00000020 |
5484 | 15 | #define ZBEE_ZCL_NOTI_FLAG_3_RESERVED 0xFFFFFFC0 |
5485 | | |
5486 | | /* Notification Flags 4 */ |
5487 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT 0x00000001 |
5488 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT 0x00000002 |
5489 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP 0x00000004 |
5490 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP 0x00000008 |
5491 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT 0x00000010 |
5492 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE 0x00000020 |
5493 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT 0x00000040 |
5494 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG 0x00000080 |
5495 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL 0x00000100 |
5496 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG 0x00000200 |
5497 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT 0x00000400 |
5498 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP 0x00000800 |
5499 | 15 | #define ZBEE_ZCL_NOTI_FLAG_4_RESERVED 0xFFFFF000 |
5500 | | |
5501 | | /* Notification Flags 5 */ |
5502 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY 0x00000001 |
5503 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER 0x00000002 |
5504 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE 0x00000004 |
5505 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE 0x00000008 |
5506 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE 0x00000010 |
5507 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE 0x00000020 |
5508 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID 0x00000040 |
5509 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER 0x00000080 |
5510 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN 0x00000100 |
5511 | 15 | #define ZBEE_ZCL_NOTI_FLAG_5_RESERVED 0XFFFFFE00 |
5512 | | |
5513 | | /*************************/ |
5514 | | /* Function Declarations */ |
5515 | | /*************************/ |
5516 | | void proto_register_zbee_zcl_met(void); |
5517 | | void proto_reg_handoff_zbee_zcl_met(void); |
5518 | | |
5519 | | /* Command Dissector Helpers */ |
5520 | | static void dissect_zcl_met_get_profile (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5521 | | static void dissect_zcl_met_request_mirror_rsp (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5522 | | static void dissect_zcl_met_mirror_removed (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5523 | | static void dissect_zcl_met_request_fast_poll_mode (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5524 | | static void dissect_zcl_met_schedule_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5525 | | static void dissect_zcl_met_take_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5526 | | static void dissect_zcl_met_get_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5527 | | static void dissect_zcl_met_start_sampling (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5528 | | static void dissect_zcl_met_get_sampled_data (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5529 | | static void dissect_zcl_met_mirror_report_attribute_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5530 | | static void dissect_zcl_met_reset_load_limit_counter (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5531 | | static void dissect_zcl_met_change_supply (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5532 | | static void dissect_zcl_met_local_change_supply (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5533 | | static void dissect_zcl_met_set_supply_status (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5534 | | static void dissect_zcl_met_set_uncontrolled_flow_threshold (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5535 | | static void dissect_zcl_met_get_profile_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5536 | | static void dissect_zcl_met_request_fast_poll_mode_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5537 | | static void dissect_zcl_met_schedule_snapshot_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5538 | | static void dissect_zcl_met_take_snapshot_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5539 | | static void dissect_zcl_met_publish_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5540 | | static void dissect_zcl_met_get_sampled_data_rsp (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5541 | | static void dissect_zcl_met_configure_mirror (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5542 | | static void dissect_zcl_met_configure_notification_scheme (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5543 | | static void dissect_zcl_met_configure_notification_flags (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5544 | | static void dissect_zcl_met_get_notified_msg (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5545 | | static void dissect_zcl_met_supply_status_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5546 | | static void dissect_zcl_met_start_sampling_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
5547 | | static void dissect_zcl_met_notification_flags (tvbuff_t *tvb, proto_tree *tree, unsigned *offset, uint16_t noti_flags_number); |
5548 | | |
5549 | | /*************************/ |
5550 | | /* Global Variables */ |
5551 | | /*************************/ |
5552 | | |
5553 | | /* Initialize the protocol and registered fields */ |
5554 | | static int proto_zbee_zcl_met; |
5555 | | |
5556 | | static int hf_zbee_zcl_met_srv_tx_cmd_id; |
5557 | | static int hf_zbee_zcl_met_srv_rx_cmd_id; |
5558 | | static int hf_zbee_zcl_met_attr_server_id; |
5559 | | static int hf_zbee_zcl_met_attr_client_id; |
5560 | | static int hf_zbee_zcl_met_attr_reporting_status; |
5561 | | static int hf_zbee_zcl_met_func_noti_flags; |
5562 | | static int hf_zbee_zcl_met_func_noti_flag_new_ota_firmware; |
5563 | | static int hf_zbee_zcl_met_func_noti_flag_cbke_update_request; |
5564 | | static int hf_zbee_zcl_met_func_noti_flag_time_sync; |
5565 | | static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han; |
5566 | | static int hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan; |
5567 | | static int hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set; |
5568 | | static int hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set; |
5569 | | static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster; |
5570 | | static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster; |
5571 | | static int hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster; |
5572 | | static int hf_zbee_zcl_met_func_noti_flag_network_key_active; |
5573 | | static int hf_zbee_zcl_met_func_noti_flag_display_message; |
5574 | | static int hf_zbee_zcl_met_func_noti_flag_cancel_all_messages; |
5575 | | static int hf_zbee_zcl_met_func_noti_flag_change_supply; |
5576 | | static int hf_zbee_zcl_met_func_noti_flag_local_change_supply; |
5577 | | static int hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold; |
5578 | | static int hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending; |
5579 | | static int hf_zbee_zcl_met_func_noti_flag_get_snapshot; |
5580 | | static int hf_zbee_zcl_met_func_noti_flag_get_sampled_data; |
5581 | | static int hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available; |
5582 | | static int hf_zbee_zcl_met_func_noti_flag_energy_scan_pending; |
5583 | | static int hf_zbee_zcl_met_func_noti_flag_channel_change_pending; |
5584 | | static int hf_zbee_zcl_met_func_noti_flag_reserved; |
5585 | | static int hf_zbee_zcl_met_noti_flags_2; |
5586 | | static int hf_zbee_zcl_met_noti_flag_2_publish_price; |
5587 | | static int hf_zbee_zcl_met_noti_flag_2_publish_block_period; |
5588 | | static int hf_zbee_zcl_met_noti_flag_2_publish_tariff_info; |
5589 | | static int hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor; |
5590 | | static int hf_zbee_zcl_met_noti_flag_2_publish_calorific_value; |
5591 | | static int hf_zbee_zcl_met_noti_flag_2_publish_co2_value; |
5592 | | static int hf_zbee_zcl_met_noti_flag_2_publish_billing_period; |
5593 | | static int hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill; |
5594 | | static int hf_zbee_zcl_met_noti_flag_2_publish_price_matrix; |
5595 | | static int hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds; |
5596 | | static int hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion; |
5597 | | static int hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info; |
5598 | | static int hf_zbee_zcl_met_noti_flag_2_publish_cpp_event; |
5599 | | static int hf_zbee_zcl_met_noti_flag_2_publish_tier_labels; |
5600 | | static int hf_zbee_zcl_met_noti_flag_2_cancel_tariff; |
5601 | | static int hf_zbee_zcl_met_noti_flag_2_reserved; |
5602 | | static int hf_zbee_zcl_met_noti_flags_3; |
5603 | | static int hf_zbee_zcl_met_noti_flag_3_publish_calendar; |
5604 | | static int hf_zbee_zcl_met_noti_flag_3_publish_special_days; |
5605 | | static int hf_zbee_zcl_met_noti_flag_3_publish_seasons; |
5606 | | static int hf_zbee_zcl_met_noti_flag_3_publish_week; |
5607 | | static int hf_zbee_zcl_met_noti_flag_3_publish_day; |
5608 | | static int hf_zbee_zcl_met_noti_flag_3_cancel_calendar; |
5609 | | static int hf_zbee_zcl_met_noti_flag_3_reserved; |
5610 | | static int hf_zbee_zcl_met_noti_flags_4; |
5611 | | static int hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit; |
5612 | | static int hf_zbee_zcl_met_noti_flag_4_change_debt; |
5613 | | static int hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup; |
5614 | | static int hf_zbee_zcl_met_noti_flag_4_consumer_top_up; |
5615 | | static int hf_zbee_zcl_met_noti_flag_4_credit_adjustment; |
5616 | | static int hf_zbee_zcl_met_noti_flag_4_change_payment_mode; |
5617 | | static int hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot; |
5618 | | static int hf_zbee_zcl_met_noti_flag_4_get_top_up_log; |
5619 | | static int hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level; |
5620 | | static int hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log; |
5621 | | static int hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit; |
5622 | | static int hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap; |
5623 | | static int hf_zbee_zcl_met_noti_flag_4_reserved; |
5624 | | static int hf_zbee_zcl_met_noti_flags_5; |
5625 | | static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy; |
5626 | | static int hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier; |
5627 | | static int hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response; |
5628 | | static int hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response; |
5629 | | static int hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response; |
5630 | | static int hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response; |
5631 | | static int hf_zbee_zcl_met_noti_flag_5_update_site_id; |
5632 | | static int hf_zbee_zcl_met_noti_flag_5_reset_battery_counter; |
5633 | | static int hf_zbee_zcl_met_noti_flag_5_update_cin; |
5634 | | static int hf_zbee_zcl_met_noti_flag_5_reserved; |
5635 | | static int hf_zbee_zcl_met_get_profile_interval_channel; |
5636 | | static int hf_zbee_zcl_met_get_profile_end_time; |
5637 | | static int hf_zbee_zcl_met_get_profile_number_of_periods; |
5638 | | static int hf_zbee_zcl_met_request_mirror_rsp_endpoint_id; |
5639 | | static int hf_zbee_zcl_met_mirror_removed_removed_endpoint_id; |
5640 | | static int hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period; |
5641 | | static int hf_zbee_zcl_met_request_fast_poll_mode_duration; |
5642 | | static int hf_zbee_zcl_met_schedule_snapshot_issuer_event_id; |
5643 | | static int hf_zbee_zcl_met_schedule_snapshot_command_index; |
5644 | | static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id; |
5645 | | static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time; |
5646 | | static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule; |
5647 | | static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type; |
5648 | | static int hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause; |
5649 | | static int hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands; |
5650 | | static int hf_zbee_zcl_met_take_snapshot_snapshot_cause; |
5651 | | static int hf_zbee_zcl_met_get_snapshot_start_time; |
5652 | | static int hf_zbee_zcl_met_get_snapshot_end_time; |
5653 | | static int hf_zbee_zcl_met_get_snapshot_snapshot_offset; |
5654 | | static int hf_zbee_zcl_met_get_snapshot_snapshot_cause; |
5655 | | static int hf_zbee_zcl_met_start_sampling_issuer_event_id; |
5656 | | static int hf_zbee_zcl_met_start_sampling_start_sampling_time; |
5657 | | static int hf_zbee_zcl_met_start_sampling_sample_type; |
5658 | | static int hf_zbee_zcl_met_start_sampling_sample_request_interval; |
5659 | | static int hf_zbee_zcl_met_start_sampling_max_number_of_samples; |
5660 | | static int hf_zbee_zcl_met_get_sampled_data_sample_id; |
5661 | | static int hf_zbee_zcl_met_get_sampled_data_sample_start_time; |
5662 | | static int hf_zbee_zcl_met_get_sampled_data_sample_type; |
5663 | | static int hf_zbee_zcl_met_get_sampled_data_number_of_samples; |
5664 | | static int hf_zbee_zcl_met_start_sampling_response_sample_id; |
5665 | | static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme; |
5666 | | static int hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n; |
5667 | | static int hf_zbee_zcl_met_reset_load_limit_counter_provider_id; |
5668 | | static int hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id; |
5669 | | static int hf_zbee_zcl_met_change_supply_provider_id; |
5670 | | static int hf_zbee_zcl_met_change_supply_issuer_event_id; |
5671 | | static int hf_zbee_zcl_met_change_supply_request_date_time; |
5672 | | static int hf_zbee_zcl_met_change_supply_implementation_date_time; |
5673 | | static int hf_zbee_zcl_met_change_supply_proposed_supply_status; |
5674 | | static int hf_zbee_zcl_met_change_supply_supply_control_bits; |
5675 | | static int hf_zbee_zcl_met_local_change_supply_proposed_supply_status; |
5676 | | static int hf_zbee_zcl_met_set_supply_status_issuer_event_id; |
5677 | | static int hf_zbee_zcl_met_set_supply_status_supply_tamper_state; |
5678 | | static int hf_zbee_zcl_met_set_supply_status_supply_depletion_state; |
5679 | | static int hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state; |
5680 | | static int hf_zbee_zcl_met_set_supply_status_load_limit_supply_state; |
5681 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id; |
5682 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id; |
5683 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold; |
5684 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure; |
5685 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier; |
5686 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor; |
5687 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period; |
5688 | | static int hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period; |
5689 | | static int hf_zbee_zcl_met_get_profile_response_end_time; |
5690 | | static int hf_zbee_zcl_met_get_profile_response_status; |
5691 | | static int hf_zbee_zcl_met_get_profile_response_profile_interval_period; |
5692 | | static int hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered; |
5693 | | static int hf_zbee_zcl_met_get_profile_response_intervals; |
5694 | | static int hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period; |
5695 | | static int hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time; |
5696 | | static int hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id; |
5697 | | static int hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id; |
5698 | | static int hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation; |
5699 | | static int hf_zbee_zcl_met_take_snapshot_response_snapshot_id; |
5700 | | static int hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation; |
5701 | | static int hf_zbee_zcl_met_publish_snapshot_snapshot_id; |
5702 | | static int hf_zbee_zcl_met_publish_snapshot_snapshot_time; |
5703 | | static int hf_zbee_zcl_met_publish_snapshot_snapshots_found; |
5704 | | static int hf_zbee_zcl_met_publish_snapshot_cmd_index; |
5705 | | static int hf_zbee_zcl_met_publish_snapshot_total_commands; |
5706 | | static int hf_zbee_zcl_met_publish_snapshot_snapshot_cause; |
5707 | | static int hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type; |
5708 | | static int hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload; |
5709 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_id; |
5710 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_start_time; |
5711 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_type; |
5712 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval; |
5713 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples; |
5714 | | static int hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples; |
5715 | | static int hf_zbee_zcl_met_configure_mirror_issuer_event_id; |
5716 | | static int hf_zbee_zcl_met_configure_mirror_reporting_interval; |
5717 | | static int hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting; |
5718 | | static int hf_zbee_zcl_met_configure_mirror_notification_scheme; |
5719 | | static int hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id; |
5720 | | static int hf_zbee_zcl_met_configure_notification_scheme_notification_scheme; |
5721 | | static int hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order; |
5722 | | static int hf_zbee_zcl_met_configure_notification_flags_issuer_event_id; |
5723 | | static int hf_zbee_zcl_met_configure_notification_flags_notification_scheme; |
5724 | | static int hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id; |
5725 | | static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_cluster_id; |
5726 | | static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_manufacturer_code; |
5727 | | static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_no_of_commands; |
5728 | | static int hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_command_identifier; |
5729 | | static int hf_zbee_zcl_met_get_notified_msg_notification_scheme; |
5730 | | static int hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id; |
5731 | | static int hf_zbee_zcl_met_get_notified_msg_notification_flags; |
5732 | | static int hf_zbee_zcl_met_supply_status_response_provider_id; |
5733 | | static int hf_zbee_zcl_met_supply_status_response_issuer_event_id; |
5734 | | static int hf_zbee_zcl_met_supply_status_response_implementation_date_time; |
5735 | | static int hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation; |
5736 | | static int hf_zbee_zcl_met_snapshot_cause_general; |
5737 | | static int hf_zbee_zcl_met_snapshot_cause_end_of_billing_period; |
5738 | | static int hf_zbee_zcl_met_snapshot_cause_end_of_block_period; |
5739 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information; |
5740 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix; |
5741 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds; |
5742 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_cv; |
5743 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_cf; |
5744 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_calendar; |
5745 | | static int hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing; |
5746 | | static int hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client; |
5747 | | static int hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period; |
5748 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_tenancy; |
5749 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_supplier; |
5750 | | static int hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode; |
5751 | | static int hf_zbee_zcl_met_snapshot_cause_debt_payment; |
5752 | | static int hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot; |
5753 | | static int hf_zbee_zcl_met_snapshot_cause_ota_firmware_download; |
5754 | | static int hf_zbee_zcl_met_snapshot_cause_reserved; |
5755 | | static int hf_zbee_zcl_met_snapshot_schedule_frequency; |
5756 | | static int hf_zbee_zcl_met_snapshot_schedule_frequency_type; |
5757 | | static int hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card; |
5758 | | |
5759 | | static int* const zbee_zcl_met_snapshot_schedule_bits[] = { |
5760 | | &hf_zbee_zcl_met_snapshot_schedule_frequency, |
5761 | | &hf_zbee_zcl_met_snapshot_schedule_frequency_type, |
5762 | | &hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card, |
5763 | | NULL |
5764 | | }; |
5765 | | |
5766 | | static int* const zbee_zcl_met_func_noti_flags[] = { |
5767 | | &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware, |
5768 | | &hf_zbee_zcl_met_func_noti_flag_cbke_update_request, |
5769 | | &hf_zbee_zcl_met_func_noti_flag_time_sync, |
5770 | | &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han, |
5771 | | &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan, |
5772 | | &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set, |
5773 | | &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set, |
5774 | | &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster, |
5775 | | &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster, |
5776 | | &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster, |
5777 | | &hf_zbee_zcl_met_func_noti_flag_network_key_active, |
5778 | | &hf_zbee_zcl_met_func_noti_flag_display_message, |
5779 | | &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages, |
5780 | | &hf_zbee_zcl_met_func_noti_flag_change_supply, |
5781 | | &hf_zbee_zcl_met_func_noti_flag_local_change_supply, |
5782 | | &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold, |
5783 | | &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending, |
5784 | | &hf_zbee_zcl_met_func_noti_flag_get_snapshot, |
5785 | | &hf_zbee_zcl_met_func_noti_flag_get_sampled_data, |
5786 | | &hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available, |
5787 | | &hf_zbee_zcl_met_func_noti_flag_energy_scan_pending, |
5788 | | &hf_zbee_zcl_met_func_noti_flag_channel_change_pending, |
5789 | | &hf_zbee_zcl_met_func_noti_flag_reserved, |
5790 | | NULL |
5791 | | }; |
5792 | | |
5793 | | static int* const zbee_zcl_met_noti_flags_2[] = { |
5794 | | &hf_zbee_zcl_met_noti_flag_2_publish_price, |
5795 | | &hf_zbee_zcl_met_noti_flag_2_publish_block_period, |
5796 | | &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info, |
5797 | | &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor, |
5798 | | &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value, |
5799 | | &hf_zbee_zcl_met_noti_flag_2_publish_co2_value, |
5800 | | &hf_zbee_zcl_met_noti_flag_2_publish_billing_period, |
5801 | | &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill, |
5802 | | &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix, |
5803 | | &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds, |
5804 | | &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion, |
5805 | | &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info, |
5806 | | &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event, |
5807 | | &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels, |
5808 | | &hf_zbee_zcl_met_noti_flag_2_cancel_tariff, |
5809 | | &hf_zbee_zcl_met_noti_flag_2_reserved, |
5810 | | NULL |
5811 | | }; |
5812 | | |
5813 | | static int* const zbee_zcl_met_noti_flags_3[] = { |
5814 | | &hf_zbee_zcl_met_noti_flag_3_publish_calendar, |
5815 | | &hf_zbee_zcl_met_noti_flag_3_publish_special_days, |
5816 | | &hf_zbee_zcl_met_noti_flag_3_publish_seasons, |
5817 | | &hf_zbee_zcl_met_noti_flag_3_publish_week, |
5818 | | &hf_zbee_zcl_met_noti_flag_3_publish_day, |
5819 | | &hf_zbee_zcl_met_noti_flag_3_cancel_calendar, |
5820 | | &hf_zbee_zcl_met_noti_flag_3_reserved, |
5821 | | NULL |
5822 | | }; |
5823 | | |
5824 | | static int* const zbee_zcl_met_noti_flags_4[] = { |
5825 | | &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit, |
5826 | | &hf_zbee_zcl_met_noti_flag_4_change_debt, |
5827 | | &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup, |
5828 | | &hf_zbee_zcl_met_noti_flag_4_consumer_top_up, |
5829 | | &hf_zbee_zcl_met_noti_flag_4_credit_adjustment, |
5830 | | &hf_zbee_zcl_met_noti_flag_4_change_payment_mode, |
5831 | | &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot, |
5832 | | &hf_zbee_zcl_met_noti_flag_4_get_top_up_log, |
5833 | | &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level, |
5834 | | &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log, |
5835 | | &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit, |
5836 | | &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap, |
5837 | | &hf_zbee_zcl_met_noti_flag_4_reserved, |
5838 | | NULL |
5839 | | }; |
5840 | | |
5841 | | static int* const zbee_zcl_met_noti_flags_5[] = { |
5842 | | &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy, |
5843 | | &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier, |
5844 | | &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response, |
5845 | | &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response, |
5846 | | &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response, |
5847 | | &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response, |
5848 | | &hf_zbee_zcl_met_noti_flag_5_update_site_id, |
5849 | | &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter, |
5850 | | &hf_zbee_zcl_met_noti_flag_5_update_cin, |
5851 | | &hf_zbee_zcl_met_noti_flag_5_reserved, |
5852 | | NULL |
5853 | | }; |
5854 | | |
5855 | | static int* const zbee_zcl_met_snapshot_cause_flags[] = { |
5856 | | &hf_zbee_zcl_met_snapshot_cause_general, |
5857 | | &hf_zbee_zcl_met_snapshot_cause_end_of_billing_period, |
5858 | | &hf_zbee_zcl_met_snapshot_cause_end_of_block_period, |
5859 | | &hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information, |
5860 | | &hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix, |
5861 | | &hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds, |
5862 | | &hf_zbee_zcl_met_snapshot_cause_change_of_cv, |
5863 | | &hf_zbee_zcl_met_snapshot_cause_change_of_cf, |
5864 | | &hf_zbee_zcl_met_snapshot_cause_change_of_calendar, |
5865 | | &hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing, |
5866 | | &hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client, |
5867 | | &hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period, |
5868 | | &hf_zbee_zcl_met_snapshot_cause_change_of_tenancy, |
5869 | | &hf_zbee_zcl_met_snapshot_cause_change_of_supplier, |
5870 | | &hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode, |
5871 | | &hf_zbee_zcl_met_snapshot_cause_debt_payment, |
5872 | | &hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot, |
5873 | | &hf_zbee_zcl_met_snapshot_cause_ota_firmware_download, |
5874 | | &hf_zbee_zcl_met_snapshot_cause_reserved, |
5875 | | NULL |
5876 | | }; |
5877 | | |
5878 | | /* Initialize the subtree pointers */ |
5879 | | static int ett_zbee_zcl_met; |
5880 | | static int ett_zbee_zcl_met_func_noti_flags; |
5881 | | static int ett_zbee_zcl_met_noti_flags_2; |
5882 | | static int ett_zbee_zcl_met_noti_flags_3; |
5883 | | static int ett_zbee_zcl_met_noti_flags_4; |
5884 | | static int ett_zbee_zcl_met_noti_flags_5; |
5885 | | static int ett_zbee_zcl_met_snapshot_cause_flags; |
5886 | | static int ett_zbee_zcl_met_snapshot_schedule; |
5887 | | static int ett_zbee_zcl_met_schedule_snapshot_response_payload; |
5888 | | static int ett_zbee_zcl_met_schedule_snapshot_payload; |
5889 | | static int ett_zbee_zcl_met_mirror_noti_flag; |
5890 | | static int ett_zbee_zcl_met_bit_field_allocation; |
5891 | | |
5892 | | /*************************/ |
5893 | | /* Function Bodies */ |
5894 | | /*************************/ |
5895 | | |
5896 | | /** |
5897 | | *This function is called by ZCL foundation dissector in order to decode |
5898 | | * |
5899 | | *@param tree pointer to data tree Wireshark uses to display packet. |
5900 | | *@param tvb pointer to buffer containing raw packet. |
5901 | | *@param offset pointer to buffer offset |
5902 | | *@param attr_id attribute identifier |
5903 | | *@param data_type attribute data type |
5904 | | *@param client_attr ZCL client |
5905 | | */ |
5906 | | static void |
5907 | | dissect_zcl_met_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
5908 | 782 | { |
5909 | 782 | if (client_attr) { |
5910 | 741 | switch (attr_id) { |
5911 | | /* applies to all SE clusters */ |
5912 | 1 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET_CLNT: |
5913 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
5914 | 1 | *offset += 1; |
5915 | 1 | break; |
5916 | | |
5917 | 97 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS: |
5918 | 97 | proto_item_append_text(tree, ", Functional Notification Flags"); |
5919 | 97 | 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); |
5920 | 97 | *offset += 4; |
5921 | 97 | break; |
5922 | | |
5923 | 18 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2: |
5924 | 18 | proto_item_append_text(tree, ", Notification Flags 2"); |
5925 | 18 | 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); |
5926 | 18 | *offset += 4; |
5927 | 18 | break; |
5928 | | |
5929 | 16 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3: |
5930 | 16 | proto_item_append_text(tree, ", Notification Flags 3"); |
5931 | 16 | 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); |
5932 | 16 | *offset += 4; |
5933 | 16 | break; |
5934 | | |
5935 | 7 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4: |
5936 | 7 | proto_item_append_text(tree, ", Notification Flags 4"); |
5937 | 7 | 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); |
5938 | 7 | *offset += 4; |
5939 | 7 | break; |
5940 | | |
5941 | 7 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5: |
5942 | 7 | proto_item_append_text(tree, ", Notification Flags 5"); |
5943 | 7 | 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); |
5944 | 7 | *offset += 4; |
5945 | 7 | break; |
5946 | | |
5947 | 595 | default: /* Catch all */ |
5948 | 595 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
5949 | 595 | break; |
5950 | 741 | } |
5951 | 741 | } |
5952 | 41 | else { |
5953 | 41 | switch (attr_id) { |
5954 | | /* applies to all SE clusters */ |
5955 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_MET: |
5956 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
5957 | 0 | *offset += 1; |
5958 | 0 | break; |
5959 | | |
5960 | 41 | default: /* Catch all */ |
5961 | 41 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
5962 | 41 | break; |
5963 | 41 | } |
5964 | 41 | } |
5965 | 782 | } /*dissect_zcl_met_attr_data*/ |
5966 | | |
5967 | | /** |
5968 | | *This function manages the Start Sampling Response payload. |
5969 | | * |
5970 | | *@param tvb pointer to buffer containing raw packet. |
5971 | | *@param tree pointer to data tree Wireshark uses to display packet. |
5972 | | *@param offset pointer to offset from caller |
5973 | | */ |
5974 | | static void dissect_zcl_met_start_sampling_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
5975 | 0 | { |
5976 | | /* Sample ID */ |
5977 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_response_sample_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
5978 | 0 | *offset += 2; |
5979 | 0 | } /*dissect_zcl_met_start_sampling_response*/ |
5980 | | |
5981 | | /** |
5982 | | *ZigBee ZCL Metering cluster dissector for wireshark. |
5983 | | * |
5984 | | *@param tvb pointer to buffer containing raw packet. |
5985 | | *@param pinfo pointer to packet information fields |
5986 | | *@param tree pointer to data tree Wireshark uses to display packet. |
5987 | | */ |
5988 | | static int |
5989 | | dissect_zbee_zcl_met(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
5990 | 4 | { |
5991 | 4 | proto_tree *payload_tree; |
5992 | 4 | zbee_zcl_packet *zcl; |
5993 | 4 | unsigned offset = 0; |
5994 | 4 | uint8_t cmd_id; |
5995 | 4 | int rem_len; |
5996 | | |
5997 | | /* Reject the packet if data is NULL */ |
5998 | 4 | if (data == NULL) |
5999 | 0 | return 0; |
6000 | 4 | zcl = (zbee_zcl_packet *)data; |
6001 | 4 | cmd_id = zcl->cmd_id; |
6002 | | |
6003 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
6004 | 4 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
6005 | | /* Append the command name to the info column. */ |
6006 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
6007 | 1 | val_to_str_const(cmd_id, zbee_zcl_met_srv_rx_cmd_names, "Unknown Command"), |
6008 | 1 | zcl->tran_seqno); |
6009 | | |
6010 | | /* Add the command ID. */ |
6011 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_met_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
6012 | | |
6013 | | /* Check is this command has a payload, than add the payload tree */ |
6014 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
6015 | 1 | if (rem_len > 0) { |
6016 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_met, NULL, "Payload"); |
6017 | | |
6018 | | /* Call the appropriate command dissector */ |
6019 | 1 | switch (cmd_id) { |
6020 | | |
6021 | 1 | case ZBEE_ZCL_CMD_ID_MET_GET_PROFILE: |
6022 | 1 | dissect_zcl_met_get_profile(tvb, payload_tree, &offset); |
6023 | 1 | break; |
6024 | | |
6025 | 0 | case ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR_RSP: |
6026 | 0 | dissect_zcl_met_request_mirror_rsp(tvb, payload_tree, &offset); |
6027 | 0 | break; |
6028 | | |
6029 | 0 | case ZBEE_ZCL_CMD_ID_MET_MIRROR_REMOVED: |
6030 | 0 | dissect_zcl_met_mirror_removed(tvb, payload_tree, &offset); |
6031 | 0 | break; |
6032 | | |
6033 | 0 | case ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE: |
6034 | 0 | dissect_zcl_met_request_fast_poll_mode(tvb, payload_tree, &offset); |
6035 | 0 | break; |
6036 | | |
6037 | 0 | case ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT: |
6038 | 0 | dissect_zcl_met_schedule_snapshot(tvb, payload_tree, &offset); |
6039 | 0 | break; |
6040 | | |
6041 | 0 | case ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT: |
6042 | 0 | dissect_zcl_met_take_snapshot(tvb, payload_tree, &offset); |
6043 | 0 | break; |
6044 | | |
6045 | 0 | case ZBEE_ZCL_CMD_ID_MET_GET_SNAPSHOT: |
6046 | 0 | dissect_zcl_met_get_snapshot(tvb, payload_tree, &offset); |
6047 | 0 | break; |
6048 | | |
6049 | 0 | case ZBEE_ZCL_CMD_ID_MET_START_SAMPLING: |
6050 | 0 | dissect_zcl_met_start_sampling(tvb, payload_tree, &offset); |
6051 | 0 | break; |
6052 | | |
6053 | 0 | case ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA: |
6054 | 0 | dissect_zcl_met_get_sampled_data(tvb, payload_tree, &offset); |
6055 | 0 | break; |
6056 | | |
6057 | 0 | case ZBEE_ZCL_CMD_ID_MET_MIRROR_REPORT_ATTRIBUTE_RESPONSE: |
6058 | 0 | dissect_zcl_met_mirror_report_attribute_response(tvb, payload_tree, &offset); |
6059 | 0 | break; |
6060 | | |
6061 | 0 | case ZBEE_ZCL_CMD_ID_MET_RESET_LOAD_LIMIT_COUNTER: |
6062 | 0 | dissect_zcl_met_reset_load_limit_counter(tvb, payload_tree, &offset); |
6063 | 0 | break; |
6064 | | |
6065 | 0 | case ZBEE_ZCL_CMD_ID_MET_CHANGE_SUPPLY: |
6066 | 0 | dissect_zcl_met_change_supply(tvb, payload_tree, &offset); |
6067 | 0 | break; |
6068 | | |
6069 | 0 | case ZBEE_ZCL_CMD_ID_MET_LOCAL_CHANGE_SUPPLY: |
6070 | 0 | dissect_zcl_met_local_change_supply(tvb, payload_tree, &offset); |
6071 | 0 | break; |
6072 | | |
6073 | 0 | case ZBEE_ZCL_CMD_ID_MET_SET_SUPPLY_STATUS: |
6074 | 0 | dissect_zcl_met_set_supply_status(tvb, payload_tree, &offset); |
6075 | 0 | break; |
6076 | | |
6077 | 0 | case ZBEE_ZCL_CMD_ID_MET_SET_UNCONTROLLED_FLOW_THRESHOLD: |
6078 | 0 | dissect_zcl_met_set_uncontrolled_flow_threshold(tvb, payload_tree, &offset); |
6079 | 0 | break; |
6080 | | |
6081 | 0 | default: |
6082 | 0 | break; |
6083 | 1 | } |
6084 | 1 | } |
6085 | 1 | } |
6086 | 3 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
6087 | | /* Append the command name to the info column. */ |
6088 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
6089 | 3 | val_to_str_const(cmd_id, zbee_zcl_met_srv_tx_cmd_names, "Unknown Command"), |
6090 | 3 | zcl->tran_seqno); |
6091 | | |
6092 | | /* Add the command ID. */ |
6093 | 3 | proto_tree_add_uint(tree, hf_zbee_zcl_met_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
6094 | | |
6095 | | /* Check is this command has a payload, than add the payload tree */ |
6096 | 3 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
6097 | 3 | if (rem_len > 0) { |
6098 | 3 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_met, NULL, "Payload"); |
6099 | | |
6100 | | /* Call the appropriate command dissector */ |
6101 | 3 | switch (cmd_id) { |
6102 | | |
6103 | 0 | case ZBEE_ZCL_CMD_ID_MET_GET_PROFILE_RESPONSE: |
6104 | 0 | dissect_zcl_met_get_profile_response(tvb, payload_tree, &offset); |
6105 | 0 | break; |
6106 | | |
6107 | 0 | case ZBEE_ZCL_CMD_ID_MET_REQUEST_MIRROR: |
6108 | | /* No payload */ |
6109 | 0 | break; |
6110 | | |
6111 | 0 | case ZBEE_ZCL_CMD_ID_MET_REMOVE_MIRROR: |
6112 | | /* No payload */ |
6113 | 0 | break; |
6114 | | |
6115 | 0 | case ZBEE_ZCL_CMD_ID_MET_REQUEST_FAST_POLL_MODE_RESPONSE: |
6116 | 0 | dissect_zcl_met_request_fast_poll_mode_response(tvb, payload_tree, &offset); |
6117 | 0 | break; |
6118 | | |
6119 | 0 | case ZBEE_ZCL_CMD_ID_MET_SCHEDULE_SNAPSHOT_RESPONSE: |
6120 | 0 | dissect_zcl_met_schedule_snapshot_response(tvb, payload_tree, &offset); |
6121 | 0 | break; |
6122 | | |
6123 | 0 | case ZBEE_ZCL_CMD_ID_MET_TAKE_SNAPSHOT_RESPONSE: |
6124 | 0 | dissect_zcl_met_take_snapshot_response(tvb, payload_tree, &offset); |
6125 | 0 | break; |
6126 | | |
6127 | 0 | case ZBEE_ZCL_CMD_ID_MET_PUBLISH_SNAPSHOT: |
6128 | 0 | dissect_zcl_met_publish_snapshot(tvb, payload_tree, &offset); |
6129 | 0 | break; |
6130 | | |
6131 | 2 | case ZBEE_ZCL_CMD_ID_MET_GET_SAMPLED_DATA_RSP: |
6132 | 2 | dissect_zcl_met_get_sampled_data_rsp(tvb, payload_tree, &offset); |
6133 | 2 | break; |
6134 | | |
6135 | 1 | case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_MIRROR: |
6136 | 1 | dissect_zcl_met_configure_mirror(tvb, payload_tree, &offset); |
6137 | 1 | break; |
6138 | | |
6139 | 0 | case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_SCHEME: |
6140 | 0 | dissect_zcl_met_configure_notification_scheme(tvb, payload_tree, &offset); |
6141 | 0 | break; |
6142 | | |
6143 | 0 | case ZBEE_ZCL_CMD_ID_MET_CONFIGURE_NOTIFICATION_FLAGS: |
6144 | 0 | dissect_zcl_met_configure_notification_flags(tvb, payload_tree, &offset); |
6145 | 0 | break; |
6146 | | |
6147 | 0 | case ZBEE_ZCL_CMD_ID_MET_GET_NOTIFIED_MESSAGE: |
6148 | 0 | dissect_zcl_met_get_notified_msg(tvb, payload_tree, &offset); |
6149 | 0 | break; |
6150 | | |
6151 | 0 | case ZBEE_ZCL_CMD_ID_MET_SUPPLY_STATUS_RESPONSE: |
6152 | 0 | dissect_zcl_met_supply_status_response(tvb, payload_tree, &offset); |
6153 | 0 | break; |
6154 | | |
6155 | 0 | case ZBEE_ZCL_CMD_ID_MET_START_SAMPLING_RESPONSE: |
6156 | 0 | dissect_zcl_met_start_sampling_response(tvb, payload_tree, &offset); |
6157 | 0 | break; |
6158 | | |
6159 | 0 | default: |
6160 | 0 | break; |
6161 | 3 | } |
6162 | 3 | } |
6163 | 3 | } |
6164 | | |
6165 | 3 | return tvb_captured_length(tvb); |
6166 | 4 | } /*dissect_zbee_zcl_met*/ |
6167 | | |
6168 | | /** |
6169 | | *This function manages the Get Profile payload |
6170 | | * |
6171 | | *@param tvb pointer to buffer containing raw packet. |
6172 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6173 | | *@param offset pointer to offset from caller |
6174 | | */ |
6175 | | static void |
6176 | | dissect_zcl_met_get_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6177 | 1 | { |
6178 | | /* Interval Channel */ |
6179 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_interval_channel, tvb, *offset, 1, ENC_NA); |
6180 | 1 | *offset += 1; |
6181 | | |
6182 | | /* End Time */ |
6183 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6184 | 1 | *offset += 4; |
6185 | | |
6186 | | /* Number of Periods */ |
6187 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_number_of_periods, tvb, *offset, 1, ENC_NA); |
6188 | 1 | *offset += 1; |
6189 | 1 | } /*dissect_zcl_met_get_profile*/ |
6190 | | |
6191 | | /** |
6192 | | *This function manages the Request Mirror Response payload |
6193 | | * |
6194 | | *@param tvb pointer to buffer containing raw packet. |
6195 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6196 | | *@param offset pointer to offset from caller |
6197 | | */ |
6198 | | static void |
6199 | | dissect_zcl_met_request_mirror_rsp(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6200 | 0 | { |
6201 | | /* EndPoint ID */ |
6202 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_request_mirror_rsp_endpoint_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6203 | 0 | *offset += 2; |
6204 | 0 | } /*dissect_zcl_met_request_mirror_rsp*/ |
6205 | | |
6206 | | /** |
6207 | | *This function manages the Mirror Removed payload |
6208 | | * |
6209 | | *@param tvb pointer to buffer containing raw packet. |
6210 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6211 | | *@param offset pointer to offset from caller |
6212 | | */ |
6213 | | static void |
6214 | | dissect_zcl_met_mirror_removed(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6215 | 0 | { |
6216 | | /* Removed EndPoint ID */ |
6217 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_mirror_removed_removed_endpoint_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6218 | 0 | *offset += 2; |
6219 | 0 | } /*dissect_zcl_met_mirror_removed*/ |
6220 | | |
6221 | | /** |
6222 | | *This function manages the Request Fast Poll Mode payload |
6223 | | * |
6224 | | *@param tvb pointer to buffer containing raw packet. |
6225 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6226 | | *@param offset pointer to offset from caller |
6227 | | */ |
6228 | | static void |
6229 | | dissect_zcl_met_request_fast_poll_mode(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6230 | 0 | { |
6231 | | /* Fast Poll Update Period */ |
6232 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period, tvb, *offset, 1, ENC_NA); |
6233 | 0 | *offset += 1; |
6234 | | |
6235 | | /* Duration */ |
6236 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_request_fast_poll_mode_duration, tvb, *offset, 1, ENC_NA); |
6237 | 0 | *offset += 1; |
6238 | 0 | } /*dissect_zcl_met_request_fast_poll_mode*/ |
6239 | | |
6240 | | /** |
6241 | | *This function manages the Schedule Snapshot payload |
6242 | | * |
6243 | | *@param tvb pointer to buffer containing raw packet. |
6244 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6245 | | *@param offset pointer to offset from caller |
6246 | | */ |
6247 | | static void |
6248 | | dissect_zcl_met_schedule_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6249 | 0 | { |
6250 | | /* Issue Event ID */ |
6251 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6252 | 0 | *offset += 4; |
6253 | | |
6254 | | /* Command Index */ |
6255 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_command_index, tvb, *offset, 1, ENC_NA); |
6256 | 0 | *offset += 1; |
6257 | | |
6258 | | /* Total Number of Commands */ |
6259 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
6260 | 0 | *offset += 1; |
6261 | | |
6262 | | /* Snapshot Schedule Payload */ |
6263 | 0 | proto_tree *payload_tree; |
6264 | |
|
6265 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, *offset, 13, |
6266 | 0 | ett_zbee_zcl_met_schedule_snapshot_payload, NULL, "Snapshot Schedule Payload"); |
6267 | | |
6268 | | /* Snapshot Schedule ID */ |
6269 | 0 | proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id, |
6270 | 0 | tvb, *offset, 1, ENC_NA); |
6271 | 0 | *offset += 1; |
6272 | | |
6273 | | /* Snapshot Start Time */ |
6274 | 0 | 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); |
6275 | 0 | *offset += 4; |
6276 | | |
6277 | | /* Snapshot Schedule */ |
6278 | 0 | proto_tree_add_bitmask(payload_tree, tvb, *offset, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule, |
6279 | 0 | ett_zbee_zcl_met_snapshot_schedule, |
6280 | 0 | zbee_zcl_met_snapshot_schedule_bits, ENC_LITTLE_ENDIAN); |
6281 | 0 | *offset += 3; |
6282 | | |
6283 | | /* Snapshot Payload Type */ |
6284 | 0 | proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type, |
6285 | 0 | tvb, *offset, 1, ENC_NA); |
6286 | 0 | *offset += 1; |
6287 | | |
6288 | | /* Snapshot Cause */ |
6289 | 0 | proto_tree_add_bitmask(payload_tree, tvb, *offset, hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause, |
6290 | 0 | ett_zbee_zcl_met_snapshot_cause_flags, zbee_zcl_met_snapshot_cause_flags, ENC_LITTLE_ENDIAN); |
6291 | 0 | *offset += 4; |
6292 | |
|
6293 | 0 | } /*dissect_zcl_met_schedule_snapshot*/ |
6294 | | |
6295 | | /** |
6296 | | *This function manages the Take Snapshot payload |
6297 | | * |
6298 | | *@param tvb pointer to buffer containing raw packet. |
6299 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6300 | | *@param offset pointer to offset from caller |
6301 | | */ |
6302 | | static void |
6303 | | dissect_zcl_met_take_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6304 | 0 | { |
6305 | | /* Snapshot Cause */ |
6306 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_take_snapshot_snapshot_cause, |
6307 | 0 | ett_zbee_zcl_met_snapshot_cause_flags, zbee_zcl_met_snapshot_cause_flags, ENC_LITTLE_ENDIAN); |
6308 | 0 | *offset += 4; |
6309 | 0 | } /*dissect_zcl_met_take_snapshot*/ |
6310 | | |
6311 | | /** |
6312 | | *This function manages the Get Snapshot payload |
6313 | | * |
6314 | | *@param tvb pointer to buffer containing raw packet. |
6315 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6316 | | *@param offset pointer to offset from caller |
6317 | | */ |
6318 | | static void |
6319 | | dissect_zcl_met_get_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6320 | 0 | { |
6321 | | /* Start Time */ |
6322 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_snapshot_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6323 | 0 | *offset += 4; |
6324 | |
|
6325 | 0 | if (gPREF_zbee_se_protocol_version >= ZBEE_SE_VERSION_1_2) { |
6326 | | /* End Time - Introduced from ZCL version 1.2 */ |
6327 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_snapshot_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6328 | 0 | *offset += 4; |
6329 | 0 | } |
6330 | | |
6331 | | /* Snapshot Offset */ |
6332 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_snapshot_snapshot_offset, tvb, *offset, 1, ENC_NA); |
6333 | 0 | *offset += 1; |
6334 | | |
6335 | | /* Snapshot Cause */ |
6336 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_get_snapshot_snapshot_cause, |
6337 | 0 | ett_zbee_zcl_met_snapshot_cause_flags, zbee_zcl_met_snapshot_cause_flags, ENC_LITTLE_ENDIAN); |
6338 | 0 | *offset += 4; |
6339 | 0 | } /*dissect_zcl_met_get_snapshot*/ |
6340 | | |
6341 | | /** |
6342 | | *This function manages the Start Sampling payload |
6343 | | * |
6344 | | *@param tvb pointer to buffer containing raw packet. |
6345 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6346 | | *@param offset pointer to offset from caller |
6347 | | */ |
6348 | | static void |
6349 | | dissect_zcl_met_start_sampling(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6350 | 0 | { |
6351 | | /* Issuer Event ID */ |
6352 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6353 | 0 | *offset += 4; |
6354 | | |
6355 | | /* Start Sampling Time */ |
6356 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_start_sampling_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6357 | 0 | *offset += 4; |
6358 | | |
6359 | | /* Sample Type */ |
6360 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_sample_type, tvb, *offset, 1, ENC_NA); |
6361 | 0 | *offset += 1; |
6362 | | |
6363 | | /* Sample Request Interval */ |
6364 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_sample_request_interval, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6365 | 0 | *offset += 2; |
6366 | | |
6367 | | /* Max Number of Samples */ |
6368 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_start_sampling_max_number_of_samples, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6369 | 0 | *offset += 2; |
6370 | 0 | } /*dissect_zcl_met_start_sampling*/ |
6371 | | |
6372 | | /** |
6373 | | *This function manages the Get Sampled Data payload |
6374 | | * |
6375 | | *@param tvb pointer to buffer containing raw packet. |
6376 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6377 | | *@param offset pointer to offset from caller |
6378 | | */ |
6379 | | static void |
6380 | | dissect_zcl_met_get_sampled_data(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6381 | 0 | { |
6382 | | /* Sample ID */ |
6383 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_sample_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6384 | 0 | *offset += 2; |
6385 | | |
6386 | | /* Sample Start Time */ |
6387 | 0 | 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); |
6388 | 0 | *offset += 4; |
6389 | | |
6390 | | /* Sample Type */ |
6391 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_sample_type, tvb, *offset, 1, ENC_NA); |
6392 | 0 | *offset += 1; |
6393 | | |
6394 | | /* Number of Samples */ |
6395 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_number_of_samples, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6396 | 0 | *offset += 2; |
6397 | 0 | } /*dissect_zcl_met_get_sampled_data*/ |
6398 | | |
6399 | | /** |
6400 | | *This function manages the Mirror Report Attribute Response payload |
6401 | | * |
6402 | | *@param tvb pointer to buffer containing raw packet. |
6403 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6404 | | *@param offset pointer to offset from caller |
6405 | | */ |
6406 | | static void |
6407 | | dissect_zcl_met_mirror_report_attribute_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6408 | 0 | { |
6409 | 0 | uint8_t notif_scheme_type; |
6410 | 0 | int noti_flags_count; |
6411 | |
|
6412 | 0 | notif_scheme_type = tvb_get_uint8(tvb, *offset); |
6413 | | /* Notification Scheme */ |
6414 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme, tvb, *offset, 1, ENC_NA); |
6415 | 0 | *offset += 1; |
6416 | |
|
6417 | 0 | switch(notif_scheme_type) { |
6418 | 0 | case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_A: |
6419 | 0 | noti_flags_count = 1; |
6420 | 0 | break; |
6421 | 0 | case ZBEE_ZCL_MET_NOTIFICATION_SCHEME_B: |
6422 | 0 | noti_flags_count = 5; |
6423 | 0 | break; |
6424 | 0 | default: |
6425 | 0 | noti_flags_count = -1; |
6426 | 0 | break; |
6427 | 0 | } |
6428 | 0 | if (noti_flags_count > 0) { |
6429 | 0 | for (int noti_flags_number = 0; noti_flags_number < noti_flags_count; noti_flags_number++) { |
6430 | 0 | dissect_zcl_met_notification_flags(tvb, tree, offset, noti_flags_number); |
6431 | 0 | } |
6432 | 0 | } else { |
6433 | | /* Notification Flag */ |
6434 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
6435 | 0 | proto_tree *notification_flag_tree; |
6436 | 0 | notification_flag_tree = proto_tree_add_subtree(tree, tvb, *offset, 4, ett_zbee_zcl_met_mirror_noti_flag, NULL, "Notification Flags"); |
6437 | 0 | proto_tree_add_item(notification_flag_tree, hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n, |
6438 | 0 | tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6439 | 0 | *offset += 4; |
6440 | 0 | } |
6441 | 0 | } |
6442 | 0 | } /*dissect_zcl_met_mirror_report_attribute_response*/ |
6443 | | |
6444 | | /** |
6445 | | *This function manages the Reset Load Limit Counter payload |
6446 | | * |
6447 | | *@param tvb pointer to buffer containing raw packet. |
6448 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6449 | | *@param offset pointer to offset from caller |
6450 | | */ |
6451 | | static void |
6452 | | dissect_zcl_met_reset_load_limit_counter(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6453 | 0 | { |
6454 | | /* Provider ID */ |
6455 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_reset_load_limit_counter_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6456 | 0 | *offset += 4; |
6457 | | |
6458 | | /* Issuer Event ID */ |
6459 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6460 | 0 | *offset += 4; |
6461 | 0 | } /*dissect_zcl_met_reset_load_limit_counter*/ |
6462 | | |
6463 | | /** |
6464 | | *This function manages the Change Supply payload |
6465 | | * |
6466 | | *@param tvb pointer to buffer containing raw packet. |
6467 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6468 | | *@param offset pointer to offset from caller |
6469 | | */ |
6470 | | static void |
6471 | | dissect_zcl_met_change_supply(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6472 | 0 | { |
6473 | | /* Provider ID */ |
6474 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6475 | 0 | *offset += 4; |
6476 | | |
6477 | | /* Issuer Event ID */ |
6478 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6479 | 0 | *offset += 4; |
6480 | | |
6481 | | /* Request Date/Time */ |
6482 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_request_date_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6483 | 0 | *offset += 4; |
6484 | | |
6485 | | /* Implementation Date/Time */ |
6486 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_implementation_date_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6487 | 0 | *offset += 4; |
6488 | | |
6489 | | /* Proposed Supple Status */ |
6490 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_proposed_supply_status, tvb, *offset, 1, ENC_NA); |
6491 | 0 | *offset += 1; |
6492 | | |
6493 | | /* Supple Control Bits */ |
6494 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_change_supply_supply_control_bits, tvb, *offset, 1, ENC_NA); |
6495 | 0 | *offset += 1; |
6496 | 0 | } /*dissect_zcl_met_change_supply*/ |
6497 | | |
6498 | | /** |
6499 | | *This function manages the Local Change Supply payload |
6500 | | * |
6501 | | *@param tvb pointer to buffer containing raw packet. |
6502 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6503 | | *@param offset pointer to offset from caller |
6504 | | */ |
6505 | | static void |
6506 | | dissect_zcl_met_local_change_supply(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6507 | 0 | { |
6508 | | /* Proposed Supply Status */ |
6509 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_local_change_supply_proposed_supply_status, tvb, *offset, 1, ENC_NA); |
6510 | 0 | *offset += 1; |
6511 | 0 | } /*dissect_zcl_met_local_change_supply*/ |
6512 | | |
6513 | | /** |
6514 | | *This function manages the Set Supply Status payload |
6515 | | * |
6516 | | *@param tvb pointer to buffer containing raw packet. |
6517 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6518 | | *@param offset pointer to offset from caller |
6519 | | */ |
6520 | | static void |
6521 | | dissect_zcl_met_set_supply_status(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6522 | 0 | { |
6523 | | /* Issuer Event ID */ |
6524 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_supply_status_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6525 | 0 | *offset += 4; |
6526 | | |
6527 | | /* Supply Tamper State */ |
6528 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_supply_status_supply_tamper_state, tvb, *offset, 1, ENC_NA); |
6529 | 0 | *offset += 1; |
6530 | | |
6531 | | /* Supply Depletion State */ |
6532 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_supply_status_supply_depletion_state, tvb, *offset, 1, ENC_NA); |
6533 | 0 | *offset += 1; |
6534 | | |
6535 | | /* Supply Uncontrolled Flow State */ |
6536 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state, tvb, *offset, 1, ENC_NA); |
6537 | 0 | *offset += 1; |
6538 | | |
6539 | | /* Load Limit Supply State */ |
6540 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_supply_status_load_limit_supply_state, tvb, *offset, 1, ENC_NA); |
6541 | 0 | *offset += 1; |
6542 | 0 | } /*dissect_zcl_met_set_supply_status*/ |
6543 | | |
6544 | | /** |
6545 | | *This function manages the Set Uncontrolled Flow Threshold payload |
6546 | | * |
6547 | | *@param tvb pointer to buffer containing raw packet. |
6548 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6549 | | *@param offset pointer to offset from caller |
6550 | | */ |
6551 | | static void |
6552 | | dissect_zcl_met_set_uncontrolled_flow_threshold(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6553 | 0 | { |
6554 | | /* Provider ID */ |
6555 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6556 | 0 | *offset += 4; |
6557 | | |
6558 | | /* Issuer Event ID */ |
6559 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6560 | 0 | *offset += 4; |
6561 | | |
6562 | | /* Uncontrolled Flow Threshold */ |
6563 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6564 | 0 | *offset += 2; |
6565 | | |
6566 | | /* Unit of Measure */ |
6567 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure, tvb, *offset, 1, ENC_NA); |
6568 | 0 | *offset += 1; |
6569 | | |
6570 | | /* Multiplier */ |
6571 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6572 | 0 | *offset += 2; |
6573 | | |
6574 | | /* Divisor */ |
6575 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6576 | 0 | *offset += 2; |
6577 | | |
6578 | | /* Stabilisation Period */ |
6579 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period, tvb, *offset, 1, ENC_NA); |
6580 | 0 | *offset += 1; |
6581 | | |
6582 | | /* Measurement Period */ |
6583 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6584 | 0 | *offset += 2; |
6585 | 0 | } /*dissect_zcl_met_set_uncontrolled_flow_threshold*/ |
6586 | | |
6587 | | /** |
6588 | | *This function manages the Get Profile Response payload |
6589 | | * |
6590 | | *@param tvb pointer to buffer containing raw packet. |
6591 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6592 | | *@param offset pointer to offset from caller |
6593 | | */ |
6594 | | static void |
6595 | | dissect_zcl_met_get_profile_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6596 | 0 | { |
6597 | | |
6598 | | /* End Time */ |
6599 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_response_end_time, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6600 | 0 | *offset += 4; |
6601 | | |
6602 | | /* Status */ |
6603 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_response_status, tvb, *offset, 1, ENC_NA); |
6604 | 0 | *offset += 1; |
6605 | | |
6606 | | /* Profile Interval Period */ |
6607 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_response_profile_interval_period, tvb, *offset, 1, ENC_NA); |
6608 | 0 | *offset += 1; |
6609 | | |
6610 | | /* Number of Periods Delivered */ |
6611 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered, tvb, *offset, 1, ENC_NA); |
6612 | 0 | *offset += 1; |
6613 | | |
6614 | | /* Intervals */ |
6615 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
6616 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_profile_response_intervals, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
6617 | 0 | *offset += 3; |
6618 | 0 | } |
6619 | 0 | } /*dissect_zcl_met_get_profile_response*/ |
6620 | | |
6621 | | /** |
6622 | | *This function manages the Request Fast Poll Mode Response payload |
6623 | | * |
6624 | | *@param tvb pointer to buffer containing raw packet. |
6625 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6626 | | *@param offset pointer to offset from caller |
6627 | | */ |
6628 | | static void |
6629 | | dissect_zcl_met_request_fast_poll_mode_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6630 | 0 | { |
6631 | | /* Applied Update Period */ |
6632 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period, tvb, *offset, 1, ENC_NA); |
6633 | 0 | *offset += 1; |
6634 | | |
6635 | | /* Fast Poll End Time */ |
6636 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6637 | 0 | *offset += 4; |
6638 | 0 | } /*dissect_zcl_met_request_fast_poll_mode_response*/ |
6639 | | |
6640 | | /** |
6641 | | *This function manages the Schedule Snapshot Response payload |
6642 | | * |
6643 | | *@param tvb pointer to buffer containing raw packet. |
6644 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6645 | | *@param offset pointer to offset from caller |
6646 | | */ |
6647 | | static void |
6648 | | dissect_zcl_met_schedule_snapshot_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6649 | 0 | { |
6650 | | /* Issuer Event ID */ |
6651 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6652 | 0 | *offset += 4; |
6653 | |
|
6654 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
6655 | 0 | proto_tree *payload_tree; |
6656 | |
|
6657 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, *offset, 2, |
6658 | 0 | ett_zbee_zcl_met_schedule_snapshot_response_payload, NULL, "Snapshot Response Payload"); |
6659 | | |
6660 | | /* Snapshot Schedule ID */ |
6661 | 0 | proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id, tvb, *offset, 1, ENC_NA); |
6662 | 0 | *offset += 1; |
6663 | | |
6664 | | /* Snapshot Schedule Confirmation */ |
6665 | 0 | proto_tree_add_item(payload_tree, hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation, tvb, *offset, 1, ENC_NA); |
6666 | 0 | *offset += 1; |
6667 | 0 | } |
6668 | 0 | } /*dissect_zcl_met_schedule_snapshot_response*/ |
6669 | | |
6670 | | /** |
6671 | | *This function manages the Take Snapshot Response payload |
6672 | | * |
6673 | | *@param tvb pointer to buffer containing raw packet. |
6674 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6675 | | *@param offset pointer to offset from caller |
6676 | | */ |
6677 | | static void |
6678 | | dissect_zcl_met_take_snapshot_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6679 | 0 | { |
6680 | | /* Snapshot ID */ |
6681 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_take_snapshot_response_snapshot_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6682 | 0 | *offset += 4; |
6683 | | |
6684 | | /* Snapshot Confirmation */ |
6685 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation, tvb, *offset, 1, ENC_NA); |
6686 | 0 | *offset += 1; |
6687 | 0 | } /*dissect_zcl_met_take_snapshot_response*/ |
6688 | | |
6689 | | /** |
6690 | | *This function manages the Publish Snapshot payload |
6691 | | * |
6692 | | *@param tvb pointer to buffer containing raw packet. |
6693 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6694 | | *@param offset pointer to offset from caller |
6695 | | */ |
6696 | | static void |
6697 | | dissect_zcl_met_publish_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6698 | 0 | { |
6699 | 0 | int rem_len; |
6700 | | |
6701 | | /* Snapshot ID */ |
6702 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_snapshot_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6703 | 0 | *offset += 4; |
6704 | | |
6705 | | /* Snapshot Time */ |
6706 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_snapshot_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
6707 | 0 | *offset += 4; |
6708 | | |
6709 | | /* Total Snapshots Found */ |
6710 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_snapshots_found, tvb, *offset, 1, ENC_NA); |
6711 | 0 | *offset += 1; |
6712 | | |
6713 | | /* Command Index */ |
6714 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_cmd_index, tvb, *offset, 1, ENC_NA); |
6715 | 0 | *offset += 1; |
6716 | | |
6717 | | /* Total Number of Commands */ |
6718 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_total_commands, tvb, *offset, 1, ENC_NA); |
6719 | 0 | *offset += 1; |
6720 | | |
6721 | | /* Snapshot Cause */ |
6722 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_met_publish_snapshot_snapshot_cause, |
6723 | 0 | ett_zbee_zcl_met_snapshot_cause_flags, zbee_zcl_met_snapshot_cause_flags, ENC_LITTLE_ENDIAN); |
6724 | 0 | *offset += 4; |
6725 | | |
6726 | | /* Snapshot Payload Type */ |
6727 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type, tvb, *offset, 1, ENC_NA); |
6728 | 0 | *offset += 1; |
6729 | | |
6730 | | /* Snapshot Sub-Payload */ |
6731 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
6732 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload, tvb, *offset, rem_len, ENC_NA); |
6733 | 0 | *offset += rem_len; |
6734 | 0 | } /*dissect_zcl_met_publish_snapshot*/ |
6735 | | |
6736 | | /** |
6737 | | *This function manages the Get Sampled Data Response payload |
6738 | | * |
6739 | | *@param tvb pointer to buffer containing raw packet. |
6740 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6741 | | *@param offset pointer to offset from caller |
6742 | | */ |
6743 | | static void |
6744 | | dissect_zcl_met_get_sampled_data_rsp(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6745 | 2 | { |
6746 | 2 | int rem_len; |
6747 | | |
6748 | | /* Snapshot ID */ |
6749 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_rsp_sample_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6750 | 2 | *offset += 2; |
6751 | | |
6752 | | /* Sample Start Time */ |
6753 | 2 | 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); |
6754 | 2 | *offset += 4; |
6755 | | |
6756 | | /* Sample Type */ |
6757 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_rsp_sample_type, tvb, *offset, 1, ENC_NA); |
6758 | 2 | *offset += 1; |
6759 | | |
6760 | | /* Sample Request Interval */ |
6761 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6762 | 2 | *offset += 2; |
6763 | | |
6764 | | /* Number of Samples */ |
6765 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6766 | 2 | *offset += 2; |
6767 | | |
6768 | | /* Samples */ |
6769 | 2 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
6770 | 40 | while (rem_len >= 3) { |
6771 | 38 | uint32_t val = tvb_get_uint24(tvb, *offset, ENC_LITTLE_ENDIAN); |
6772 | 38 | proto_tree_add_uint(tree, hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples, tvb, *offset, 3, val); |
6773 | 38 | *offset += 3; |
6774 | 38 | rem_len -= 3; |
6775 | 38 | } |
6776 | 2 | } /*dissect_zcl_met_get_sampled_data_rsp*/ |
6777 | | |
6778 | | /** |
6779 | | *This function manages the Configure Mirror payload |
6780 | | * |
6781 | | *@param tvb pointer to buffer containing raw packet. |
6782 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6783 | | *@param offset pointer to offset from caller |
6784 | | */ |
6785 | | static void |
6786 | | dissect_zcl_met_configure_mirror(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6787 | 1 | { |
6788 | | /* Issuer Event ID */ |
6789 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_mirror_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6790 | 1 | *offset += 4; |
6791 | | |
6792 | | /* Reporting Interval */ |
6793 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_mirror_reporting_interval, tvb, *offset, 3, ENC_LITTLE_ENDIAN); |
6794 | 1 | *offset += 3; |
6795 | | |
6796 | | /* Mirror Notification Reporting */ |
6797 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting, tvb, *offset, 1, ENC_NA); |
6798 | 1 | *offset += 1; |
6799 | | |
6800 | | /* Notification Scheme */ |
6801 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_mirror_notification_scheme, tvb, *offset, 1, ENC_NA); |
6802 | 1 | *offset += 1; |
6803 | 1 | } /*dissect_zcl_met_configure_mirror*/ |
6804 | | |
6805 | | /** |
6806 | | *This function manages the Configure Notification Scheme payload |
6807 | | * |
6808 | | *@param tvb pointer to buffer containing raw packet. |
6809 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6810 | | *@param offset pointer to offset from caller |
6811 | | */ |
6812 | | static void |
6813 | | dissect_zcl_met_configure_notification_scheme(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6814 | 0 | { |
6815 | | /* Issuer Event ID */ |
6816 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6817 | 0 | *offset += 4; |
6818 | | |
6819 | | /* Notification Scheme */ |
6820 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_scheme_notification_scheme, tvb, *offset, 1, ENC_NA); |
6821 | 0 | *offset += 1; |
6822 | | |
6823 | | /* Notification Flag Order */ |
6824 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6825 | 0 | *offset += 4; |
6826 | 0 | } /*dissect_zcl_met_configure_notification_scheme*/ |
6827 | | |
6828 | | /** |
6829 | | *This function manages the Configure Notification Flags payload |
6830 | | * |
6831 | | *@param tvb pointer to buffer containing raw packet. |
6832 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6833 | | *@param offset pointer to offset from caller |
6834 | | */ |
6835 | | static void |
6836 | | dissect_zcl_met_configure_notification_flags(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6837 | 0 | { |
6838 | 0 | proto_tree *bit_field_allocation_tree; |
6839 | 0 | int rem_len; |
6840 | | |
6841 | | /* Issuer Event ID */ |
6842 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_flags_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6843 | 0 | *offset += 4; |
6844 | | |
6845 | | /* Notification Scheme */ |
6846 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_flags_notification_scheme, tvb, *offset, 1, ENC_NA); |
6847 | 0 | *offset += 1; |
6848 | | |
6849 | | /* Notification Attribute ID */ |
6850 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6851 | 0 | *offset += 2; |
6852 | |
|
6853 | 0 | bit_field_allocation_tree = proto_tree_add_subtree(tree, tvb, *offset, -1, ett_zbee_zcl_met_bit_field_allocation, NULL, "Bit Field Allocation"); |
6854 | | |
6855 | | /* Cluster ID */ |
6856 | 0 | 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 | 0 | *offset += 2; |
6858 | | |
6859 | | /* Manufacturer Code */ |
6860 | 0 | 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 | 0 | *offset += 2; |
6862 | | |
6863 | | /* No. of Commands */ |
6864 | 0 | 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 | 0 | *offset += 1; |
6866 | |
|
6867 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
6868 | 0 | while (rem_len >= 1) { |
6869 | | /* Command Identifier */ |
6870 | 0 | 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); |
6871 | 0 | *offset += 1; |
6872 | 0 | rem_len -= 1; |
6873 | 0 | } |
6874 | 0 | } /*dissect_zcl_met_configure_notification_flags*/ |
6875 | | |
6876 | | static void |
6877 | | dissect_zcl_met_notification_flags(tvbuff_t *tvb, proto_tree *tree, unsigned *offset, uint16_t noti_flags_number) |
6878 | 0 | { |
6879 | | /* Notification Flags #N */ |
6880 | 0 | switch (noti_flags_number) { |
6881 | 0 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_FUNC_NOTI_FLAGS: |
6882 | 0 | 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); |
6883 | 0 | break; |
6884 | 0 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_2: |
6885 | 0 | 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); |
6886 | 0 | break; |
6887 | 0 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_3: |
6888 | 0 | 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); |
6889 | 0 | break; |
6890 | 0 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_4: |
6891 | 0 | 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); |
6892 | 0 | break; |
6893 | 0 | case ZBEE_ZCL_ATTR_ID_MET_CLNT_NOTI_FLAGS_5: |
6894 | 0 | 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 | 0 | break; |
6896 | 0 | default: |
6897 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_flags, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6898 | 0 | break; |
6899 | 0 | } |
6900 | 0 | *offset += 4; |
6901 | |
|
6902 | 0 | } |
6903 | | |
6904 | | /** |
6905 | | *This function manages the Get Notified Message payload |
6906 | | * |
6907 | | *@param tvb pointer to buffer containing raw packet. |
6908 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6909 | | *@param offset pointer to offset from caller |
6910 | | */ |
6911 | | static void |
6912 | | dissect_zcl_met_get_notified_msg(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6913 | 0 | { |
6914 | 0 | uint16_t noti_flags_number; |
6915 | | |
6916 | | /* Notification Scheme */ |
6917 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_scheme, tvb, *offset, 1, ENC_NA); |
6918 | 0 | *offset += 1; |
6919 | | |
6920 | | /* Notification Flag attribute ID */ |
6921 | 0 | noti_flags_number = tvb_get_uint16(tvb, *offset, ENC_LITTLE_ENDIAN); |
6922 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
6923 | 0 | *offset += 2; |
6924 | |
|
6925 | 0 | dissect_zcl_met_notification_flags(tvb, tree, offset, noti_flags_number); |
6926 | 0 | } /*dissect_zcl_met_get_notified_msg*/ |
6927 | | |
6928 | | /** |
6929 | | *This function manages the Supply Status Response payload |
6930 | | * |
6931 | | *@param tvb pointer to buffer containing raw packet. |
6932 | | *@param tree pointer to data tree Wireshark uses to display packet. |
6933 | | *@param offset pointer to offset from caller |
6934 | | */ |
6935 | | static void |
6936 | | dissect_zcl_met_supply_status_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
6937 | 0 | { |
6938 | | /* Provider ID */ |
6939 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_supply_status_response_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6940 | 0 | *offset += 4; |
6941 | | |
6942 | | /* Issuer Event ID */ |
6943 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_supply_status_response_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
6944 | 0 | *offset += 4; |
6945 | | |
6946 | | /* Implementation Date/Time */ |
6947 | 0 | 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 | 0 | *offset += 4; |
6949 | | |
6950 | | /* Supply Status After Implementation */ |
6951 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation, tvb, *offset, 1, ENC_NA); |
6952 | 0 | *offset += 1; |
6953 | 0 | } /*dissect_zcl_met_supply_status_response*/ |
6954 | | |
6955 | | /** |
6956 | | *This function registers the ZCL Metering dissector |
6957 | | * |
6958 | | */ |
6959 | | void |
6960 | | proto_register_zbee_zcl_met(void) |
6961 | 15 | { |
6962 | 15 | static hf_register_info hf[] = { |
6963 | | |
6964 | 15 | { &hf_zbee_zcl_met_attr_server_id, |
6965 | 15 | { "Attribute", "zbee_zcl_se.met.attr_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &zbee_zcl_met_attr_server_names_ext, |
6966 | 15 | 0x0, NULL, HFILL } }, |
6967 | | |
6968 | 15 | { &hf_zbee_zcl_met_attr_client_id, |
6969 | 15 | { "Attribute", "zbee_zcl_se.met.attr_client_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_met_attr_client_names), |
6970 | 15 | 0x0, NULL, HFILL } }, |
6971 | | |
6972 | 15 | { &hf_zbee_zcl_met_attr_reporting_status, /* common to all SE clusters */ |
6973 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.met.attr.attr_reporting_status", |
6974 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
6975 | | |
6976 | | /* Functional Notification Flags */ |
6977 | 15 | { &hf_zbee_zcl_met_func_noti_flags, |
6978 | 15 | { "Functional Notification Flags", "zbee_zcl_se.met.attr.func_noti_flag", FT_UINT32, BASE_HEX, NULL, |
6979 | 15 | 0x00, NULL, HFILL } }, |
6980 | | |
6981 | 15 | { &hf_zbee_zcl_met_func_noti_flag_new_ota_firmware, |
6982 | 15 | { "New OTA Firmware", "zbee_zcl_se.met.attr.func_noti_flag.new_ota_firmware", FT_BOOLEAN, 32, NULL, |
6983 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_OTA_FIRMWARE, NULL, HFILL } }, |
6984 | | |
6985 | 15 | { &hf_zbee_zcl_met_func_noti_flag_cbke_update_request, |
6986 | 15 | { "CBKE Update Request", "zbee_zcl_se.met.attr.func_noti_flag.cbke_update_request", FT_BOOLEAN, 32, NULL, |
6987 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_CBKE_UPDATE_REQUESTED, NULL, HFILL } }, |
6988 | | |
6989 | 15 | { &hf_zbee_zcl_met_func_noti_flag_time_sync, |
6990 | 15 | { "Time Sync", "zbee_zcl_se.met.attr.func_noti_flag.time_sync", FT_BOOLEAN, 32, NULL, |
6991 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_TIME_SYNC, NULL, HFILL } }, |
6992 | | |
6993 | 15 | { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_han, |
6994 | 15 | { "Stay Awake Request HAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_han", FT_BOOLEAN, 32, NULL, |
6995 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_HAN, NULL, HFILL } }, |
6996 | | |
6997 | 15 | { &hf_zbee_zcl_met_func_noti_flag_stay_awake_request_wan, |
6998 | 15 | { "Stay Awake Request WAN", "zbee_zcl_se.met.attr.func_noti_flag.stay_awake_request_wan", FT_BOOLEAN, 32, NULL, |
6999 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_STAY_AWAKE_REQUEST_WAN, NULL, HFILL } }, |
7000 | | |
7001 | 15 | { &hf_zbee_zcl_met_func_noti_flag_push_historical_metering_data_attribute_set, |
7002 | 15 | { "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, |
7003 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET, NULL, HFILL } }, |
7004 | | |
7005 | 15 | { &hf_zbee_zcl_met_func_noti_flag_push_historical_prepayment_data_attribute_set, |
7006 | 15 | { "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, |
7007 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET, NULL, HFILL } }, |
7008 | | |
7009 | 15 | { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_basic_cluster, |
7010 | 15 | { "Push All Static Data - Basic Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_basic_cluster", FT_BOOLEAN, 32, NULL, |
7011 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER, NULL, HFILL } }, |
7012 | | |
7013 | 15 | { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_metering_cluster, |
7014 | 15 | { "Push All Static Data - Metering Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_metering_cluster", FT_BOOLEAN, 32, NULL, |
7015 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_METERING_CLUSTER, NULL, HFILL } }, |
7016 | | |
7017 | 15 | { &hf_zbee_zcl_met_func_noti_flag_push_all_static_data_prepayment_cluster, |
7018 | 15 | { "Push All Static Data - Prepayment Cluster", "zbee_zcl_se.met.attr.func_noti_flag.push_all_static_data_prepayment_cluster", FT_BOOLEAN, 32, NULL, |
7019 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER, NULL, HFILL } }, |
7020 | | |
7021 | 15 | { &hf_zbee_zcl_met_func_noti_flag_network_key_active, |
7022 | 15 | { "Network Key Active", "zbee_zcl_se.met.attr.func_noti_flag.network_key_active", FT_BOOLEAN, 32, NULL, |
7023 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_NETWORK_KEY_ACTIVE, NULL, HFILL } }, |
7024 | | |
7025 | 15 | { &hf_zbee_zcl_met_func_noti_flag_display_message, |
7026 | 15 | { "Display Message", "zbee_zcl_se.met.attr.func_noti_flag.display_message", FT_BOOLEAN, 32, NULL, |
7027 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_DISPLAY_MESSAGE, NULL, HFILL } }, |
7028 | | |
7029 | 15 | { &hf_zbee_zcl_met_func_noti_flag_cancel_all_messages, |
7030 | 15 | { "Cancel All Messages", "zbee_zcl_se.met.attr.func_noti_flag.cancel_all_messages", FT_BOOLEAN, 32, NULL, |
7031 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_CANCEL_ALL_MESSAGES, NULL, HFILL } }, |
7032 | | |
7033 | 15 | { &hf_zbee_zcl_met_func_noti_flag_change_supply, |
7034 | 15 | { "Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.change_supply", FT_BOOLEAN, 32, NULL, |
7035 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_CHANGE_SUPPLY, NULL, HFILL } }, |
7036 | | |
7037 | 15 | { &hf_zbee_zcl_met_func_noti_flag_local_change_supply, |
7038 | 15 | { "Local Change Supply", "zbee_zcl_se.met.attr.func_noti_flag.local_change_supply", FT_BOOLEAN, 32, NULL, |
7039 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_LOCAL_CHANGE_SUPPLY, NULL, HFILL } }, |
7040 | | |
7041 | 15 | { &hf_zbee_zcl_met_func_noti_flag_set_uncontrolled_flow_threshold, |
7042 | 15 | { "Set Uncontrolled Flow Threshold", "zbee_zcl_se.met.attr.func_noti_flag.set_uncontrolled_flow_threshold", FT_BOOLEAN, 32, NULL, |
7043 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_SET_UNCONTROLLED_FLOW_THRESHOLD, NULL, HFILL } }, |
7044 | | |
7045 | 15 | { &hf_zbee_zcl_met_func_noti_flag_tunnel_message_pending, |
7046 | 15 | { "Tunnel Message Pending", "zbee_zcl_se.met.attr.func_noti_flag.tunnel_message_pending", FT_BOOLEAN, 32, NULL, |
7047 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_TUNNEL_MESSAGE_PENDING, NULL, HFILL } }, |
7048 | | |
7049 | 15 | { &hf_zbee_zcl_met_func_noti_flag_get_snapshot, |
7050 | 15 | { "Get Snapshot", "zbee_zcl_se.met.attr.func_noti_flag.get_snapshot", FT_BOOLEAN, 32, NULL, |
7051 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SNAPSHOT, NULL, HFILL } }, |
7052 | | |
7053 | 15 | { &hf_zbee_zcl_met_func_noti_flag_get_sampled_data, |
7054 | 15 | { "Get Sampled Data", "zbee_zcl_se.met.attr.func_noti_flag.get_sampled_data", FT_BOOLEAN, 32, NULL, |
7055 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_GET_SAMPLED_DATA, NULL, HFILL } }, |
7056 | | |
7057 | 15 | { &hf_zbee_zcl_met_func_noti_flag_new_sub_ghz_channel_masks_available, |
7058 | 15 | { "New Sub-GHz Channel Masks Available", "zbee_zcl_se.met.attr.func_noti_flag.new_sub_ghz_channel_masks_available", FT_BOOLEAN, 32, NULL, |
7059 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE, NULL, HFILL } }, |
7060 | | |
7061 | 15 | { &hf_zbee_zcl_met_func_noti_flag_energy_scan_pending, |
7062 | 15 | { "Energy Scan Pending", "zbee_zcl_se.met.attr.func_noti_flag.energy_scan_pending", FT_BOOLEAN, 32, NULL, |
7063 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_ENERGY_SCAN_PENDING, NULL, HFILL } }, |
7064 | | |
7065 | 15 | { &hf_zbee_zcl_met_func_noti_flag_channel_change_pending, |
7066 | 15 | { "Channel Change Pending", "zbee_zcl_se.met.attr.func_noti_flag.channel_change_pending", FT_BOOLEAN, 32, NULL, |
7067 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_CHANNEL_CHANGE_PENDING, NULL, HFILL } }, |
7068 | | |
7069 | 15 | { &hf_zbee_zcl_met_func_noti_flag_reserved, |
7070 | 15 | { "Reserved", "zbee_zcl_se.met.attr.func_noti_flag.reserved", FT_UINT32, BASE_HEX, NULL, |
7071 | 15 | ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_1 | ZBEE_ZCL_FUNC_NOTI_FLAG_RESERVED_2, NULL, HFILL } }, |
7072 | | |
7073 | | /* Notification Flags 2 */ |
7074 | 15 | { &hf_zbee_zcl_met_noti_flags_2, |
7075 | 15 | { "Notification Flags 2", "zbee_zcl_se.met.attr.noti_flag_2", FT_UINT32, BASE_HEX, NULL, |
7076 | 15 | 0x00, NULL, HFILL } }, |
7077 | | |
7078 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_price, |
7079 | 15 | { "Publish Price", "zbee_zcl_se.met.attr.noti_flag_2.publish_price", FT_BOOLEAN, 32, NULL, |
7080 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE, NULL, HFILL } }, |
7081 | | |
7082 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_block_period, |
7083 | 15 | { "Publish Block Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_period", FT_BOOLEAN, 32, NULL, |
7084 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_PERIOD, NULL, HFILL } }, |
7085 | | |
7086 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_tariff_info, |
7087 | 15 | { "Publish Tariff Information", "zbee_zcl_se.met.attr.noti_flag_2.publish_tariff_info", FT_BOOLEAN, 32, NULL, |
7088 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TARIFF_INFORMATION, NULL, HFILL } }, |
7089 | | |
7090 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_conversion_factor, |
7091 | 15 | { "Publish Conversion Factor", "zbee_zcl_se.met.attr.noti_flag_2.publish_conversion_factor", FT_BOOLEAN, 32, NULL, |
7092 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONVERSION_FACTOR, NULL, HFILL } }, |
7093 | | |
7094 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_calorific_value, |
7095 | 15 | { "Publish Calorific Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_calorific_value", FT_BOOLEAN, 32, NULL, |
7096 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CALORIFIC_VALUE, NULL, HFILL } }, |
7097 | | |
7098 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_co2_value, |
7099 | 15 | { "Publish CO2 Value", "zbee_zcl_se.met.attr.noti_flag_2.publish_co2_value", FT_BOOLEAN, 32, NULL, |
7100 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CO2_VALUE, NULL, HFILL } }, |
7101 | | |
7102 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_billing_period, |
7103 | 15 | { "Publish Billing Period", "zbee_zcl_se.met.attr.noti_flag_2.publish_billing_period", FT_BOOLEAN, 32, NULL, |
7104 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BILLING_PERIOD, NULL, HFILL } }, |
7105 | | |
7106 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_consolidated_bill, |
7107 | 15 | { "Publish Consolidated Bill", "zbee_zcl_se.met.attr.noti_flag_2.publish_consolidated_bill", FT_BOOLEAN, 32, NULL, |
7108 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CONSOLIDATED_BILL, NULL, HFILL } }, |
7109 | | |
7110 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_price_matrix, |
7111 | 15 | { "Publish Price Matrix", "zbee_zcl_se.met.attr.noti_flag_2.publish_price_matrix", FT_BOOLEAN, 32, NULL, |
7112 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_PRICE_MATRIX, NULL, HFILL } }, |
7113 | | |
7114 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_block_thresholds, |
7115 | 15 | { "Publish Block Thresholds", "zbee_zcl_se.met.attr.noti_flag_2.publish_block_thresholds", FT_BOOLEAN, 32, NULL, |
7116 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_BLOCK_THRESHOLDS, NULL, HFILL } }, |
7117 | | |
7118 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_currency_conversion, |
7119 | 15 | { "Publish Currency Conversion", "zbee_zcl_se.met.attr.noti_flag_2.publish_currency_conversion", FT_BOOLEAN, 32, NULL, |
7120 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CURRENCY_CONVERSION, NULL, HFILL } }, |
7121 | | |
7122 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_credit_payment_info, |
7123 | 15 | { "Publish Credit Payment Info", "zbee_zcl_se.met.attr.noti_flag_2.publish_credit_payment_info", FT_BOOLEAN, 32, NULL, |
7124 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CREDIT_PAYMENT_INFO, NULL, HFILL } }, |
7125 | | |
7126 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_cpp_event, |
7127 | 15 | { "Publish CPP Event", "zbee_zcl_se.met.attr.noti_flag_2.publish_cpp_event", FT_BOOLEAN, 32, NULL, |
7128 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_CPP_EVENT, NULL, HFILL } }, |
7129 | | |
7130 | 15 | { &hf_zbee_zcl_met_noti_flag_2_publish_tier_labels, |
7131 | 15 | { "Publish Tier Labels", "zbee_zcl_se.met.attr.noti_flag_2.publish_tier_labels", FT_BOOLEAN, 32, NULL, |
7132 | 15 | ZBEE_ZCL_NOTI_FLAG_2_PUBLISH_TIER_LABELS, NULL, HFILL } }, |
7133 | | |
7134 | 15 | { &hf_zbee_zcl_met_noti_flag_2_cancel_tariff, |
7135 | 15 | { "Cancel Tariff", "zbee_zcl_se.met.attr.noti_flag_2.cancel_tariff", FT_BOOLEAN, 32, NULL, |
7136 | 15 | ZBEE_ZCL_NOTI_FLAG_2_CANCEL_TARIFF, NULL, HFILL } }, |
7137 | | |
7138 | 15 | { &hf_zbee_zcl_met_noti_flag_2_reserved, |
7139 | 15 | { "Reserved", "zbee_zcl_se.met.attr.noti_flag_2.reserved", FT_UINT32, BASE_HEX, NULL, |
7140 | 15 | ZBEE_ZCL_NOTI_FLAG_2_RESERVED | ZBEE_ZCL_NOTI_FLAG_2_RESERVED_FUTURE, NULL, HFILL } }, |
7141 | | |
7142 | | /* Notification Flags 3 */ |
7143 | 15 | { &hf_zbee_zcl_met_noti_flags_3, |
7144 | 15 | { "Notification Flags 3", "zbee_zcl_se.met.attr.noti_flag_3", FT_UINT32, BASE_HEX, NULL, |
7145 | 15 | 0x00, NULL, HFILL } }, |
7146 | | |
7147 | 15 | { &hf_zbee_zcl_met_noti_flag_3_publish_calendar, |
7148 | 15 | { "Publish Calendar", "zbee_zcl_se.met.attr.noti_flag_3.publish_calendar", FT_BOOLEAN, 32, NULL, |
7149 | 15 | ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_CALENDAR, NULL, HFILL } }, |
7150 | | |
7151 | 15 | { &hf_zbee_zcl_met_noti_flag_3_publish_special_days, |
7152 | 15 | { "Publish Special Days", "zbee_zcl_se.met.attr.noti_flag_3.publish_special_days", FT_BOOLEAN, 32, NULL, |
7153 | 15 | ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SPECIAL_DAYS, NULL, HFILL } }, |
7154 | | |
7155 | 15 | { &hf_zbee_zcl_met_noti_flag_3_publish_seasons, |
7156 | 15 | { "Publish Seasons", "zbee_zcl_se.met.attr.noti_flag_3.publish_seasons", FT_BOOLEAN, 32, NULL, |
7157 | 15 | ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_SEASONS, NULL, HFILL } }, |
7158 | | |
7159 | 15 | { &hf_zbee_zcl_met_noti_flag_3_publish_week, |
7160 | 15 | { "Publish Week", "zbee_zcl_se.met.attr.noti_flag_3.publish_week", FT_BOOLEAN, 32, NULL, |
7161 | 15 | ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_WEEK, NULL, HFILL } }, |
7162 | | |
7163 | 15 | { &hf_zbee_zcl_met_noti_flag_3_publish_day, |
7164 | 15 | { "Publish Day", "zbee_zcl_se.met.attr.noti_flag_3.publish_day", FT_BOOLEAN, 32, NULL, |
7165 | 15 | ZBEE_ZCL_NOTI_FLAG_3_PUBLISH_DAY, NULL, HFILL } }, |
7166 | | |
7167 | 15 | { &hf_zbee_zcl_met_noti_flag_3_cancel_calendar, |
7168 | 15 | { "Cancel Calendar", "zbee_zcl_se.met.attr.noti_flag_3.cancel_calendar", FT_BOOLEAN, 32, NULL, |
7169 | 15 | ZBEE_ZCL_NOTI_FLAG_3_CANCEL_DAY, NULL, HFILL } }, |
7170 | | |
7171 | 15 | { &hf_zbee_zcl_met_noti_flag_3_reserved, |
7172 | 15 | { "Reserved", "zbee_zcl_se.met.attr.noti_flag_3.reserved", FT_UINT32, BASE_HEX, NULL, |
7173 | 15 | ZBEE_ZCL_NOTI_FLAG_3_RESERVED , NULL, HFILL } }, |
7174 | | |
7175 | | /* Notification Flags 4 */ |
7176 | 15 | { &hf_zbee_zcl_met_noti_flags_4, |
7177 | 15 | { "Notification Flags 4", "zbee_zcl_se.met.attr.noti_flag_4", FT_UINT32, BASE_HEX, NULL, |
7178 | 15 | 0x00, NULL, HFILL } }, |
7179 | | |
7180 | 15 | { &hf_zbee_zcl_met_noti_flag_4_select_available_emergency_credit, |
7181 | 15 | { "Select Available Emergency Credit", "zbee_zcl_se.met.attr.noti_flag_4.select_available_emergency_credit", FT_BOOLEAN, 32, NULL, |
7182 | 15 | ZBEE_ZCL_NOTI_FLAG_4_SELECT_AVAILABLE_EMERGENCY_CREDIT, NULL, HFILL } }, |
7183 | | |
7184 | 15 | { &hf_zbee_zcl_met_noti_flag_4_change_debt, |
7185 | 15 | { "Change Debt", "zbee_zcl_se.met.attr.noti_flag_4.change_debt", FT_BOOLEAN, 32, NULL, |
7186 | 15 | ZBEE_ZCL_NOTI_FLAG_4_CHANGE_DEBT, NULL, HFILL } }, |
7187 | | |
7188 | 15 | { &hf_zbee_zcl_met_noti_flag_4_emergency_credit_setup, |
7189 | 15 | { "Emergency Credit Setup", "zbee_zcl_se.met.attr.noti_flag_4.emergency_credit_setup", FT_BOOLEAN, 32, NULL, |
7190 | 15 | ZBEE_ZCL_NOTI_FLAG_4_EMERGENCY_CREDIT_SETUP, NULL, HFILL } }, |
7191 | | |
7192 | 15 | { &hf_zbee_zcl_met_noti_flag_4_consumer_top_up, |
7193 | 15 | { "Consumer Top Up", "zbee_zcl_se.met.attr.noti_flag_4.consumer_top_up", FT_BOOLEAN, 32, NULL, |
7194 | 15 | ZBEE_ZCL_NOTI_FLAG_4_CONSUMER_TOP_UP, NULL, HFILL } }, |
7195 | | |
7196 | 15 | { &hf_zbee_zcl_met_noti_flag_4_credit_adjustment, |
7197 | 15 | { "Credit Adjustment", "zbee_zcl_se.met.attr.noti_flag_4.credit_adjustment", FT_BOOLEAN, 32, NULL, |
7198 | 15 | ZBEE_ZCL_NOTI_FLAG_4_CREDIT_ADJUSTMENT, NULL, HFILL } }, |
7199 | | |
7200 | 15 | { &hf_zbee_zcl_met_noti_flag_4_change_payment_mode, |
7201 | 15 | { "Change Payment Mode", "zbee_zcl_se.met.attr.noti_flag_4.change_payment_mode", FT_BOOLEAN, 32, NULL, |
7202 | 15 | ZBEE_ZCL_NOTI_FLAG_4_CHANGE_PAYMENT_MODE, NULL, HFILL } }, |
7203 | | |
7204 | 15 | { &hf_zbee_zcl_met_noti_flag_4_get_prepay_snapshot, |
7205 | 15 | { "Get Prepay Snapshot", "zbee_zcl_se.met.attr.noti_flag_4.get_prepay_snapshot", FT_BOOLEAN, 32, NULL, |
7206 | 15 | ZBEE_ZCL_NOTI_FLAG_4_GET_PREPAY_SNAPSHOT, NULL, HFILL } }, |
7207 | | |
7208 | 15 | { &hf_zbee_zcl_met_noti_flag_4_get_top_up_log, |
7209 | 15 | { "Get Top Up Log", "zbee_zcl_se.met.attr.noti_flag_4.get_top_up_log", FT_BOOLEAN, 32, NULL, |
7210 | 15 | ZBEE_ZCL_NOTI_FLAG_4_GET_TOP_UP_LOG, NULL, HFILL } }, |
7211 | | |
7212 | 15 | { &hf_zbee_zcl_met_noti_flag_4_set_low_credit_warning_level, |
7213 | 15 | { "Set Low Credit Warning Level", "zbee_zcl_se.met.attr.noti_flag_4.set_low_credit_warning_level", FT_BOOLEAN, 32, NULL, |
7214 | 15 | ZBEE_ZCL_NOTI_FLAG_4_SET_LOW_CREDIT_WARNING_LEVEL, NULL, HFILL } }, |
7215 | | |
7216 | 15 | { &hf_zbee_zcl_met_noti_flag_4_get_debt_repayment_log, |
7217 | 15 | { "Get Debt Repayment Log", "zbee_zcl_se.met.attr.noti_flag_4.get_debt_repayment_log", FT_BOOLEAN, 32, NULL, |
7218 | 15 | ZBEE_ZCL_NOTI_FLAG_4_GET_DEBT_REPAYMENT_LOG, NULL, HFILL } }, |
7219 | | |
7220 | 15 | { &hf_zbee_zcl_met_noti_flag_4_set_maximum_credit_limit, |
7221 | 15 | { "Set Maximum Credit Limit", "zbee_zcl_se.met.attr.noti_flag_4.set_maximum_credit_limit", FT_BOOLEAN, 32, NULL, |
7222 | 15 | ZBEE_ZCL_NOTI_FLAG_4_SET_MAXIMUM_CREDIT_LIMIT, NULL, HFILL } }, |
7223 | | |
7224 | 15 | { &hf_zbee_zcl_met_noti_flag_4_set_overall_debt_cap, |
7225 | 15 | { "Set Overall Debt Cap", "zbee_zcl_se.met.attr.noti_flag_4.set_overall_debt_cap", FT_BOOLEAN, 32, NULL, |
7226 | 15 | ZBEE_ZCL_NOTI_FLAG_4_SET_OVERALL_DEBT_CAP, NULL, HFILL } }, |
7227 | | |
7228 | 15 | { &hf_zbee_zcl_met_noti_flag_4_reserved, |
7229 | 15 | { "Reserved", "zbee_zcl_se.met.attr.noti_flag_4.reserved", FT_UINT32, BASE_HEX, NULL, |
7230 | 15 | ZBEE_ZCL_NOTI_FLAG_4_RESERVED, NULL, HFILL } }, |
7231 | | |
7232 | | /* Notification Flags 5 */ |
7233 | 15 | { &hf_zbee_zcl_met_noti_flags_5, |
7234 | 15 | { "Notification Flags 5", "zbee_zcl_se.met.attr.noti_flag_5", FT_UINT32, BASE_HEX, NULL, |
7235 | 15 | 0x00, NULL, HFILL } }, |
7236 | | |
7237 | 15 | { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_tenancy, |
7238 | 15 | { "Publish Change of Tenancy", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_tenancy", FT_BOOLEAN, 32, NULL, |
7239 | 15 | ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_TENANCY, NULL, HFILL } }, |
7240 | | |
7241 | 15 | { &hf_zbee_zcl_met_noti_flag_5_publish_change_of_supplier, |
7242 | 15 | { "Publish Change of Supplier", "zbee_zcl_se.met.attr.noti_flag_5.publish_change_of_supplier", FT_BOOLEAN, 32, NULL, |
7243 | 15 | ZBEE_ZCL_NOTI_FLAG_5_PUBLISH_CHANGE_OF_SUPPLIER, NULL, HFILL } }, |
7244 | | |
7245 | 15 | { &hf_zbee_zcl_met_noti_flag_5_request_new_password_1_response, |
7246 | 15 | { "Request New Password 1 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_1_response", FT_BOOLEAN, 32, NULL, |
7247 | 15 | ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_1_RESPONSE, NULL, HFILL } }, |
7248 | | |
7249 | 15 | { &hf_zbee_zcl_met_noti_flag_5_request_new_password_2_response, |
7250 | 15 | { "Request New Password 2 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_2_response", FT_BOOLEAN, 32, NULL, |
7251 | 15 | ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_2_RESPONSE, NULL, HFILL } }, |
7252 | | |
7253 | 15 | { &hf_zbee_zcl_met_noti_flag_5_request_new_password_3_response, |
7254 | 15 | { "Request New Password 3 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_3_response", FT_BOOLEAN, 32, NULL, |
7255 | 15 | ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_3_RESPONSE, NULL, HFILL } }, |
7256 | | |
7257 | 15 | { &hf_zbee_zcl_met_noti_flag_5_request_new_password_4_response, |
7258 | 15 | { "Request New Password 4 Response", "zbee_zcl_se.met.attr.noti_flag_5.request_new_password_4_response", FT_BOOLEAN, 32, NULL, |
7259 | 15 | ZBEE_ZCL_NOTI_FLAG_5_REQUEST_NEW_PASSWORD_4_RESPONSE, NULL, HFILL } }, |
7260 | | |
7261 | 15 | { &hf_zbee_zcl_met_noti_flag_5_update_site_id, |
7262 | 15 | { "Update Site ID", "zbee_zcl_se.met.attr.noti_flag_5.update_site_id", FT_BOOLEAN, 32, NULL, |
7263 | 15 | ZBEE_ZCL_NOTI_FLAG_5_UPDATE_SITE_ID, NULL, HFILL } }, |
7264 | | |
7265 | 15 | { &hf_zbee_zcl_met_noti_flag_5_reset_battery_counter, |
7266 | 15 | { "Reset Battery Counter", "zbee_zcl_se.met.attr.noti_flag_5.reset_battery_counter", FT_BOOLEAN, 32, NULL, |
7267 | 15 | ZBEE_ZCL_NOTI_FLAG_5_RESET_BATTERY_COUNTER, NULL, HFILL } }, |
7268 | | |
7269 | 15 | { &hf_zbee_zcl_met_noti_flag_5_update_cin, |
7270 | 15 | { "Update CIN", "zbee_zcl_se.met.attr.noti_flag_5.update_cin", FT_BOOLEAN, 32, NULL, |
7271 | 15 | ZBEE_ZCL_NOTI_FLAG_5_UPDATE_CIN, NULL, HFILL } }, |
7272 | | |
7273 | 15 | { &hf_zbee_zcl_met_noti_flag_5_reserved, |
7274 | 15 | { "Reserved", "zbee_zcl_se.met.attr.noti_flag_5.reserved", FT_UINT32, BASE_HEX, NULL, |
7275 | 15 | ZBEE_ZCL_NOTI_FLAG_5_RESERVED, NULL, HFILL } }, |
7276 | | |
7277 | 15 | { &hf_zbee_zcl_met_srv_tx_cmd_id, |
7278 | 15 | { "Command", "zbee_zcl_se.met.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_met_srv_tx_cmd_names), |
7279 | 15 | 0x00, NULL, HFILL } }, |
7280 | | |
7281 | 15 | { &hf_zbee_zcl_met_srv_rx_cmd_id, |
7282 | 15 | { "Command", "zbee_zcl_se.met.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_met_srv_rx_cmd_names), |
7283 | 15 | 0x00, NULL, HFILL } }, |
7284 | | |
7285 | 15 | { &hf_zbee_zcl_met_get_profile_interval_channel, |
7286 | 15 | { "Interval Channel", "zbee_zcl_se.met.get_profile.interval_channel", FT_UINT8, BASE_DEC, NULL, |
7287 | 15 | 0x00, NULL, HFILL } }, |
7288 | | |
7289 | 15 | { &hf_zbee_zcl_met_get_profile_end_time, |
7290 | 15 | { "End Time", "zbee_zcl_se.met.get_profile.end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7291 | 15 | 0x00, NULL, HFILL } }, |
7292 | | |
7293 | 15 | { &hf_zbee_zcl_met_get_profile_number_of_periods, |
7294 | 15 | { "Number of Periods", "zbee_zcl_se.met.get_profile.number_of_periods", FT_UINT8, BASE_DEC, NULL, |
7295 | 15 | 0x00, NULL, HFILL } }, |
7296 | | |
7297 | 15 | { &hf_zbee_zcl_met_request_mirror_rsp_endpoint_id, |
7298 | 15 | { "EndPoint ID", "zbee_zcl_se.met.request_mirror_rsp.endpoint_id", FT_UINT16, BASE_DEC, NULL, |
7299 | 15 | 0x00, NULL, HFILL } }, |
7300 | | |
7301 | 15 | { &hf_zbee_zcl_met_mirror_removed_removed_endpoint_id, |
7302 | 15 | { "Removed EndPoint ID", "zbee_zcl_se.met.mirror_removed.removed_endpoint_id", FT_UINT16, BASE_DEC, NULL, |
7303 | 15 | 0x00, NULL, HFILL } }, |
7304 | | |
7305 | 15 | { &hf_zbee_zcl_met_request_fast_poll_mode_fast_poll_update_period, |
7306 | 15 | { "Fast Poll Update Period", "zbee_zcl_se.met.request_fast_poll_mode.fast_poll_update_period", FT_UINT8, BASE_DEC, NULL, |
7307 | 15 | 0x00, NULL, HFILL } }, |
7308 | | |
7309 | 15 | { &hf_zbee_zcl_met_request_fast_poll_mode_duration, |
7310 | 15 | { "Duration", "zbee_zcl_se.met.request_fast_poll_mode.duration", FT_UINT8, BASE_DEC, NULL, |
7311 | 15 | 0x00, NULL, HFILL } }, |
7312 | | |
7313 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_issuer_event_id, |
7314 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.schedule_snapshot.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7315 | 15 | 0x00, NULL, HFILL } }, |
7316 | | |
7317 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_command_index, |
7318 | 15 | { "Command Index", "zbee_zcl_se.met.schedule_snapshot.command_index", FT_UINT8, BASE_DEC, NULL, |
7319 | 15 | 0x00, NULL, HFILL } }, |
7320 | | |
7321 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_total_number_of_commands, |
7322 | 15 | { "Total Number of Commands", "zbee_zcl_se.met.schedule_snapshot.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
7323 | 15 | 0x00, NULL, HFILL } }, |
7324 | | |
7325 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule_id, |
7326 | 15 | { "Snapshot Schedule ID", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule_id", FT_UINT8, BASE_DEC, NULL, |
7327 | 15 | 0x00, NULL, HFILL } }, |
7328 | | |
7329 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_start_time, |
7330 | 15 | { "Snapshot Start Time", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7331 | 15 | 0x00, NULL, HFILL } }, |
7332 | | |
7333 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_schedule, |
7334 | 15 | { "Snapshot Schedule", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_schedule", FT_UINT24, BASE_HEX, NULL, |
7335 | 15 | 0x00, NULL, HFILL } }, |
7336 | | |
7337 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_shapshot_payload_type, |
7338 | 15 | { "Snapshot Payload Type", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_payload_type", |
7339 | 15 | FT_UINT8, BASE_DEC, VALS(zbee_zcl_met_snapshot_payload_type), |
7340 | 15 | 0x00, NULL, HFILL } }, |
7341 | | |
7342 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_snapshot_schedule_payload_snapshot_cause, |
7343 | 15 | { "Snapshot Cause", "zbee_zcl_se.met.schedule_snapshot.snapshot_schedule_payload.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
7344 | 15 | 0x00, NULL, HFILL } }, |
7345 | | |
7346 | 15 | { &hf_zbee_zcl_met_snapshot_schedule_frequency, |
7347 | 15 | { "Snapshot Schedule Frequency", "zbee_zcl_se.met.snapshot_schedule.frequency", |
7348 | 15 | FT_UINT24, BASE_DEC, NULL, |
7349 | 15 | 0x0FFFFF, NULL, HFILL } }, |
7350 | | |
7351 | 15 | { &hf_zbee_zcl_met_snapshot_schedule_frequency_type, |
7352 | 15 | { "Snapshot Schedule Frequency Type", "zbee_zcl_se.met.snapshot_schedule.frequency_type", |
7353 | 15 | FT_UINT24, BASE_HEX, VALS(zbee_zcl_met_snapshot_schedule_frequency_type), |
7354 | 15 | 0x300000, NULL, HFILL } }, |
7355 | | |
7356 | 15 | { &hf_zbee_zcl_met_snapshot_schedule_frequency_wild_card, |
7357 | 15 | { "Snapshot Schedule Frequency Wild Card", "zbee_zcl_se.met.snapshot_schedule.frequency_wild_card", |
7358 | 15 | FT_UINT24, BASE_HEX,VALS(zbee_zcl_met_snapshot_schedule_frequency_wild_card), |
7359 | 15 | 0xC00000, NULL, HFILL } }, |
7360 | | |
7361 | 15 | { &hf_zbee_zcl_met_take_snapshot_snapshot_cause, |
7362 | 15 | { "Snapshot Cause", "zbee_zcl_se.met.take_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
7363 | 15 | 0x00, NULL, HFILL } }, |
7364 | | |
7365 | 15 | { &hf_zbee_zcl_met_get_snapshot_start_time, |
7366 | 15 | { "Start Time", "zbee_zcl_se.met.get_snapshot.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7367 | 15 | 0x00, NULL, HFILL } }, |
7368 | | |
7369 | 15 | { &hf_zbee_zcl_met_get_snapshot_end_time, |
7370 | 15 | { "End Time", "zbee_zcl_se.met.get_snapshot.end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7371 | 15 | 0x00, NULL, HFILL } }, |
7372 | | |
7373 | 15 | { &hf_zbee_zcl_met_get_snapshot_snapshot_offset, |
7374 | 15 | { "Snapshot Offset", "zbee_zcl_se.met.get_snapshot.snapshot_offset", FT_UINT8, BASE_DEC, NULL, |
7375 | 15 | 0x00, NULL, HFILL } }, |
7376 | | |
7377 | 15 | { &hf_zbee_zcl_met_get_snapshot_snapshot_cause, |
7378 | 15 | { "Snapshot Cause", "zbee_zcl_se.met.get_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
7379 | 15 | 0x00, NULL, HFILL } }, |
7380 | | |
7381 | 15 | { &hf_zbee_zcl_met_start_sampling_issuer_event_id, |
7382 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.start_sampling.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7383 | 15 | 0x00, NULL, HFILL } }, |
7384 | | |
7385 | 15 | { &hf_zbee_zcl_met_start_sampling_start_sampling_time, |
7386 | 15 | { "Start Sampling Time", "zbee_zcl_se.met.start_sampling.start_sampling_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7387 | 15 | 0x00, NULL, HFILL } }, |
7388 | | |
7389 | 15 | { &hf_zbee_zcl_met_start_sampling_sample_type, |
7390 | 15 | { "Sample Type", "zbee_zcl_se.met.start_sampling.sample_type", FT_UINT8, BASE_DEC, NULL, |
7391 | 15 | 0x00, NULL, HFILL } }, |
7392 | | |
7393 | 15 | { &hf_zbee_zcl_met_start_sampling_sample_request_interval, |
7394 | 15 | { "Sample Request Interval", "zbee_zcl_se.met.start_sampling.sample_request_interval", FT_UINT16, BASE_DEC, NULL, |
7395 | 15 | 0x00, NULL, HFILL } }, |
7396 | | |
7397 | 15 | { &hf_zbee_zcl_met_start_sampling_max_number_of_samples, |
7398 | 15 | { "Max Number of Samples", "zbee_zcl_se.met.start_sampling.max_number_of_samples", FT_UINT16, BASE_DEC, NULL, |
7399 | 15 | 0x00, NULL, HFILL } }, |
7400 | | |
7401 | 15 | { &hf_zbee_zcl_met_get_sampled_data_sample_id, |
7402 | 15 | { "Sample ID", "zbee_zcl_se.met.get_sampled_data.sample_id", FT_UINT16, BASE_DEC, NULL, |
7403 | 15 | 0x00, NULL, HFILL } }, |
7404 | | |
7405 | 15 | { &hf_zbee_zcl_met_get_sampled_data_sample_start_time, |
7406 | 15 | { "Sample Start Time", "zbee_zcl_se.met.get_sampled_data.sample_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7407 | 15 | 0x00, NULL, HFILL } }, |
7408 | | |
7409 | 15 | { &hf_zbee_zcl_met_get_sampled_data_sample_type, |
7410 | 15 | { "Sample Type", "zbee_zcl_se.met.get_sampled_data.sample_type", FT_UINT8, BASE_DEC, NULL, |
7411 | 15 | 0x00, NULL, HFILL } }, |
7412 | | |
7413 | 15 | { &hf_zbee_zcl_met_get_sampled_data_number_of_samples, |
7414 | 15 | { "Number of Samples", "zbee_zcl_se.met.get_sampled_data.number_of_samples", FT_UINT16, BASE_DEC, NULL, |
7415 | 15 | 0x00, NULL, HFILL } }, |
7416 | | |
7417 | 15 | { &hf_zbee_zcl_met_start_sampling_response_sample_id, |
7418 | 15 | { "Sample ID", "zbee_zcl_se.met.start_sampling_response.sample_id", FT_UINT16, BASE_DEC, NULL, |
7419 | 15 | 0x00, NULL, HFILL } }, |
7420 | | |
7421 | 15 | { &hf_zbee_zcl_met_mirror_report_attribute_response_notification_scheme, |
7422 | 15 | { "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), |
7423 | 15 | 0x00, NULL, HFILL } }, |
7424 | | |
7425 | 15 | { &hf_zbee_zcl_met_mirror_report_attribute_response_notification_flags_n, |
7426 | 15 | { "Notification Flag", "zbee_zcl_se.met.mirror_report_attribute_response.notification_flags_n", FT_UINT32, BASE_HEX, NULL, |
7427 | 15 | 0x00, NULL, HFILL } }, |
7428 | | |
7429 | 15 | { &hf_zbee_zcl_met_reset_load_limit_counter_provider_id, |
7430 | 15 | { "Provider ID", "zbee_zcl_se.met.reset_load_limit_counter.provider_id", FT_UINT32, BASE_DEC, NULL, |
7431 | 15 | 0x00, NULL, HFILL } }, |
7432 | | |
7433 | 15 | { &hf_zbee_zcl_met_reset_load_limit_counter_issuer_event_id, |
7434 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.reset_load_limit_counter.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7435 | 15 | 0x00, NULL, HFILL } }, |
7436 | | |
7437 | 15 | { &hf_zbee_zcl_met_change_supply_provider_id, |
7438 | 15 | { "Provider ID", "zbee_zcl_se.met.change_supply.provider_id", FT_UINT32, BASE_DEC, NULL, |
7439 | 15 | 0x00, NULL, HFILL } }, |
7440 | | |
7441 | 15 | { &hf_zbee_zcl_met_change_supply_issuer_event_id, |
7442 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.change_supply.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7443 | 15 | 0x00, NULL, HFILL } }, |
7444 | | |
7445 | 15 | { &hf_zbee_zcl_met_change_supply_request_date_time, |
7446 | 15 | { "Request Date/Time", "zbee_zcl_se.met.change_supply.request_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7447 | 15 | 0x00, NULL, HFILL } }, |
7448 | | |
7449 | 15 | { &hf_zbee_zcl_met_change_supply_implementation_date_time, |
7450 | 15 | { "Implementation Date/Time", "zbee_zcl_se.met.change_supply.implementation_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
7451 | 15 | 0x00, NULL, HFILL } }, |
7452 | | |
7453 | 15 | { &hf_zbee_zcl_met_change_supply_proposed_supply_status, |
7454 | 15 | { "Proposed Supply Status", "zbee_zcl_se.met.change_supply.proposed_supply_status", FT_UINT8, BASE_DEC, NULL, |
7455 | 15 | 0x00, NULL, HFILL } }, |
7456 | | |
7457 | 15 | { &hf_zbee_zcl_met_change_supply_supply_control_bits, |
7458 | 15 | { "Supply Control bits", "zbee_zcl_se.met.change_supply.supply_control_bits", FT_UINT8, BASE_HEX, NULL, |
7459 | 15 | 0x00, NULL, HFILL } }, |
7460 | | |
7461 | 15 | { &hf_zbee_zcl_met_local_change_supply_proposed_supply_status, |
7462 | 15 | { "Proposed Supply Status", "zbee_zcl_se.met.local_change_supply.proposed_supply_status", FT_UINT8, BASE_DEC, NULL, |
7463 | 15 | 0x00, NULL, HFILL } }, |
7464 | | |
7465 | 15 | { &hf_zbee_zcl_met_set_supply_status_issuer_event_id, |
7466 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.set_supply_status.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7467 | 15 | 0x00, NULL, HFILL } }, |
7468 | | |
7469 | 15 | { &hf_zbee_zcl_met_set_supply_status_supply_tamper_state, |
7470 | 15 | { "Supply Tamper State", "zbee_zcl_se.met.set_supply_status.supply_tamper_state", FT_UINT8, BASE_DEC, NULL, |
7471 | 15 | 0x00, NULL, HFILL } }, |
7472 | | |
7473 | 15 | { &hf_zbee_zcl_met_set_supply_status_supply_depletion_state, |
7474 | 15 | { "Supply Depletion State", "zbee_zcl_se.met.set_supply_status.supply_depletion_state", FT_UINT8, BASE_DEC, NULL, |
7475 | 15 | 0x00, NULL, HFILL } }, |
7476 | | |
7477 | 15 | { &hf_zbee_zcl_met_set_supply_status_supply_uncontrolled_flow_state, |
7478 | 15 | { "Supply Uncontrolled Flow State", "zbee_zcl_se.met.set_supply_status.supply_uncontrolled_flow_state", FT_UINT8, BASE_DEC, NULL, |
7479 | 15 | 0x00, NULL, HFILL } }, |
7480 | | |
7481 | 15 | { &hf_zbee_zcl_met_set_supply_status_load_limit_supply_state, |
7482 | 15 | { "Load Limit Supply State", "zbee_zcl_se.met.set_supply_status.load_limit_supply_state", FT_UINT8, BASE_DEC, NULL, |
7483 | 15 | 0x00, NULL, HFILL } }, |
7484 | | |
7485 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_provider_id, |
7486 | 15 | { "Provider ID", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.provider_id", FT_UINT32, BASE_DEC, NULL, |
7487 | 15 | 0x00, NULL, HFILL } }, |
7488 | | |
7489 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_issuer_event_id, |
7490 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7491 | 15 | 0x00, NULL, HFILL } }, |
7492 | | |
7493 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_uncontrolled_flow_threshold, |
7494 | 15 | { "Uncontrolled Flow Threshold", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.uncontrolled_flow_threshold", FT_UINT16, BASE_DEC, NULL, |
7495 | 15 | 0x00, NULL, HFILL } }, |
7496 | | |
7497 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_unit_of_measure, |
7498 | 15 | { "Unit of Measure", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.unit_of_measure", FT_UINT8, BASE_DEC, NULL, |
7499 | 15 | 0x00, NULL, HFILL } }, |
7500 | | |
7501 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_multiplier, |
7502 | 15 | { "Multiplier", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.multiplier", FT_UINT16, BASE_DEC, NULL, |
7503 | 15 | 0x00, NULL, HFILL } }, |
7504 | | |
7505 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_divisor, |
7506 | 15 | { "Divisor", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.divisor", FT_UINT16, BASE_DEC, NULL, |
7507 | 15 | 0x00, NULL, HFILL } }, |
7508 | | |
7509 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_stabilisation_period, |
7510 | 15 | { "Stabilisation Period", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.stabilisation_period", FT_UINT8, BASE_DEC, NULL, |
7511 | 15 | 0x00, NULL, HFILL } }, |
7512 | | |
7513 | 15 | { &hf_zbee_zcl_met_set_uncontrolled_flow_threshold_measurement_period, |
7514 | 15 | { "Measurement Period", "zbee_zcl_se.met.set_uncontrolled_flow_threshold.measurement_period", FT_UINT16, BASE_DEC, NULL, |
7515 | 15 | 0x00, NULL, HFILL } }, |
7516 | | |
7517 | 15 | { &hf_zbee_zcl_met_get_profile_response_end_time, |
7518 | 15 | { "End Time", "zbee_zcl_se.met.get_profile_response.end_time", |
7519 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_strings), 0x00, NULL, HFILL } }, |
7520 | | |
7521 | 15 | { &hf_zbee_zcl_met_get_profile_response_status, |
7522 | 15 | { "Status", "zbee_zcl_se.met.get_profile_response.status", FT_UINT8, BASE_HEX, NULL, |
7523 | 15 | 0x00, NULL, HFILL } }, |
7524 | | |
7525 | 15 | { &hf_zbee_zcl_met_get_profile_response_profile_interval_period, |
7526 | 15 | { "Profile Interval Period", "zbee_zcl_se.met.get_profile_response.profile_interval_period", FT_UINT8, BASE_DEC, NULL, |
7527 | 15 | 0x00, NULL, HFILL } }, |
7528 | | |
7529 | 15 | { &hf_zbee_zcl_met_get_profile_response_number_of_periods_delivered, |
7530 | 15 | { "Number of Periods Delivered", "zbee_zcl_se.met.get_profile_response.number_of_periods_delivered", FT_UINT8, BASE_DEC, NULL, |
7531 | 15 | 0x00, NULL, HFILL } }, |
7532 | | |
7533 | 15 | { &hf_zbee_zcl_met_get_profile_response_intervals, |
7534 | 15 | { "Intervals", "zbee_zcl_se.met.get_profile_response.intervals", FT_UINT24, BASE_DEC, NULL, |
7535 | 15 | 0x00, NULL, HFILL } }, |
7536 | | |
7537 | 15 | { &hf_zbee_zcl_met_request_fast_poll_mode_response_applied_update_period, |
7538 | 15 | { "Applied Update Period (seconds)", "zbee_zcl_se.met.request_fast_poll_mode_response.applied_update_period", FT_UINT8, BASE_DEC, NULL, |
7539 | 15 | 0x00, NULL, HFILL } }, |
7540 | | |
7541 | 15 | { &hf_zbee_zcl_met_request_fast_poll_mode_response_fast_poll_mode_end_time, |
7542 | 15 | { "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, |
7543 | 15 | 0x00, NULL, HFILL } }, |
7544 | | |
7545 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_response_issuer_event_id, |
7546 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.schedule_snapshot_response.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7547 | 15 | 0x00, NULL, HFILL } }, |
7548 | | |
7549 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_id, |
7550 | 15 | { "Snapshot Schedule ID", "zbee_zcl_se.met.schedule_snapshot_response.response_snapshot_schedule_id", FT_UINT8, BASE_DEC, NULL, |
7551 | 15 | 0x00, NULL, HFILL } }, |
7552 | | |
7553 | 15 | { &hf_zbee_zcl_met_schedule_snapshot_response_snapshot_schedule_confirmation, |
7554 | 15 | { "Snapshot Schedule Confirmation", "zbee_zcl_se.met.schedule_snapshot_response.snapshot_schedule_confirmation", FT_UINT8, BASE_HEX, VALS(zbee_zcl_met_snapshot_schedule_confirmation), |
7555 | 15 | 0x00, NULL, HFILL } }, |
7556 | | |
7557 | 15 | { &hf_zbee_zcl_met_take_snapshot_response_snapshot_id, |
7558 | 15 | { "Snapshot ID", "zbee_zcl_se.met.take_snapshot_response.snapshot_id", FT_UINT32, BASE_DEC, NULL, |
7559 | 15 | 0x00, NULL, HFILL } }, |
7560 | | |
7561 | 15 | { &hf_zbee_zcl_met_take_snapshot_response_snapshot_confirmation, |
7562 | 15 | { "Snapshot Confirmation", "zbee_zcl_se.met.take_snapshot_response.snapshot_confirmation", FT_UINT8, BASE_HEX, NULL, |
7563 | 15 | 0x00, NULL, HFILL } }, |
7564 | | |
7565 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshot_id, |
7566 | 15 | { "Snapshot ID", "zbee_zcl_se.met.publish_snapshot.snapshot_id", FT_UINT32, BASE_DEC, NULL, |
7567 | 15 | 0x00, NULL, HFILL } }, |
7568 | | |
7569 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshot_time, |
7570 | 15 | { "Snapshot Time", "zbee_zcl_se.met.publish_snapshot.snapshot_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7571 | 15 | 0x00, NULL, HFILL } }, |
7572 | | |
7573 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshots_found, |
7574 | 15 | { "Total Snapshots Found", "zbee_zcl_se.met.publish_snapshot.snapshots_found", FT_UINT8, BASE_DEC, NULL, |
7575 | 15 | 0x00, NULL, HFILL } }, |
7576 | | |
7577 | 15 | { &hf_zbee_zcl_met_publish_snapshot_cmd_index, |
7578 | 15 | { "Command Index", "zbee_zcl_se.met.publish_snapshot.command_index", FT_UINT8, BASE_DEC, NULL, |
7579 | 15 | 0x00, NULL, HFILL } }, |
7580 | | |
7581 | 15 | { &hf_zbee_zcl_met_publish_snapshot_total_commands, |
7582 | 15 | { "Total Number of Commands", "zbee_zcl_se.met.publish_snapshot.total_commands", FT_UINT8, BASE_DEC, NULL, |
7583 | 15 | 0x00, NULL, HFILL } }, |
7584 | | |
7585 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshot_cause, |
7586 | 15 | { "Snapshot Cause", "zbee_zcl_se.met.publish_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
7587 | 15 | 0x00, NULL, HFILL } }, |
7588 | | |
7589 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshot_payload_type, |
7590 | 15 | { "Snapshot Payload Type", "zbee_zcl_se.met.publish_snapshot.payload_type", FT_UINT8, BASE_DEC, VALS(zbee_zcl_met_snapshot_payload_type), |
7591 | 15 | 0x00, NULL, HFILL } }, |
7592 | | |
7593 | 15 | { &hf_zbee_zcl_met_publish_snapshot_snapshot_sub_payload, |
7594 | 15 | { "Snapshot Sub-Payload", "zbee_zcl_se.met.publish_snapshot.sub_payload", FT_BYTES, BASE_NONE, NULL, |
7595 | 15 | 0x00, NULL, HFILL } }, |
7596 | | |
7597 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_id, |
7598 | 15 | { "Sample ID", "zbee_zcl_se.met.get_sampled_data_rsp.sample_id", FT_UINT16, BASE_DEC, NULL, |
7599 | 15 | 0x00, NULL, HFILL } }, |
7600 | | |
7601 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_start_time, |
7602 | 15 | { "Sample Start Time", "zbee_zcl_se.met.get_sampled_data_rsp.sample_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7603 | 15 | 0x00, NULL, HFILL } }, |
7604 | | |
7605 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_type, |
7606 | 15 | { "Sample Type", "zbee_zcl_se.met.get_sampled_data_rsp.sample_type", FT_UINT8, BASE_DEC, NULL, |
7607 | 15 | 0x00, NULL, HFILL } }, |
7608 | | |
7609 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_request_interval, |
7610 | 15 | { "Sample Request Interval", "zbee_zcl_se.met.get_sampled_data_rsp.sample_request_interval", FT_UINT16, BASE_DEC, NULL, |
7611 | 15 | 0x00, NULL, HFILL } }, |
7612 | | |
7613 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_number_of_samples, |
7614 | 15 | { "Number of Samples", "zbee_zcl_se.met.get_sampled_data_rsp.number_of_samples", FT_UINT16, BASE_DEC, NULL, |
7615 | 15 | 0x00, NULL, HFILL } }, |
7616 | | |
7617 | 15 | { &hf_zbee_zcl_met_get_sampled_data_rsp_sample_samples, |
7618 | 15 | { "Samples", "zbee_zcl_se.met.get_sampled_data_rsp.samples", FT_UINT24, BASE_DEC, NULL, |
7619 | 15 | 0x00, NULL, HFILL } }, |
7620 | | |
7621 | 15 | { &hf_zbee_zcl_met_configure_mirror_issuer_event_id, |
7622 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.configure_mirror.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7623 | 15 | 0x00, NULL, HFILL } }, |
7624 | | |
7625 | 15 | { &hf_zbee_zcl_met_configure_mirror_reporting_interval, |
7626 | 15 | { "Reporting Interval", "zbee_zcl_se.met.configure_mirror.reporting_interval", FT_UINT24, BASE_DEC, NULL, |
7627 | 15 | 0x00, NULL, HFILL } }, |
7628 | | |
7629 | 15 | { &hf_zbee_zcl_met_configure_mirror_mirror_notification_reporting, |
7630 | 15 | { "Mirror Notification Reporting", "zbee_zcl_se.met.configure_mirror.mirror_notification_reporting", FT_BOOLEAN, BASE_NONE, NULL, |
7631 | 15 | 0x00, NULL, HFILL } }, |
7632 | | |
7633 | 15 | { &hf_zbee_zcl_met_configure_mirror_notification_scheme, |
7634 | 15 | { "Notification Scheme", "zbee_zcl_se.met.configure_mirror.notification_scheme", FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_met_notification_scheme), |
7635 | 15 | 0x00, NULL, HFILL } }, |
7636 | | |
7637 | 15 | { &hf_zbee_zcl_met_configure_notification_scheme_issuer_event_id, |
7638 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.configure_notification_scheme.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7639 | 15 | 0x00, NULL, HFILL } }, |
7640 | | |
7641 | 15 | { &hf_zbee_zcl_met_configure_notification_scheme_notification_scheme, |
7642 | 15 | { "Notification Scheme", "zbee_zcl_se.met.configure_notification_scheme.notification_scheme", FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_met_notification_scheme), |
7643 | 15 | 0x00, NULL, HFILL } }, |
7644 | | |
7645 | 15 | { &hf_zbee_zcl_met_configure_notification_scheme_notification_flag_order, |
7646 | 15 | { "Notification Flag Order", "zbee_zcl_se.met.configure_notification_scheme.notification_flag_order", FT_UINT32, BASE_HEX, NULL, |
7647 | 15 | 0x00, NULL, HFILL } }, |
7648 | | |
7649 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_issuer_event_id, |
7650 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.configure_notification_flags.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7651 | 15 | 0x00, NULL, HFILL } }, |
7652 | | |
7653 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_notification_scheme, |
7654 | 15 | { "Notification Scheme", "zbee_zcl_se.met.configure_notification_flags.notification_scheme", FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_met_notification_scheme), |
7655 | 15 | 0x00, NULL, HFILL } }, |
7656 | | |
7657 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_notification_flag_attribute_id, |
7658 | 15 | { "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), |
7659 | 15 | 0x00, NULL, HFILL } }, |
7660 | | |
7661 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_cluster_id, |
7662 | 15 | { "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), |
7663 | 15 | 0x00, NULL, HFILL } }, |
7664 | | |
7665 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_manufacturer_code, |
7666 | 15 | { "Manufacturer Code", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.manufacturer_code", FT_UINT16, BASE_HEX, NULL, |
7667 | 15 | 0x00, NULL, HFILL } }, |
7668 | | |
7669 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_no_of_commands, |
7670 | 15 | { "No. of Commands", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.no_of_commands", FT_UINT8, BASE_DEC, NULL, |
7671 | 15 | 0x00, NULL, HFILL } }, |
7672 | | |
7673 | 15 | { &hf_zbee_zcl_met_configure_notification_flags_bit_field_allocation_command_identifier, |
7674 | 15 | { "Command Identifier", "zbee_zcl_se.met.configure_notification_flags.bit_field_allocation.command_identifier", FT_UINT8, BASE_HEX, NULL, |
7675 | 15 | 0x00, NULL, HFILL } }, |
7676 | | |
7677 | 15 | { &hf_zbee_zcl_met_get_notified_msg_notification_scheme, |
7678 | 15 | { "Notification Scheme", "zbee_zcl_se.met.get_notified_msg.notification_scheme", FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_met_notification_scheme), |
7679 | 15 | 0x00, NULL, HFILL } }, |
7680 | | |
7681 | 15 | { &hf_zbee_zcl_met_get_notified_msg_notification_flag_attribute_id, |
7682 | 15 | { "Notification Flag attribute ID", "zbee_zcl_se.met.get_notified_msg.notification_flag_attribute_id", FT_UINT16, BASE_DEC, NULL, |
7683 | 15 | 0x00, NULL, HFILL } }, |
7684 | | |
7685 | 15 | { &hf_zbee_zcl_met_get_notified_msg_notification_flags, |
7686 | 15 | { "Notification Flags", "zbee_zcl_se.met.get_notified_msg.notification_flags", FT_UINT32, BASE_HEX, NULL, |
7687 | 15 | 0x00, NULL, HFILL } }, |
7688 | | |
7689 | 15 | { &hf_zbee_zcl_met_supply_status_response_provider_id, |
7690 | 15 | { "Provider ID", "zbee_zcl_se.met.supply_status_response.provider_id", FT_UINT32, BASE_DEC, NULL, |
7691 | 15 | 0x00, NULL, HFILL } }, |
7692 | | |
7693 | 15 | { &hf_zbee_zcl_met_supply_status_response_issuer_event_id, |
7694 | 15 | { "Issuer Event ID", "zbee_zcl_se.met.supply_status_response.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
7695 | 15 | 0x00, NULL, HFILL } }, |
7696 | | |
7697 | 15 | { &hf_zbee_zcl_met_supply_status_response_implementation_date_time, |
7698 | 15 | { "Implementation Date/Time", "zbee_zcl_se.met.supply_status_response.implementation_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
7699 | 15 | 0x00, NULL, HFILL } }, |
7700 | | |
7701 | 15 | { &hf_zbee_zcl_met_supply_status_response_supply_status_after_implementation, |
7702 | 15 | { "Supply Status After Implementation", "zbee_zcl_se.met.supply_status_response.supply_status_after_implementation", FT_UINT8, BASE_DEC, NULL, |
7703 | 15 | 0x00, NULL, HFILL } }, |
7704 | | |
7705 | 15 | { &hf_zbee_zcl_met_snapshot_cause_general, |
7706 | 15 | { "General", "zbee_zcl_se.met.snapshot_cause.general", FT_BOOLEAN, 32, NULL, |
7707 | 15 | 0x00000001, NULL, HFILL } }, |
7708 | 15 | { &hf_zbee_zcl_met_snapshot_cause_end_of_billing_period, |
7709 | 15 | { "End of Billing Period", "zbee_zcl_se.met.snapshot_cause.end_of_billing_period", FT_BOOLEAN, 32, NULL, |
7710 | 15 | 0x00000002, NULL, HFILL } }, |
7711 | 15 | { &hf_zbee_zcl_met_snapshot_cause_end_of_block_period, |
7712 | 15 | { "End of Block Period", "zbee_zcl_se.met.snapshot_cause.end_of_block_period", FT_BOOLEAN, 32, NULL, |
7713 | 15 | 0x00000004, NULL, HFILL } }, |
7714 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_tariff_information, |
7715 | 15 | { "Change of Tariff Information", "zbee_zcl_se.met.snapshot_cause.change_of_tariff_information", FT_BOOLEAN, 32, NULL, |
7716 | 15 | 0x00000008, NULL, HFILL } }, |
7717 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_price_matrix, |
7718 | 15 | { "Change of Price Matrix", "zbee_zcl_se.met.snapshot_cause.change_of_price_matrix", FT_BOOLEAN, 32, NULL, |
7719 | 15 | 0x00000010, NULL, HFILL } }, |
7720 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_block_thresholds, |
7721 | 15 | { "Change of Block Thresholds", "zbee_zcl_se.met.snapshot_cause.change_of_block_thresholds", FT_BOOLEAN, 32, NULL, |
7722 | 15 | 0x00000020, NULL, HFILL } }, |
7723 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_cv, |
7724 | 15 | { "Change of CV", "zbee_zcl_se.met.snapshot_cause.change_of_cv", FT_BOOLEAN, 32, NULL, |
7725 | 15 | 0x00000040, NULL, HFILL } }, |
7726 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_cf, |
7727 | 15 | { "Change of CF", "zbee_zcl_se.met.snapshot_cause.change_of_cf", FT_BOOLEAN, 32, NULL, |
7728 | 15 | 0x00000080, NULL, HFILL } }, |
7729 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_calendar, |
7730 | 15 | { "Change of Calendar", "zbee_zcl_se.met.snapshot_cause.change_of_calendar", FT_BOOLEAN, 32, NULL, |
7731 | 15 | 0x00000100, NULL, HFILL } }, |
7732 | 15 | { &hf_zbee_zcl_met_snapshot_cause_critical_peak_pricing, |
7733 | 15 | { "Critical Peak Pricing", "zbee_zcl_se.met.snapshot_cause.critical_peak_pricing", FT_BOOLEAN, 32, NULL, |
7734 | 15 | 0x00000200, NULL, HFILL } }, |
7735 | 15 | { &hf_zbee_zcl_met_snapshot_cause_manually_triggered_from_client, |
7736 | 15 | { "Manually Triggered from Client", "zbee_zcl_se.met.snapshot_cause.manually_triggered_from_client", FT_BOOLEAN, 32, NULL, |
7737 | 15 | 0x00000400, NULL, HFILL } }, |
7738 | 15 | { &hf_zbee_zcl_met_snapshot_cause_end_of_resolve_period, |
7739 | 15 | { "End of Resolve Period", "zbee_zcl_se.met.snapshot_cause.end_of_resolve_period", FT_BOOLEAN, 32, NULL, |
7740 | 15 | 0x00000800, NULL, HFILL } }, |
7741 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_tenancy, |
7742 | 15 | { "Change of Tenancy", "zbee_zcl_se.met.snapshot_cause.change_of_tenancy", FT_BOOLEAN, 32, NULL, |
7743 | 15 | 0x00001000, NULL, HFILL } }, |
7744 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_supplier, |
7745 | 15 | { "Change of Supplier", "zbee_zcl_se.met.snapshot_cause.change_of_supplier", FT_BOOLEAN, 32, NULL, |
7746 | 15 | 0x00002000, NULL, HFILL } }, |
7747 | 15 | { &hf_zbee_zcl_met_snapshot_cause_change_of_meter_mode, |
7748 | 15 | { "Change of (Meter) Mode", "zbee_zcl_se.met.snapshot_cause.change_of_meter_mode", FT_BOOLEAN, 32, NULL, |
7749 | 15 | 0x00004000, NULL, HFILL } }, |
7750 | 15 | { &hf_zbee_zcl_met_snapshot_cause_debt_payment, |
7751 | 15 | { "Debt Payment", "zbee_zcl_se.met.snapshot_cause.debt_payment", FT_BOOLEAN, 32, NULL, |
7752 | 15 | 0x00008000, NULL, HFILL } }, |
7753 | 15 | { &hf_zbee_zcl_met_snapshot_cause_scheduled_snapshot, |
7754 | 15 | { "Scheduled Snapshot", "zbee_zcl_se.met.snapshot_cause.scheduled_snapshot", FT_BOOLEAN, 32, NULL, |
7755 | 15 | 0x00010000, NULL, HFILL } }, |
7756 | 15 | { &hf_zbee_zcl_met_snapshot_cause_ota_firmware_download, |
7757 | 15 | { "OTA Firmware Download", "zbee_zcl_se.met.snapshot_cause.ota_firmware_download", FT_BOOLEAN, 32, NULL, |
7758 | 15 | 0x00020000, NULL, HFILL } }, |
7759 | 15 | { &hf_zbee_zcl_met_snapshot_cause_reserved, |
7760 | 15 | { "Reserved", "zbee_zcl_se.met.snapshot_cause.reserved", FT_UINT32, BASE_HEX, NULL, |
7761 | 15 | 0xFFFC0000, NULL, HFILL } } |
7762 | 15 | }; |
7763 | | |
7764 | | /* ZCL Metering subtrees */ |
7765 | 15 | int *ett[] = { |
7766 | 15 | &ett_zbee_zcl_met, |
7767 | 15 | &ett_zbee_zcl_met_func_noti_flags, |
7768 | 15 | &ett_zbee_zcl_met_noti_flags_2, |
7769 | 15 | &ett_zbee_zcl_met_noti_flags_3, |
7770 | 15 | &ett_zbee_zcl_met_noti_flags_4, |
7771 | 15 | &ett_zbee_zcl_met_noti_flags_5, |
7772 | 15 | &ett_zbee_zcl_met_snapshot_cause_flags, |
7773 | 15 | &ett_zbee_zcl_met_snapshot_schedule, |
7774 | 15 | &ett_zbee_zcl_met_schedule_snapshot_response_payload, |
7775 | 15 | &ett_zbee_zcl_met_schedule_snapshot_payload, |
7776 | 15 | &ett_zbee_zcl_met_mirror_noti_flag, |
7777 | 15 | &ett_zbee_zcl_met_bit_field_allocation |
7778 | 15 | }; |
7779 | | |
7780 | | /* Register the ZigBee ZCL Metering cluster protocol name and description */ |
7781 | 15 | proto_zbee_zcl_met = proto_register_protocol("ZigBee ZCL Metering", "ZCL Metering", ZBEE_PROTOABBREV_ZCL_MET); |
7782 | 15 | proto_register_field_array(proto_zbee_zcl_met, hf, array_length(hf)); |
7783 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
7784 | | |
7785 | | /* Register the ZigBee ZCL Metering dissector. */ |
7786 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_MET, dissect_zbee_zcl_met, proto_zbee_zcl_met); |
7787 | 15 | } /*proto_register_zbee_zcl_met*/ |
7788 | | |
7789 | | /** |
7790 | | *Hands off the ZCL Metering dissector. |
7791 | | * |
7792 | | */ |
7793 | | void |
7794 | | proto_reg_handoff_zbee_zcl_met(void) |
7795 | 15 | { |
7796 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MET, |
7797 | 15 | proto_zbee_zcl_met, |
7798 | 15 | ett_zbee_zcl_met, |
7799 | 15 | ZBEE_ZCL_CID_SIMPLE_METERING, |
7800 | 15 | ZBEE_MFG_CODE_NONE, |
7801 | 15 | hf_zbee_zcl_met_attr_server_id, |
7802 | 15 | hf_zbee_zcl_met_attr_client_id, |
7803 | 15 | hf_zbee_zcl_met_srv_rx_cmd_id, |
7804 | 15 | hf_zbee_zcl_met_srv_tx_cmd_id, |
7805 | 15 | dissect_zcl_met_attr_data |
7806 | 15 | ); |
7807 | 15 | } /*proto_reg_handoff_zbee_zcl_met*/ |
7808 | | |
7809 | | /* ########################################################################## */ |
7810 | | /* #### (0x0703) MESSAGING CLUSTER ########################################## */ |
7811 | | /* ########################################################################## */ |
7812 | | |
7813 | | /* Attributes - None */ |
7814 | | |
7815 | | /* Server Commands Received */ |
7816 | | #define zbee_zcl_msg_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
7817 | | XXX(ZBEE_ZCL_CMD_ID_MSG_GET_LAST_MSG, 0x00, "Get Last Message" ) \ |
7818 | | XXX(ZBEE_ZCL_CMD_ID_MSG_MSG_CONFIRM, 0x01, "Message Confirmation" ) \ |
7819 | | XXX(ZBEE_ZCL_CMD_ID_MSG_GET_MESSAGE_CANCEL, 0x02, "Get Message Cancellation" ) |
7820 | | |
7821 | | VALUE_STRING_ENUM(zbee_zcl_msg_srv_rx_cmd_names); |
7822 | | VALUE_STRING_ARRAY(zbee_zcl_msg_srv_rx_cmd_names); |
7823 | | |
7824 | | /* Server Commands Generated */ |
7825 | | #define zbee_zcl_msg_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
7826 | | XXX(ZBEE_ZCL_CMD_ID_MSG_DISPLAY_MSG, 0x00, "Display Message" ) \ |
7827 | | XXX(ZBEE_ZCL_CMD_ID_MSG_CANCEL_MSG, 0x01, "Cancel Message" ) \ |
7828 | | XXX(ZBEE_ZCL_CMD_ID_MSG_DISPLAY_PROTECTED_MSG, 0x02, "Display Protected Message" ) \ |
7829 | | XXX(ZBEE_ZCL_CMD_ID_MSG_CANCEL_ALL_MSG, 0x03, "Cancel All Messages" ) |
7830 | | |
7831 | | VALUE_STRING_ENUM(zbee_zcl_msg_srv_tx_cmd_names); |
7832 | | VALUE_STRING_ARRAY(zbee_zcl_msg_srv_tx_cmd_names); |
7833 | | |
7834 | | /* Message Control Field Bit Map */ |
7835 | 15 | #define ZBEE_ZCL_MSG_CTRL_TX_MASK 0x03 |
7836 | 15 | #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MASK 0x0C |
7837 | 15 | #define ZBEE_ZCL_MSG_CTRL_RESERVED_MASK 0x50 |
7838 | 15 | #define ZBEE_ZCL_MSG_CTRL_ENHANCED_CONFIRM_MASK 0x20 |
7839 | 15 | #define ZBEE_ZCL_MSG_CTRL_CONFIRM_MASK 0x80 |
7840 | | |
7841 | | #define ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ONLY 0x00 /* Normal Transmission Only */ |
7842 | | #define ZBEE_ZCL_MSG_CTRL_TX_NORMAL_ANON_INTERPAN 0x01 /* Normal and Anonymous Inter-PAN Transmission Only */ |
7843 | | #define ZBEE_ZCL_MSG_CTRL_TX_ANON_INTERPAN_ONLY 0x02 /* Anonymous Inter-PAN Transmission Only */ |
7844 | | |
7845 | | #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_LOW 0x00 /* Low */ |
7846 | | #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MEDIUM 0x01 /* Medium */ |
7847 | | #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_HIGH 0x02 /* High */ |
7848 | | #define ZBEE_ZCL_MSG_CTRL_IMPORTANCE_CRITICAL 0x03 /* Critical */ |
7849 | | |
7850 | 15 | #define ZBEE_ZCL_MSG_EXT_CTRL_STATUS_MASK 0x01 |
7851 | | |
7852 | 15 | #define ZBEE_ZCL_MSG_CONFIRM_CTRL_MASK 0x01 |
7853 | | |
7854 | | /*************************/ |
7855 | | /* Function Declarations */ |
7856 | | /*************************/ |
7857 | | void proto_register_zbee_zcl_msg(void); |
7858 | | void proto_reg_handoff_zbee_zcl_msg(void); |
7859 | | |
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); |
7866 | | |
7867 | | /* Private functions prototype */ |
7868 | | static void decode_zcl_msg_duration (char *s, uint16_t value); |
7869 | | |
7870 | | /*************************/ |
7871 | | /* Global Variables */ |
7872 | | /*************************/ |
7873 | | |
7874 | | /* Initialize the protocol and registered fields */ |
7875 | | static int proto_zbee_zcl_msg; |
7876 | | |
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; |
7896 | | |
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; |
7901 | | |
7902 | | static expert_field ei_zbee_zcl_msg_msg_ctrl_deprecated; |
7903 | | |
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" }, |
7909 | | { 0, NULL } |
7910 | | }; |
7911 | | |
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" }, |
7918 | | { 0, NULL } |
7919 | | }; |
7920 | | |
7921 | | /*************************/ |
7922 | | /* Function Bodies */ |
7923 | | /*************************/ |
7924 | | |
7925 | | /** |
7926 | | *ZigBee ZCL Messaging cluster dissector for wireshark. |
7927 | | * |
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. |
7931 | | */ |
7932 | | static int |
7933 | | dissect_zbee_zcl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
7934 | 3 | { |
7935 | 3 | proto_tree *payload_tree; |
7936 | 3 | zbee_zcl_packet *zcl; |
7937 | 3 | unsigned offset = 0; |
7938 | 3 | uint8_t cmd_id; |
7939 | 3 | int rem_len; |
7940 | | |
7941 | | /* Reject the packet if data is NULL */ |
7942 | 3 | if (data == NULL) |
7943 | 0 | return 0; |
7944 | 3 | zcl = (zbee_zcl_packet *)data; |
7945 | 3 | cmd_id = zcl->cmd_id; |
7946 | | |
7947 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
7948 | 3 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
7949 | | /* Append the command name to the info column. */ |
7950 | 2 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
7951 | 2 | val_to_str_const(cmd_id, zbee_zcl_msg_srv_rx_cmd_names, "Unknown Command"), |
7952 | 2 | zcl->tran_seqno); |
7953 | | |
7954 | | /* Add the command ID. */ |
7955 | 2 | proto_tree_add_uint(tree, hf_zbee_zcl_msg_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
7956 | | |
7957 | | /* Check is this command has a payload, than add the payload tree */ |
7958 | 2 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
7959 | 2 | if (rem_len > 0) { |
7960 | 2 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_msg, NULL, "Payload"); |
7961 | | |
7962 | | /* Call the appropriate command dissector */ |
7963 | 2 | switch (cmd_id) { |
7964 | | |
7965 | 0 | case ZBEE_ZCL_CMD_ID_MSG_GET_LAST_MSG: |
7966 | | /* No payload */ |
7967 | 0 | break; |
7968 | | |
7969 | 0 | case ZBEE_ZCL_CMD_ID_MSG_MSG_CONFIRM: |
7970 | 0 | dissect_zcl_msg_confirm(tvb, payload_tree, &offset); |
7971 | 0 | break; |
7972 | | |
7973 | 1 | case ZBEE_ZCL_CMD_ID_MSG_GET_MESSAGE_CANCEL: |
7974 | 1 | dissect_zcl_msg_get_cancel(tvb, payload_tree, &offset); |
7975 | 1 | break; |
7976 | | |
7977 | 1 | default: |
7978 | 1 | break; |
7979 | 2 | } |
7980 | 2 | } |
7981 | 2 | } |
7982 | 1 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
7983 | | /* Append the command name to the info column. */ |
7984 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
7985 | 1 | val_to_str_const(cmd_id, zbee_zcl_msg_srv_tx_cmd_names, "Unknown Command"), |
7986 | 1 | zcl->tran_seqno); |
7987 | | |
7988 | | /* Add the command ID. */ |
7989 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_msg_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
7990 | | |
7991 | | /* Check is this command has a payload, than add the payload tree */ |
7992 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
7993 | 1 | if (rem_len > 0) { |
7994 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_msg, NULL, "Payload"); |
7995 | | |
7996 | | /* Call the appropriate command dissector */ |
7997 | 1 | switch (cmd_id) { |
7998 | | |
7999 | 0 | case ZBEE_ZCL_CMD_ID_MSG_DISPLAY_MSG: |
8000 | 0 | dissect_zcl_msg_display(tvb, payload_tree, &offset); |
8001 | 0 | break; |
8002 | | |
8003 | 0 | case ZBEE_ZCL_CMD_ID_MSG_CANCEL_MSG: |
8004 | 0 | dissect_zcl_msg_cancel(tvb, pinfo, payload_tree, &offset); |
8005 | 0 | break; |
8006 | | |
8007 | 0 | case ZBEE_ZCL_CMD_ID_MSG_DISPLAY_PROTECTED_MSG: |
8008 | 0 | dissect_zcl_msg_display(tvb, payload_tree, &offset); |
8009 | 0 | break; |
8010 | | |
8011 | 0 | case ZBEE_ZCL_CMD_ID_MSG_CANCEL_ALL_MSG: |
8012 | 0 | dissect_zcl_msg_cancel_all(tvb, payload_tree, &offset); |
8013 | 0 | break; |
8014 | | |
8015 | 1 | default: |
8016 | 1 | break; |
8017 | 1 | } |
8018 | 1 | } |
8019 | 1 | } |
8020 | | |
8021 | 3 | return tvb_captured_length(tvb); |
8022 | 3 | } /*dissect_zbee_zcl_msg*/ |
8023 | | |
8024 | | /** |
8025 | | *This function manages the Display Message payload |
8026 | | * |
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 |
8030 | | */ |
8031 | | static void |
8032 | | dissect_zcl_msg_display(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8033 | 0 | { |
8034 | 0 | int msg_len; |
8035 | |
|
8036 | 0 | static int * const message_ctrl_flags[] = { |
8037 | 0 | &hf_zbee_zcl_msg_ctrl_tx, |
8038 | 0 | &hf_zbee_zcl_msg_ctrl_importance, |
8039 | 0 | &hf_zbee_zcl_msg_ctrl_enh_confirm, |
8040 | 0 | &hf_zbee_zcl_msg_ctrl_reserved, |
8041 | 0 | &hf_zbee_zcl_msg_ctrl_confirm, |
8042 | 0 | NULL |
8043 | 0 | }; |
8044 | |
|
8045 | 0 | static int * const message_ext_ctrl_flags[] = { |
8046 | 0 | &hf_zbee_zcl_msg_ext_ctrl_status, |
8047 | 0 | NULL |
8048 | 0 | }; |
8049 | | |
8050 | | /* Message ID */ |
8051 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_message_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
8052 | 0 | *offset += 4; |
8053 | | |
8054 | | /* Message Control */ |
8055 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_msg_ctrl, ett_zbee_zcl_msg_message_control, message_ctrl_flags, ENC_NA); |
8056 | 0 | *offset += 1; |
8057 | | |
8058 | | /* Start Time */ |
8059 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_start_time, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
8060 | 0 | *offset += 4; |
8061 | | |
8062 | | /* Duration In Minutes*/ |
8063 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_duration, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8064 | 0 | *offset += 2; |
8065 | | |
8066 | | /* Message */ |
8067 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_msg_message, tvb, *offset, 1, ENC_NA | ENC_ZIGBEE, &msg_len); |
8068 | 0 | *offset += msg_len; |
8069 | | |
8070 | | /* (Optional) Extended Message Control */ |
8071 | 0 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
8072 | 0 | 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); |
8073 | 0 | *offset += 1; |
8074 | 0 | } |
8075 | |
|
8076 | 0 | } /*dissect_zcl_msg_display*/ |
8077 | | |
8078 | | /** |
8079 | | *This function manages the Cancel Message payload |
8080 | | * |
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 |
8084 | | */ |
8085 | | static void |
8086 | | dissect_zcl_msg_cancel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned *offset) |
8087 | 0 | { |
8088 | 0 | uint8_t msg_ctrl; |
8089 | | |
8090 | | /* Message ID */ |
8091 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_message_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
8092 | 0 | *offset += 4; |
8093 | | |
8094 | | /* Message Control */ |
8095 | 0 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_msg_ctrl, tvb, *offset, 1, ENC_NA, &msg_ctrl); |
8096 | 0 | *offset += 1; |
8097 | |
|
8098 | 0 | if (msg_ctrl != 0x00) { |
8099 | 0 | expert_add_info(pinfo, tree, &ei_zbee_zcl_msg_msg_ctrl_deprecated); |
8100 | 0 | } |
8101 | |
|
8102 | 0 | } /* dissect_zcl_msg_cancel */ |
8103 | | |
8104 | | /** |
8105 | | *This function manages the Cancel All Messages payload |
8106 | | * |
8107 | | *@param tvb pointer to buffer containing raw packet. |
8108 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8109 | | *@param offset pointer to offset from caller |
8110 | | */ |
8111 | | static void |
8112 | | dissect_zcl_msg_cancel_all(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8113 | 0 | { |
8114 | | /* Implementation Date/Time */ |
8115 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_implementation_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
8116 | 0 | *offset += 4; |
8117 | |
|
8118 | 0 | } /* dissect_zcl_msg_cancel_all */ |
8119 | | |
8120 | | /** |
8121 | | *This function manages the Get Message Cancellation payload |
8122 | | * |
8123 | | *@param tvb pointer to buffer containing raw packet. |
8124 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8125 | | *@param offset pointer to offset from caller |
8126 | | */ |
8127 | | static void |
8128 | | dissect_zcl_msg_get_cancel(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8129 | 1 | { |
8130 | | /* Earliest Implementation Time */ |
8131 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_msg_earliest_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
8132 | 1 | *offset += 4; |
8133 | | |
8134 | 1 | } /* dissect_zcl_msg_get_cancel */ |
8135 | | |
8136 | | /** |
8137 | | *This function manages the Message Confirmation payload |
8138 | | * |
8139 | | *@param tvb pointer to buffer containing raw packet. |
8140 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8141 | | *@param offset pointer to offset from caller |
8142 | | */ |
8143 | | static void |
8144 | | dissect_zcl_msg_confirm(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8145 | 0 | { |
8146 | 0 | int msg_len; |
8147 | | |
8148 | | /* Message ID */ |
8149 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_message_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
8150 | 0 | *offset += 4; |
8151 | | |
8152 | | /* Confirmation Time */ |
8153 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_confirm_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
8154 | 0 | *offset += 4; |
8155 | | |
8156 | | /* (Optional) Confirm Control */ |
8157 | 0 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
8158 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_msg_confirm_ctrl, tvb, *offset, 1, ENC_NA); |
8159 | 0 | *offset += 1; |
8160 | | |
8161 | | /* (Optional) Response Text, but is we have a length we expect to find the subsequent string */ |
8162 | 0 | if ( tvb_reported_length_remaining(tvb, *offset) <= 0 ) return; |
8163 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_msg_confirm_response, tvb, *offset, 1, ENC_NA | ENC_ZIGBEE, &msg_len); |
8164 | 0 | *offset += msg_len; |
8165 | 0 | } /* dissect_zcl_msg_confirm */ |
8166 | | |
8167 | | /** |
8168 | | *This function decodes duration in minute type variable |
8169 | | * |
8170 | | */ |
8171 | | static void |
8172 | | decode_zcl_msg_duration(char *s, uint16_t value) |
8173 | 0 | { |
8174 | 0 | if (value == 0xffff) |
8175 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "Until changed"); |
8176 | 0 | else |
8177 | 0 | snprintf(s, ITEM_LABEL_LENGTH, "%d minutes", value); |
8178 | 0 | return; |
8179 | 0 | } /*decode_zcl_msg_duration*/ |
8180 | | |
8181 | | /** |
8182 | | *This function registers the ZCL Messaging dissector |
8183 | | * |
8184 | | */ |
8185 | | void |
8186 | | proto_register_zbee_zcl_msg(void) |
8187 | 15 | { |
8188 | 15 | static hf_register_info hf[] = { |
8189 | | |
8190 | 15 | { &hf_zbee_zcl_msg_srv_tx_cmd_id, |
8191 | 15 | { "Command", "zbee_zcl_se.msg.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_msg_srv_tx_cmd_names), |
8192 | 15 | 0x00, NULL, HFILL } }, |
8193 | | |
8194 | 15 | { &hf_zbee_zcl_msg_srv_rx_cmd_id, |
8195 | 15 | { "Command", "zbee_zcl_se.msg.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_msg_srv_rx_cmd_names), |
8196 | 15 | 0x00, NULL, HFILL } }, |
8197 | | |
8198 | 15 | { &hf_zbee_zcl_msg_message_id, |
8199 | 15 | { "Message ID", "zbee_zcl_se.msg.message.id", FT_UINT32, BASE_HEX, NULL, |
8200 | 15 | 0x00, NULL, HFILL } }, |
8201 | | |
8202 | | /* Start of 'Message Control' fields */ |
8203 | 15 | { &hf_zbee_zcl_msg_ctrl, |
8204 | 15 | { "Message Control", "zbee_zcl_se.msg.message.ctrl", FT_UINT8, BASE_HEX, NULL, |
8205 | 15 | 0x0, NULL, HFILL } }, |
8206 | | |
8207 | 15 | { &hf_zbee_zcl_msg_ctrl_tx, |
8208 | 15 | { "Transmission", "zbee_zcl_se.msg.message.ctrl.tx", FT_UINT8, BASE_HEX, VALS(zbee_zcl_msg_ctrl_tx_names), |
8209 | 15 | ZBEE_ZCL_MSG_CTRL_TX_MASK, NULL, HFILL } }, |
8210 | | |
8211 | 15 | { &hf_zbee_zcl_msg_ctrl_importance, |
8212 | 15 | { "Importance", "zbee_zcl_se.msg.message.ctrl.importance", FT_UINT8, BASE_HEX, VALS(zbee_zcl_msg_ctrl_importance_names), |
8213 | 15 | ZBEE_ZCL_MSG_CTRL_IMPORTANCE_MASK, NULL, HFILL } }, |
8214 | | |
8215 | 15 | { &hf_zbee_zcl_msg_ctrl_enh_confirm, |
8216 | 15 | { "Confirmation", "zbee_zcl_se.msg.message.ctrl.enhconfirm", FT_BOOLEAN, 8, TFS(&tfs_required_not_required), |
8217 | 15 | ZBEE_ZCL_MSG_CTRL_ENHANCED_CONFIRM_MASK, NULL, HFILL } }, |
8218 | | |
8219 | 15 | { &hf_zbee_zcl_msg_ctrl_reserved, |
8220 | 15 | { "Reserved", "zbee_zcl_se.msg.message.ctrl.reserved", FT_UINT8, BASE_HEX, NULL, |
8221 | 15 | ZBEE_ZCL_MSG_CTRL_RESERVED_MASK, NULL, HFILL } }, |
8222 | | |
8223 | 15 | { &hf_zbee_zcl_msg_ctrl_confirm, |
8224 | 15 | { "Confirmation", "zbee_zcl_se.msg.message.ctrl.confirm", FT_BOOLEAN, 8, TFS(&tfs_required_not_required), |
8225 | 15 | ZBEE_ZCL_MSG_CTRL_CONFIRM_MASK, NULL, HFILL } }, |
8226 | | /* End of 'Message Control' fields */ |
8227 | | |
8228 | | /* Start of 'Extended Message Control' fields */ |
8229 | 15 | { &hf_zbee_zcl_msg_ext_ctrl, |
8230 | 15 | { "Extended Message Control", "zbee_zcl_se.msg.message.ext.ctrl", FT_UINT8, BASE_HEX, NULL, |
8231 | 15 | 0x0, NULL, HFILL } }, |
8232 | | |
8233 | 15 | { &hf_zbee_zcl_msg_ext_ctrl_status, |
8234 | 15 | { "Message Confirmation Status", "zbee_zcl_se.msg.message.ext.ctrl.status", FT_BOOLEAN, 8, TFS(&tfs_confirmed_unconfirmed), |
8235 | 15 | ZBEE_ZCL_MSG_EXT_CTRL_STATUS_MASK, NULL, HFILL } }, |
8236 | | /* End of 'Extended Message Control' fields */ |
8237 | | |
8238 | 15 | { &hf_zbee_zcl_msg_start_time, |
8239 | 15 | { "Start Time", "zbee_zcl_se.msg.message.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
8240 | 15 | 0x00, NULL, HFILL } }, |
8241 | | |
8242 | 15 | { &hf_zbee_zcl_msg_duration, |
8243 | 15 | { "Duration", "zbee_zcl_se.msg.message.duration", FT_UINT16, BASE_CUSTOM, CF_FUNC(decode_zcl_msg_duration), |
8244 | 15 | 0x00, NULL, HFILL } }, |
8245 | | |
8246 | 15 | { &hf_zbee_zcl_msg_message, |
8247 | 15 | { "Message", "zbee_zcl_se.msg.message", FT_UINT_STRING, BASE_NONE, NULL, |
8248 | 15 | 0x00, NULL, HFILL } }, |
8249 | | |
8250 | 15 | { &hf_zbee_zcl_msg_confirm_time, |
8251 | 15 | { "Confirmation Time", "zbee_zcl_se.msg.message.confirm_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
8252 | 15 | 0x0, NULL, HFILL } }, |
8253 | | |
8254 | 15 | { &hf_zbee_zcl_msg_confirm_ctrl, |
8255 | 15 | { "Confirmation Control", "zbee_zcl_se.msg.message.confirm_ctrl", FT_BOOLEAN, 8, TFS(&tfs_no_yes), |
8256 | 15 | ZBEE_ZCL_MSG_CONFIRM_CTRL_MASK, NULL, HFILL } }, |
8257 | | |
8258 | 15 | { &hf_zbee_zcl_msg_confirm_response, |
8259 | 15 | { "Response", "zbee_zcl_se.msg.message.confirm_response", FT_UINT_STRING, BASE_NONE, NULL, |
8260 | 15 | 0x00, NULL, HFILL } }, |
8261 | | |
8262 | 15 | { &hf_zbee_zcl_msg_implementation_time, |
8263 | 15 | { "Implementation Time", "zbee_zcl_se.msg.impl_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
8264 | 15 | 0, NULL, HFILL } }, |
8265 | | |
8266 | 15 | { &hf_zbee_zcl_msg_earliest_time, |
8267 | 15 | { "Earliest Implementation Time", "zbee_zcl_se.msg.earliest_impl_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
8268 | 15 | 0, NULL, HFILL } }, |
8269 | | |
8270 | 15 | }; |
8271 | | |
8272 | | /* ZCL Messaging subtrees */ |
8273 | 15 | int *ett[] = { |
8274 | 15 | &ett_zbee_zcl_msg, |
8275 | 15 | &ett_zbee_zcl_msg_message_control, |
8276 | 15 | &ett_zbee_zcl_msg_ext_message_control, |
8277 | 15 | }; |
8278 | | |
8279 | | /* Expert Info */ |
8280 | 15 | expert_module_t* expert_zbee_zcl_msg; |
8281 | 15 | static ei_register_info ei[] = { |
8282 | 15 | { &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 }}, |
8283 | 15 | }; |
8284 | | |
8285 | | /* Register the ZigBee ZCL Messaging cluster protocol name and description */ |
8286 | 15 | proto_zbee_zcl_msg = proto_register_protocol("ZigBee ZCL Messaging", "ZCL Messaging", ZBEE_PROTOABBREV_ZCL_MSG); |
8287 | 15 | proto_register_field_array(proto_zbee_zcl_msg, hf, array_length(hf)); |
8288 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
8289 | | |
8290 | 15 | expert_zbee_zcl_msg = expert_register_protocol(proto_zbee_zcl_msg); |
8291 | 15 | expert_register_field_array(expert_zbee_zcl_msg, ei, array_length(ei)); |
8292 | | |
8293 | | /* Register the ZigBee ZCL Messaging dissector. */ |
8294 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_MSG, dissect_zbee_zcl_msg, proto_zbee_zcl_msg); |
8295 | 15 | } /*proto_register_zbee_zcl_msg*/ |
8296 | | |
8297 | | /** |
8298 | | *Hands off the ZCL Messaging dissector. |
8299 | | * |
8300 | | */ |
8301 | | void |
8302 | | proto_reg_handoff_zbee_zcl_msg(void) |
8303 | 15 | { |
8304 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MSG, |
8305 | 15 | proto_zbee_zcl_msg, |
8306 | 15 | ett_zbee_zcl_msg, |
8307 | 15 | ZBEE_ZCL_CID_MESSAGE, |
8308 | 15 | ZBEE_MFG_CODE_NONE, |
8309 | 15 | -1, -1, |
8310 | 15 | hf_zbee_zcl_msg_srv_rx_cmd_id, |
8311 | 15 | hf_zbee_zcl_msg_srv_tx_cmd_id, |
8312 | 15 | NULL |
8313 | 15 | ); |
8314 | 15 | } /*proto_reg_handoff_zbee_zcl_msg*/ |
8315 | | |
8316 | | /* ########################################################################## */ |
8317 | | /* #### (0x0704) TUNNELING CLUSTER ########################################### */ |
8318 | | /* ########################################################################## */ |
8319 | | |
8320 | | /* Attributes */ |
8321 | | #define zbee_zcl_tun_attr_names_VALUE_STRING_LIST(XXX) \ |
8322 | | XXX(ZBEE_ZCL_ATTR_ID_TUN_CLOSE_TIMEOUT, 0x0000, "Close Tunnel Timeout" ) \ |
8323 | | /* Smart Energy */ \ |
8324 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_TUN, 0xFFFE, "Attribute Reporting Status" ) |
8325 | | |
8326 | | VALUE_STRING_ENUM(zbee_zcl_tun_attr_names); |
8327 | | VALUE_STRING_ARRAY(zbee_zcl_tun_attr_names); |
8328 | | |
8329 | | /* Server Commands Received */ |
8330 | | #define zbee_zcl_tun_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
8331 | | XXX(ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL, 0x00, "Request Tunnel" ) \ |
8332 | | XXX(ZBEE_ZCL_CMD_ID_TUN_CLOSE_TUNNEL, 0x01, "Close Tunnel" ) \ |
8333 | | XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA, 0x02, "Transfer Data" ) \ |
8334 | | XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR, 0x03, "Transfer Data Error" ) \ |
8335 | | XXX(ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA, 0x04, "Ack Transfer Data" ) \ |
8336 | | XXX(ZBEE_ZCL_CMD_ID_TUN_READY_DATA, 0x05, "Ready Data" ) \ |
8337 | | XXX(ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS, 0x06, "Get Supported Tunnel Protocols" ) |
8338 | | |
8339 | | VALUE_STRING_ENUM(zbee_zcl_tun_srv_rx_cmd_names); |
8340 | | VALUE_STRING_ARRAY(zbee_zcl_tun_srv_rx_cmd_names); |
8341 | | |
8342 | | /* Server Commands Generated */ |
8343 | | #define zbee_zcl_tun_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
8344 | | XXX(ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL_RSP, 0x00, "Request Tunnel Response" ) \ |
8345 | | XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_TX, 0x01, "Transfer Data" ) \ |
8346 | | XXX(ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR_TX, 0x02, "Transfer Data Error" ) \ |
8347 | | XXX(ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA_TX, 0x03, "Ack Transfer Data" ) \ |
8348 | | XXX(ZBEE_ZCL_CMD_ID_TUN_READY_DATA_TX, 0x04, "Ready Data" ) \ |
8349 | | XXX(ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS_RSP, 0x05, "Supported Tunnel Protocols Response" ) \ |
8350 | | XXX(ZBEE_ZCL_CMD_ID_TUN_CLOSURE_NOTIFY, 0x06, "Tunnel Closure Notification" ) |
8351 | | |
8352 | | VALUE_STRING_ENUM(zbee_zcl_tun_srv_tx_cmd_names); |
8353 | | VALUE_STRING_ARRAY(zbee_zcl_tun_srv_tx_cmd_names); |
8354 | | |
8355 | | /*************************/ |
8356 | | /* Function Declarations */ |
8357 | | /*************************/ |
8358 | | void proto_register_zbee_zcl_tun(void); |
8359 | | void proto_reg_handoff_zbee_zcl_tun(void); |
8360 | | |
8361 | | /* Private functions prototype */ |
8362 | | |
8363 | | /*************************/ |
8364 | | /* Global Variables */ |
8365 | | /*************************/ |
8366 | | |
8367 | | /* Initialize the protocol and registered fields */ |
8368 | | static int proto_zbee_zcl_tun; |
8369 | | |
8370 | | static int hf_zbee_zcl_tun_srv_tx_cmd_id; |
8371 | | static int hf_zbee_zcl_tun_srv_rx_cmd_id; |
8372 | | static int hf_zbee_zcl_tun_attr_id; |
8373 | | static int hf_zbee_zcl_tun_attr_reporting_status; |
8374 | | static int hf_zbee_zcl_tun_attr_close_timeout; |
8375 | | static int hf_zbee_zcl_tun_protocol_id; |
8376 | | static int hf_zbee_zcl_tun_manufacturer_code; |
8377 | | static int hf_zbee_zcl_tun_flow_control_support; |
8378 | | static int hf_zbee_zcl_tun_max_in_size; |
8379 | | static int hf_zbee_zcl_tun_tunnel_id; |
8380 | | static int hf_zbee_zcl_tun_num_octets_left; |
8381 | | static int hf_zbee_zcl_tun_protocol_offset; |
8382 | | static int hf_zbee_zcl_tun_protocol_list_complete; |
8383 | | static int hf_zbee_zcl_tun_protocol_count; |
8384 | | static int hf_zbee_zcl_tun_transfer_status; |
8385 | | static int hf_zbee_zcl_tun_transfer_data_status; |
8386 | | |
8387 | | static heur_dissector_list_t zbee_zcl_tun_heur_subdissector_list; |
8388 | | |
8389 | | /* Initialize the subtree pointers */ |
8390 | | static int ett_zbee_zcl_tun; |
8391 | | |
8392 | | #define zbee_zcl_tun_protocol_names_VALUE_STRING_LIST(XXX) \ |
8393 | | XXX(ZBEE_ZCL_TUN_PROTO_DLMS, 0x00, "DLMS/COSEM (IEC 62056)" ) \ |
8394 | | XXX(ZBEE_ZCL_TUN_PROTO_IEC_61107, 0x01, "IEC 61107" ) \ |
8395 | | XXX(ZBEE_ZCL_TUN_PROTO_ANSI_C12, 0x02, "ANSI C12" ) \ |
8396 | | XXX(ZBEE_ZCL_TUN_PROTO_M_BUS, 0x03, "M-BUS" ) \ |
8397 | | XXX(ZBEE_ZCL_TUN_PROTO_SML, 0x04, "SML" ) \ |
8398 | | XXX(ZBEE_ZCL_TUN_PROTO_CLIMATE_TALK, 0x05, "ClimateTalk" ) \ |
8399 | | XXX(ZBEE_ZCL_TUN_PROTO_GB_HRGP, 0x06, "GB-HRGP" ) \ |
8400 | | XXX(ZBEE_ZCL_TUN_PROTO_IPV6, 0x07, "IPv6" ) \ |
8401 | | XXX(ZBEE_ZCL_TUN_PROTO_IPV4, 0x08, "IPv4" ) \ |
8402 | | XXX(ZBEE_ZCL_TUN_PROTO_NULL, 0x09, "null" ) \ |
8403 | | XXX(ZBEE_ZCL_TUN_PROTO_TEST, 199, "test" ) \ |
8404 | | XXX(ZBEE_ZCL_TUN_PROTO_MANUFACTURER, 200, "Manufacturer Specific" ) \ |
8405 | | XXX(ZBEE_ZCL_TUN_PROTO_RESERVED, 0xFF, "Reserved" ) |
8406 | | |
8407 | | VALUE_STRING_ENUM(zbee_zcl_tun_protocol_names); |
8408 | | VALUE_STRING_ARRAY(zbee_zcl_tun_protocol_names); |
8409 | | |
8410 | | #define zbee_zcl_tun_trans_data_status_names_VALUE_STRING_LIST(XXX) \ |
8411 | | XXX(ZBEE_ZCL_TUN_TRANS_STATUS_NO_TUNNEL, 0x00, "Tunnel ID Does Not Exist" ) \ |
8412 | | XXX(ZBEE_ZCL_TUN_TRANS_STATUS_WRONG_DEV, 0x01, "Wrong Device" ) \ |
8413 | | XXX(ZBEE_ZCL_TUN_TRANS_STATUS_OVERFLOW, 0x02, "Data Overflow" ) |
8414 | | |
8415 | | VALUE_STRING_ENUM(zbee_zcl_tun_trans_data_status_names); |
8416 | | VALUE_STRING_ARRAY(zbee_zcl_tun_trans_data_status_names); |
8417 | | |
8418 | | #define zbee_zcl_tun_status_names_VALUE_STRING_LIST(XXX) \ |
8419 | | XXX(ZBEE_ZCL_TUN_STATUS_SUCCESS, 0x00, "Success" ) \ |
8420 | | XXX(ZBEE_ZCL_TUN_STATUS_BUSY, 0x01, "Busy" ) \ |
8421 | | XXX(ZBEE_ZCL_TUN_STATUS_NO_MORE_IDS, 0x02, "No More Tunnel IDs" ) \ |
8422 | | XXX(ZBEE_ZCL_TUN_STATUS_PROTO_NOT_SUPP, 0x03, "Protocol Not Supported" ) \ |
8423 | | XXX(ZBEE_ZCL_TUN_STATUS_FLOW_CONTROL_NOT_SUPP, 0x04, "Flow Control Not Supported" ) |
8424 | | |
8425 | | VALUE_STRING_ENUM(zbee_zcl_tun_status_names); |
8426 | | VALUE_STRING_ARRAY(zbee_zcl_tun_status_names); |
8427 | | |
8428 | | /*************************/ |
8429 | | /* Function Bodies */ |
8430 | | /*************************/ |
8431 | | |
8432 | | /** |
8433 | | *This function is called by ZCL foundation dissector in order to decode |
8434 | | * |
8435 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8436 | | *@param tvb pointer to buffer containing raw packet. |
8437 | | *@param offset pointer to buffer offset |
8438 | | *@param attr_id attribute identifier |
8439 | | *@param data_type attribute data type |
8440 | | *@param client_attr ZCL client |
8441 | | */ |
8442 | | static void |
8443 | | dissect_zcl_tun_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
8444 | 1.09k | { |
8445 | 1.09k | switch (attr_id) { |
8446 | | /* cluster specific attributes */ |
8447 | 199 | case ZBEE_ZCL_ATTR_ID_TUN_CLOSE_TIMEOUT: |
8448 | 199 | proto_tree_add_item(tree, hf_zbee_zcl_tun_attr_close_timeout, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8449 | 199 | *offset += 2; |
8450 | 199 | break; |
8451 | | |
8452 | | /* applies to all SE clusters */ |
8453 | 15 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_TUN: |
8454 | 15 | proto_tree_add_item(tree, hf_zbee_zcl_tun_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
8455 | 15 | *offset += 1; |
8456 | 15 | break; |
8457 | | |
8458 | 885 | default: /* Catch all */ |
8459 | 885 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
8460 | 885 | break; |
8461 | 1.09k | } |
8462 | 1.09k | } /*dissect_zcl_ias_zone_attr_data*/ |
8463 | | |
8464 | | /** |
8465 | | *This function manages the Request Tunnel payload |
8466 | | * |
8467 | | *@param tvb pointer to buffer containing raw packet. |
8468 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8469 | | *@param offset pointer to offset from caller |
8470 | | */ |
8471 | | static void |
8472 | | dissect_zcl_tun_request_tunnel(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8473 | 0 | { |
8474 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_protocol_id, tvb, *offset, 1, ENC_NA); |
8475 | 0 | *offset += 1; |
8476 | |
|
8477 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_manufacturer_code, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8478 | 0 | *offset += 2; |
8479 | |
|
8480 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_flow_control_support, tvb, *offset, 1, ENC_NA); |
8481 | 0 | *offset += 1; |
8482 | |
|
8483 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_max_in_size, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8484 | 0 | *offset += 2; |
8485 | 0 | } |
8486 | | |
8487 | | /** |
8488 | | *This function manages the Close Tunnel payload |
8489 | | * |
8490 | | *@param tvb pointer to buffer containing raw packet. |
8491 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8492 | | *@param offset pointer to offset from caller |
8493 | | */ |
8494 | | static void |
8495 | | dissect_zcl_tun_close_tunnel(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8496 | 1 | { |
8497 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8498 | 1 | *offset += 2; |
8499 | 1 | } |
8500 | | |
8501 | | /** |
8502 | | *This function manages the Transfer Data payload |
8503 | | * |
8504 | | *@param tvb pointer to buffer containing raw packet. |
8505 | | *@param pinfo pointer to packet information fields |
8506 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8507 | | *@param offset pointer to offset from caller |
8508 | | */ |
8509 | | static void |
8510 | | dissect_zcl_tun_transfer_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned *offset) |
8511 | 1 | { |
8512 | 1 | int length; |
8513 | 1 | heur_dtbl_entry_t *hdtbl_entry; |
8514 | 1 | tvbuff_t *data_tvb; |
8515 | 1 | proto_tree *root_tree = proto_tree_get_root(tree); |
8516 | | |
8517 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8518 | 1 | *offset += 2; |
8519 | | |
8520 | 1 | length = tvb_reported_length_remaining(tvb, *offset); |
8521 | 1 | data_tvb = tvb_new_subset_remaining(tvb, *offset); |
8522 | 1 | *offset += length; |
8523 | | |
8524 | 1 | if (dissector_try_heuristic(zbee_zcl_tun_heur_subdissector_list, data_tvb, pinfo, root_tree, &hdtbl_entry, NULL)) { |
8525 | 0 | return; |
8526 | 0 | } |
8527 | | |
8528 | 1 | call_data_dissector(data_tvb, pinfo, root_tree); |
8529 | 1 | } |
8530 | | |
8531 | | /** |
8532 | | *This function manages the Transfer Data Error payload |
8533 | | * |
8534 | | *@param tvb pointer to buffer containing raw packet. |
8535 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8536 | | *@param offset pointer to offset from caller |
8537 | | */ |
8538 | | static void |
8539 | | dissect_zcl_tun_transfer_data_error(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8540 | 0 | { |
8541 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8542 | 0 | *offset += 2; |
8543 | |
|
8544 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_transfer_data_status, tvb, *offset, 1, ENC_NA); |
8545 | 0 | *offset += 1; |
8546 | 0 | } |
8547 | | |
8548 | | /** |
8549 | | *This function manages the Ack Transfer Data payload |
8550 | | * |
8551 | | *@param tvb pointer to buffer containing raw packet. |
8552 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8553 | | *@param offset pointer to offset from caller |
8554 | | */ |
8555 | | static void |
8556 | | dissect_zcl_tun_ack_transfer_data(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8557 | 0 | { |
8558 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8559 | 0 | *offset += 2; |
8560 | |
|
8561 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_num_octets_left, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8562 | 0 | *offset += 2; |
8563 | 0 | } |
8564 | | |
8565 | | /** |
8566 | | *This function manages the Ready Data payload |
8567 | | * |
8568 | | *@param tvb pointer to buffer containing raw packet. |
8569 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8570 | | *@param offset pointer to offset from caller |
8571 | | */ |
8572 | | static void |
8573 | | dissect_zcl_tun_ready_data(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8574 | 0 | { |
8575 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8576 | 0 | *offset += 2; |
8577 | |
|
8578 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_num_octets_left, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8579 | 0 | *offset += 2; |
8580 | 0 | } |
8581 | | |
8582 | | /** |
8583 | | *This function manages the Get Supported Tunnel Protocols payload |
8584 | | * |
8585 | | *@param tvb pointer to buffer containing raw packet. |
8586 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8587 | | *@param offset pointer to offset from caller |
8588 | | */ |
8589 | | static void |
8590 | | dissect_zcl_tun_get_supported(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8591 | 0 | { |
8592 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_protocol_offset, tvb, *offset, 1, ENC_NA); |
8593 | 0 | *offset += 1; |
8594 | 0 | } |
8595 | | |
8596 | | /** |
8597 | | *This function manages the Request Tunnel Response payload |
8598 | | * |
8599 | | *@param tvb pointer to buffer containing raw packet. |
8600 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8601 | | *@param offset pointer to offset from caller |
8602 | | */ |
8603 | | static void |
8604 | | dissect_zcl_tun_request_tunnel_rsp(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8605 | 1 | { |
8606 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8607 | 1 | *offset += 2; |
8608 | | |
8609 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_transfer_status, tvb, *offset, 1, ENC_NA); |
8610 | 1 | *offset += 1; |
8611 | | |
8612 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_max_in_size, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8613 | 1 | *offset += 2; |
8614 | 1 | } |
8615 | | |
8616 | | /** |
8617 | | *This function manages the Supported Tunnel Protocols Response payload |
8618 | | * |
8619 | | *@param tvb pointer to buffer containing raw packet. |
8620 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8621 | | *@param offset pointer to offset from caller |
8622 | | */ |
8623 | | static void |
8624 | | dissect_zcl_tun_get_supported_rsp(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8625 | 0 | { |
8626 | 0 | uint16_t mfg_code; |
8627 | |
|
8628 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_protocol_list_complete, tvb, *offset, 1, ENC_NA); |
8629 | 0 | *offset += 1; |
8630 | |
|
8631 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_protocol_count, tvb, *offset, 1, ENC_NA); |
8632 | 0 | *offset += 1; |
8633 | |
|
8634 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0) { |
8635 | 0 | mfg_code = tvb_get_letohs(tvb, *offset); |
8636 | 0 | if (mfg_code == 0xFFFF) { |
8637 | 0 | proto_tree_add_uint_format(tree, hf_zbee_zcl_tun_manufacturer_code, tvb, *offset, 2, mfg_code, "Standard Protocol (Mfg Code %#x)", mfg_code); |
8638 | 0 | } |
8639 | 0 | else { |
8640 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_manufacturer_code, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8641 | 0 | } |
8642 | 0 | *offset += 2; |
8643 | |
|
8644 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_tun_protocol_id, tvb, *offset, 1, ENC_NA); |
8645 | 0 | *offset += 1; |
8646 | 0 | } |
8647 | 0 | } |
8648 | | |
8649 | | /** |
8650 | | *This function manages the Tunnel Closure Notification payload |
8651 | | * |
8652 | | *@param tvb pointer to buffer containing raw packet. |
8653 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8654 | | *@param offset pointer to offset from caller |
8655 | | */ |
8656 | | static void |
8657 | | dissect_zcl_tun_closure_notify(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
8658 | 1 | { |
8659 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_tun_tunnel_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
8660 | 1 | *offset += 2; |
8661 | 1 | } |
8662 | | |
8663 | | /** |
8664 | | *ZigBee ZCL Tunneling cluster dissector for wireshark. |
8665 | | * |
8666 | | *@param tvb pointer to buffer containing raw packet. |
8667 | | *@param pinfo pointer to packet information fields |
8668 | | *@param tree pointer to data tree Wireshark uses to display packet. |
8669 | | */ |
8670 | | static int |
8671 | | dissect_zbee_zcl_tun(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
8672 | 7 | { |
8673 | 7 | proto_tree *payload_tree; |
8674 | 7 | zbee_zcl_packet *zcl; |
8675 | 7 | unsigned offset = 0; |
8676 | 7 | uint8_t cmd_id; |
8677 | 7 | int rem_len; |
8678 | | |
8679 | | /* Reject the packet if data is NULL */ |
8680 | 7 | if (data == NULL) |
8681 | 0 | return 0; |
8682 | 7 | zcl = (zbee_zcl_packet *)data; |
8683 | 7 | cmd_id = zcl->cmd_id; |
8684 | | |
8685 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
8686 | 7 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
8687 | | /* Append the command name to the info column. */ |
8688 | 4 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
8689 | 4 | val_to_str_const(cmd_id, zbee_zcl_tun_srv_rx_cmd_names, "Unknown Command"), |
8690 | 4 | zcl->tran_seqno); |
8691 | | |
8692 | | /* Add the command ID. */ |
8693 | 4 | proto_tree_add_uint(tree, hf_zbee_zcl_tun_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
8694 | | |
8695 | | /* Check is this command has a payload, than add the payload tree */ |
8696 | 4 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
8697 | 4 | if (rem_len > 0) { |
8698 | 4 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_tun, NULL, "Payload"); |
8699 | | |
8700 | | /* Call the appropriate command dissector */ |
8701 | 4 | switch (cmd_id) { |
8702 | | |
8703 | 0 | case ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL: |
8704 | 0 | dissect_zcl_tun_request_tunnel(tvb, payload_tree, &offset); |
8705 | 0 | break; |
8706 | | |
8707 | 1 | case ZBEE_ZCL_CMD_ID_TUN_CLOSE_TUNNEL: |
8708 | 1 | dissect_zcl_tun_close_tunnel(tvb, payload_tree, &offset); |
8709 | 1 | break; |
8710 | | |
8711 | 1 | case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA: |
8712 | 1 | dissect_zcl_tun_transfer_data(tvb, pinfo, payload_tree, &offset); |
8713 | 1 | break; |
8714 | | |
8715 | 0 | case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR: |
8716 | 0 | dissect_zcl_tun_transfer_data_error(tvb, payload_tree, &offset); |
8717 | 0 | break; |
8718 | | |
8719 | 0 | case ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA: |
8720 | 0 | dissect_zcl_tun_ack_transfer_data(tvb, payload_tree, &offset); |
8721 | 0 | break; |
8722 | | |
8723 | 0 | case ZBEE_ZCL_CMD_ID_TUN_READY_DATA: |
8724 | 0 | dissect_zcl_tun_ready_data(tvb, payload_tree, &offset); |
8725 | 0 | break; |
8726 | | |
8727 | 0 | case ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS: |
8728 | 0 | dissect_zcl_tun_get_supported(tvb, payload_tree, &offset); |
8729 | 0 | break; |
8730 | | |
8731 | 2 | default: |
8732 | 2 | break; |
8733 | 4 | } |
8734 | 4 | } |
8735 | 4 | } |
8736 | 3 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
8737 | | /* Append the command name to the info column. */ |
8738 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
8739 | 3 | val_to_str_const(cmd_id, zbee_zcl_tun_srv_tx_cmd_names, "Unknown Command"), |
8740 | 3 | zcl->tran_seqno); |
8741 | | |
8742 | | /* Add the command ID. */ |
8743 | 3 | proto_tree_add_uint(tree, hf_zbee_zcl_tun_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
8744 | | |
8745 | | /* Check is this command has a payload, than add the payload tree */ |
8746 | 3 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
8747 | 3 | if (rem_len > 0) { |
8748 | 3 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_tun, NULL, "Payload"); |
8749 | | |
8750 | | /* Call the appropriate command dissector */ |
8751 | 3 | switch (cmd_id) { |
8752 | | |
8753 | 1 | case ZBEE_ZCL_CMD_ID_TUN_REQUEST_TUNNEL_RSP: |
8754 | 1 | dissect_zcl_tun_request_tunnel_rsp(tvb, payload_tree, &offset); |
8755 | 1 | break; |
8756 | | |
8757 | 0 | case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_TX: |
8758 | 0 | dissect_zcl_tun_transfer_data(tvb, pinfo, payload_tree, &offset); |
8759 | 0 | break; |
8760 | | |
8761 | 0 | case ZBEE_ZCL_CMD_ID_TUN_TRANSFER_DATA_ERROR_TX: |
8762 | 0 | dissect_zcl_tun_transfer_data_error(tvb, payload_tree, &offset); |
8763 | 0 | break; |
8764 | | |
8765 | 0 | case ZBEE_ZCL_CMD_ID_TUN_ACK_TRANSFER_DATA_TX: |
8766 | 0 | dissect_zcl_tun_ack_transfer_data(tvb, payload_tree, &offset); |
8767 | 0 | break; |
8768 | | |
8769 | 0 | case ZBEE_ZCL_CMD_ID_TUN_READY_DATA_TX: |
8770 | 0 | dissect_zcl_tun_ready_data(tvb, payload_tree, &offset); |
8771 | 0 | break; |
8772 | | |
8773 | 0 | case ZBEE_ZCL_CMD_ID_TUN_GET_SUPPORTED_PROTOCOLS_RSP: |
8774 | 0 | dissect_zcl_tun_get_supported_rsp(tvb, payload_tree, &offset); |
8775 | 0 | break; |
8776 | | |
8777 | 1 | case ZBEE_ZCL_CMD_ID_TUN_CLOSURE_NOTIFY: |
8778 | 1 | dissect_zcl_tun_closure_notify(tvb, payload_tree, &offset); |
8779 | 1 | break; |
8780 | | |
8781 | 1 | default: |
8782 | 1 | break; |
8783 | 3 | } |
8784 | 3 | } |
8785 | 3 | } |
8786 | | |
8787 | 7 | return tvb_captured_length(tvb); |
8788 | 7 | } /*dissect_zbee_zcl_tun*/ |
8789 | | |
8790 | | /** |
8791 | | *This function registers the ZCL Tunneling dissector |
8792 | | * |
8793 | | */ |
8794 | | void |
8795 | | proto_register_zbee_zcl_tun(void) |
8796 | 15 | { |
8797 | 15 | static hf_register_info hf[] = { |
8798 | | |
8799 | 15 | { &hf_zbee_zcl_tun_attr_id, |
8800 | 15 | { "Attribute", "zbee_zcl_se.tun.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_tun_attr_names), |
8801 | 15 | 0x0, NULL, HFILL } }, |
8802 | | |
8803 | 15 | { &hf_zbee_zcl_tun_attr_reporting_status, /* common to all SE clusters */ |
8804 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.tun.attr.attr_reporting_status", |
8805 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
8806 | | |
8807 | 15 | { &hf_zbee_zcl_tun_attr_close_timeout, |
8808 | 15 | { "Close Tunnel Timeout", "zbee_zcl_se.tun.attr.close_tunnel", FT_UINT16, BASE_DEC, NULL, |
8809 | 15 | 0x0, NULL, HFILL } }, |
8810 | | |
8811 | 15 | { &hf_zbee_zcl_tun_srv_tx_cmd_id, |
8812 | 15 | { "Command", "zbee_zcl_se.tun.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_tun_srv_tx_cmd_names), |
8813 | 15 | 0x00, NULL, HFILL } }, |
8814 | | |
8815 | 15 | { &hf_zbee_zcl_tun_srv_rx_cmd_id, |
8816 | 15 | { "Command", "zbee_zcl_se.tun.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_tun_srv_rx_cmd_names), |
8817 | 15 | 0x00, NULL, HFILL } }, |
8818 | | |
8819 | 15 | { &hf_zbee_zcl_tun_protocol_id, |
8820 | 15 | { "Protocol ID", "zbee_zcl_se.tun.protocol_id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_tun_protocol_names), |
8821 | 15 | 0x00, NULL, HFILL } }, |
8822 | | |
8823 | 15 | { &hf_zbee_zcl_tun_manufacturer_code, |
8824 | 15 | { "Manufacturer Code", "zbee_zcl_se.tun.manufacturer_code", FT_UINT16, BASE_HEX, VALS(zbee_mfr_code_names), |
8825 | 15 | 0x00, NULL, HFILL } }, |
8826 | | |
8827 | 15 | { &hf_zbee_zcl_tun_flow_control_support, |
8828 | 15 | { "Flow Control Supported", "zbee_zcl_se.tun.flow_control_supported", FT_BOOLEAN, BASE_NONE, NULL, |
8829 | 15 | 0x00, NULL, HFILL } }, |
8830 | | |
8831 | 15 | { &hf_zbee_zcl_tun_max_in_size, |
8832 | 15 | { "Max Incoming Transfer Size", "zbee_zcl_se.tun.max_in_transfer_size", FT_UINT16, BASE_HEX, NULL, |
8833 | 15 | 0x00, NULL, HFILL } }, |
8834 | | |
8835 | 15 | { &hf_zbee_zcl_tun_tunnel_id, |
8836 | 15 | { "Tunnel Id", "zbee_zcl_se.tun.tunnel_id", FT_UINT16, BASE_HEX, NULL, |
8837 | 15 | 0x00, NULL, HFILL } }, |
8838 | | |
8839 | 15 | { &hf_zbee_zcl_tun_num_octets_left, |
8840 | 15 | { "Num Octets Left", "zbee_zcl_se.tun.octets_left", FT_UINT16, BASE_HEX, NULL, |
8841 | 15 | 0x00, NULL, HFILL } }, |
8842 | | |
8843 | 15 | { &hf_zbee_zcl_tun_protocol_offset, |
8844 | 15 | { "Protocol Offset", "zbee_zcl_se.tun.protocol_offset", FT_UINT8, BASE_HEX, NULL, |
8845 | 15 | 0x00, NULL, HFILL } }, |
8846 | | |
8847 | 15 | { &hf_zbee_zcl_tun_transfer_status, |
8848 | 15 | { "Transfer Status", "zbee_zcl_se.tun.transfer_status", FT_UINT8, BASE_HEX, VALS(zbee_zcl_tun_status_names), |
8849 | 15 | 0x00, NULL, HFILL } }, |
8850 | | |
8851 | 15 | { &hf_zbee_zcl_tun_transfer_data_status, |
8852 | 15 | { "Transfer Data Status", "zbee_zcl_se.tun.transfer_data_status", FT_UINT8, BASE_HEX, VALS(zbee_zcl_tun_trans_data_status_names), |
8853 | 15 | 0x00, NULL, HFILL } }, |
8854 | | |
8855 | 15 | { &hf_zbee_zcl_tun_protocol_count, |
8856 | 15 | { "Protocol Count", "zbee_zcl_se.tun.protocol_count", FT_UINT8, BASE_HEX, NULL, |
8857 | 15 | 0x00, NULL, HFILL } }, |
8858 | | |
8859 | 15 | { &hf_zbee_zcl_tun_protocol_list_complete, |
8860 | 15 | { "List Complete", "zbee_zcl_se.tun.protocol_list_complete", FT_BOOLEAN, BASE_NONE, NULL, |
8861 | 15 | 0x00, NULL, HFILL } }, |
8862 | | |
8863 | 15 | }; |
8864 | | |
8865 | | /* ZCL Tunneling subtrees */ |
8866 | 15 | int *ett[] = { |
8867 | 15 | &ett_zbee_zcl_tun, |
8868 | 15 | }; |
8869 | | |
8870 | | /* Register the ZigBee ZCL Tunneling cluster protocol name and description */ |
8871 | 15 | proto_zbee_zcl_tun = proto_register_protocol("ZigBee ZCL Tunneling", "ZCL Tunneling", ZBEE_PROTOABBREV_ZCL_TUN); |
8872 | 15 | proto_register_field_array(proto_zbee_zcl_tun, hf, array_length(hf)); |
8873 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
8874 | | |
8875 | | /* Make heuristic dissectors possible */ |
8876 | 15 | zbee_zcl_tun_heur_subdissector_list = register_heur_dissector_list_with_description(ZBEE_PROTOABBREV_ZCL_TUN, "ZigBee Transfer Data", proto_zbee_zcl_tun); |
8877 | | |
8878 | | /* Register the ZigBee ZCL Tunneling dissector. */ |
8879 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_TUN, dissect_zbee_zcl_tun, proto_zbee_zcl_tun); |
8880 | | |
8881 | 15 | } /* proto_register_zbee_zcl_tun */ |
8882 | | |
8883 | | /** |
8884 | | *Hands off the ZCL Tunneling dissector. |
8885 | | * |
8886 | | */ |
8887 | | void |
8888 | | proto_reg_handoff_zbee_zcl_tun(void) |
8889 | 15 | { |
8890 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_TUN, |
8891 | 15 | proto_zbee_zcl_tun, |
8892 | 15 | ett_zbee_zcl_tun, |
8893 | 15 | ZBEE_ZCL_CID_TUNNELING, |
8894 | 15 | ZBEE_MFG_CODE_NONE, |
8895 | 15 | hf_zbee_zcl_tun_attr_id, |
8896 | 15 | -1, |
8897 | 15 | hf_zbee_zcl_tun_srv_rx_cmd_id, |
8898 | 15 | hf_zbee_zcl_tun_srv_tx_cmd_id, |
8899 | 15 | dissect_zcl_tun_attr_data |
8900 | 15 | ); |
8901 | 15 | } /* proto_reg_handoff_zbee_zcl_tun */ |
8902 | | |
8903 | | |
8904 | | /* ########################################################################## */ |
8905 | | /* #### (0x0705) PREPAYMENT CLUSTER ########################################## */ |
8906 | | /* ########################################################################## */ |
8907 | | |
8908 | | /* Attributes */ |
8909 | | #define zbee_zcl_pp_attr_names_VALUE_STRING_LIST(XXX) \ |
8910 | | /* Prepayment Information Set */ \ |
8911 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PAYMENT_CONTROL_CONFIGURATION, 0x0000, "Payment Control Configuration" ) \ |
8912 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_REMAINING, 0x0001, "Credit Remaining" ) \ |
8913 | | XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_REMAINING, 0x0002, "Emergency Credit Remaining" ) \ |
8914 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_STATUS, 0x0003, "Credit Status" ) \ |
8915 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CREDIT_REMAINING_TIMESTAMP, 0x0004, "Credit Remaining Timestamp" ) \ |
8916 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ACCUMULATED_DEBT, 0x0005, "Accumulated Debt" ) \ |
8917 | | XXX(ZBEE_ZCL_ATTR_ID_PP_OVERALL_DEBT_CAP, 0x0006, "Overall Debt Cap" ) \ |
8918 | | XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_LIMIT, 0x0010, "Emergency Credit Limit / Allowance" ) \ |
8919 | | XXX(ZBEE_ZCL_ATTR_ID_PP_EMERGENCY_CREDIT_THRESHOLD, 0x0011, "Emergency Credit Threshold" ) \ |
8920 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOTAL_CREDIT_ADDED, 0x0020, "Total Credit Added" ) \ |
8921 | | XXX(ZBEE_ZCL_ATTR_ID_PP_MAX_CREDIT_LIMIT, 0x0021, "Max Credit Limit" ) \ |
8922 | | XXX(ZBEE_ZCL_ATTR_ID_PP_MAX_CREDIT_PER_TOPUP, 0x0022, "Max Credit Per Top Up" ) \ |
8923 | | XXX(ZBEE_ZCL_ATTR_ID_PP_FRIENDLY_CREDIT_WARNING, 0x0030, "Friendly Credit Warning" ) \ |
8924 | | XXX(ZBEE_ZCL_ATTR_ID_PP_LOW_CREDIT_WARNING, 0x0031, "Low Credit Warning" ) \ |
8925 | | XXX(ZBEE_ZCL_ATTR_ID_PP_IHD_LOW_CREDIT_WARNING, 0x0032, "IHD Low Credit Warning" ) \ |
8926 | | XXX(ZBEE_ZCL_ATTR_ID_PP_INTERRUPT_SUSPEND_TIME, 0x0033, "Interrupt Suspend Time" ) \ |
8927 | | XXX(ZBEE_ZCL_ATTR_ID_PP_REMAINING_FRIENDLY_CREDIT_TIME, 0x0034, "Remaining Friendly Credit Time" ) \ |
8928 | | XXX(ZBEE_ZCL_ATTR_ID_PP_NEXT_FRIENDLY_CREDIT_PERIOD, 0x0035, "Next Friendly Credit Period" ) \ |
8929 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CUT_OFF_VALUE, 0x0040, "Cut Off Value" ) \ |
8930 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOKEN_CARRIER_ID, 0x0080, "Token Carrier ID" ) \ |
8931 | | /* Top-up Set */ \ |
8932 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_1, 0x0100, "Top-up Date/time #1" ) \ |
8933 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_1, 0x0101, "Top-up Amount #1" ) \ |
8934 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_1, 0x0102, "Originating Device #1" ) \ |
8935 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_1, 0x0103, "Top-up Code #1" ) \ |
8936 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_2, 0x0110, "Top-up Date/time #2" ) \ |
8937 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_2, 0x0111, "Top-up Amount #2" ) \ |
8938 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_2, 0x0112, "Originating Device #2" ) \ |
8939 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_2, 0x0113, "Top-up Code #2" ) \ |
8940 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_3, 0x0120, "Top-up Date/time #3" ) \ |
8941 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_3, 0x0121, "Top-up Amount #3" ) \ |
8942 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_3, 0x0122, "Originating Device #3" ) \ |
8943 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_3, 0x0123, "Top-up Code #3" ) \ |
8944 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_4, 0x0130, "Top-up Date/time #4" ) \ |
8945 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_4, 0x0131, "Top-up Amount #4" ) \ |
8946 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_4, 0x0132, "Originating Device #4" ) \ |
8947 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_4, 0x0133, "Top-up Code #4" ) \ |
8948 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_DATE_TIME_5, 0x0140, "Top-up Date/time #5" ) \ |
8949 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_AMOUNT_5, 0x0141, "Top-up Amount #5" ) \ |
8950 | | XXX(ZBEE_ZCL_ATTR_ID_PP_ORIGINATING_DEVICE_5, 0x0142, "Originating Device #5" ) \ |
8951 | | XXX(ZBEE_ZCL_ATTR_ID_PP_TOPUP_CODE_5, 0x0143, "Top-up Code #5" ) \ |
8952 | | /* Debt Set */ \ |
8953 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_1, 0x0210, "Debt Label #1" ) \ |
8954 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_1, 0x0211, "Debt Amount #1" ) \ |
8955 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_1, 0x0212, "Debt Recovery Method #1" ) \ |
8956 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_1, 0x0213, "Debt Recovery Start Time #1" ) \ |
8957 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_1, 0x0214, "Debt Recovery Collection Time #1" ) \ |
8958 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_1, 0x0216, "Debt Recovery Frequency #1" ) \ |
8959 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_1, 0x0217, "Debt Recovery Amount #1" ) \ |
8960 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1, 0x0219, "Debt Recovery Top Up Percentage #1" ) \ |
8961 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_2, 0x0220, "Debt Label #2" ) \ |
8962 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_2, 0x0221, "Debt Amount #2" ) \ |
8963 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_2, 0x0222, "Debt Recovery Method #2" ) \ |
8964 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_2, 0x0223, "Debt Recovery Start Time #2" ) \ |
8965 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_2, 0x0224, "Debt Recovery Collection Time #2" ) \ |
8966 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_2, 0x0226, "Debt Recovery Frequency #2" ) \ |
8967 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_2, 0x0227, "Debt Recovery Amount #2" ) \ |
8968 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2, 0x0229, "Debt Recovery Top Up Percentage #2" ) \ |
8969 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_LABEL_3, 0x0230, "Debt Label #3" ) \ |
8970 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_AMOUNT_3, 0x0231, "Debt Amount #3" ) \ |
8971 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_METHOD_3, 0x0232, "Debt Recovery Method #3" ) \ |
8972 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_START_TIME_3, 0x0233, "Debt Recovery Start Time #3" ) \ |
8973 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_COLLECTION_TIME_3, 0x0234, "Debt Recovery Collection Time #3" ) \ |
8974 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_FREQ_3, 0x0236, "Debt Recovery Frequency #3" ) \ |
8975 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_AMOUNT_3, 0x0237, "Debt Recovery Amount #3" ) \ |
8976 | | XXX(ZBEE_ZCL_ATTR_ID_PP_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3, 0x0239, "Debt Recovery Top Up Percentage #3" ) \ |
8977 | | /* Alarm Set */ \ |
8978 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAYMENT_ALARM_STATUS, 0x0400, "Prepayment Alarm Status" ) \ |
8979 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_GENERIC_ALARM_MASK, 0x0401, "Prepay Generic Alarm Mask" ) \ |
8980 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_SWITCH_ALARM_MASK, 0x0402, "Prepay Switch Alarm Mask" ) \ |
8981 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREPAY_EVENT_ALARM_MASK, 0x0403, "Prepay Event Alarm Mask" ) \ |
8982 | | /* Historical Cost Consumption Information Set */ \ |
8983 | | XXX(ZBEE_ZCL_ATTR_ID_PP_HISTORICAL_COST_CON_FORMAT, 0x0500, "Historical Cost Consumption Formatting" ) \ |
8984 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CONSUMPTION_UNIT_OF_MEASUREMENT, 0x0501, "Consumption Unit of Measurement" ) \ |
8985 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENCY_SCALING_FACTOR, 0x0502, "Currency Scaling Factor" ) \ |
8986 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENCY, 0x0503, "Currency" ) \ |
8987 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_DAY_COST_CON_DELIVERED, 0x051C, "Current Day Cost Consumption Delivered" ) \ |
8988 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_DAY_COST_CON_RECEIVED, 0x051D, "Current Day Cost Consumption Received" ) \ |
8989 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_COST_CON_DELIVERED, 0x051E, "Previous Day Cost Consumption Delivered" ) \ |
8990 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_COST_CON_RECEIVED, 0x051F, "Previous Day Cost Consumption Received" ) \ |
8991 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_2_COST_CON_DELIVERED, 0x0520, "Previous Day 2 Cost Consumption Delivered" ) \ |
8992 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_2_COST_CON_RECEIVED, 0x0521, "Previous Day 2 Cost Consumption Received" ) \ |
8993 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_3_COST_CON_DELIVERED, 0x0522, "Previous Day 3 Cost Consumption Delivered" ) \ |
8994 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_3_COST_CON_RECEIVED, 0x0523, "Previous Day 3 Cost Consumption Received" ) \ |
8995 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_4_COST_CON_DELIVERED, 0x0524, "Previous Day 4 Cost Consumption Delivered" ) \ |
8996 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_4_COST_CON_RECEIVED, 0x0525, "Previous Day 4 Cost Consumption Received" ) \ |
8997 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_5_COST_CON_DELIVERED, 0x0526, "Previous Day 5 Cost Consumption Delivered" ) \ |
8998 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_5_COST_CON_RECEIVED, 0x0527, "Previous Day 5 Cost Consumption Received" ) \ |
8999 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_6_COST_CON_DELIVERED, 0x0528, "Previous Day 6 Cost Consumption Delivered" ) \ |
9000 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_6_COST_CON_RECEIVED, 0x0529, "Previous Day 6 Cost Consumption Received" ) \ |
9001 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_7_COST_CON_DELIVERED, 0x052A, "Previous Day 7 Cost Consumption Delivered" ) \ |
9002 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_7_COST_CON_RECEIVED, 0x052B, "Previous Day 7 Cost Consumption Received" ) \ |
9003 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_8_COST_CON_DELIVERED, 0x052C, "Previous Day 8 Cost Consumption Delivered" ) \ |
9004 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_DAY_8_COST_CON_RECEIVED, 0x052D, "Previous Day 8 Cost Consumption Received" ) \ |
9005 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_WEEK_COST_CON_DELIVERED, 0x0530, "Current Week Cost Consumption Delivered" ) \ |
9006 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_WEEK_COST_CON_RECEIVED, 0x0531, "Current Week Cost Consumption Received" ) \ |
9007 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_COST_CON_DELIVERED, 0x0532, "Previous Week Cost Consumption Delivered" ) \ |
9008 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_COST_CON_RECEIVED, 0x0533, "Previous Week Cost Consumption Received" ) \ |
9009 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_2_COST_CON_DELIVERED, 0x0534, "Previous Week 2 Cost Consumption Delivered" ) \ |
9010 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_2_COST_CON_RECEIVED, 0x0535, "Previous Week 2 Cost Consumption Received" ) \ |
9011 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_3_COST_CON_DELIVERED, 0x0536, "Previous Week 3 Cost Consumption Delivered" ) \ |
9012 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_3_COST_CON_RECEIVED, 0x0537, "Previous Week 3 Cost Consumption Received" ) \ |
9013 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_4_COST_CON_DELIVERED, 0x0538, "Previous Week 4 Cost Consumption Delivered" ) \ |
9014 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_4_COST_CON_RECEIVED, 0x0539, "Previous Week 4 Cost Consumption Received" ) \ |
9015 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_5_COST_CON_DELIVERED, 0x053A, "Previous Week 5 Cost Consumption Delivered" ) \ |
9016 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_WEEK_5_COST_CON_RECEIVED, 0x053B, "Previous Week 5 Cost Consumption Received" ) \ |
9017 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_MON_COST_CON_DELIVERED, 0x0540, "Current Month Cost Consumption Delivered" ) \ |
9018 | | XXX(ZBEE_ZCL_ATTR_ID_PP_CURRENT_MON_COST_CON_RECEIVED, 0x0541, "Current Month Cost Consumption Received" ) \ |
9019 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_COST_CON_DELIVERED, 0x0542, "Previous Month Cost Consumption Delivered" ) \ |
9020 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_COST_CON_RECEIVED, 0x0543, "Previous Month Cost Consumption Received" ) \ |
9021 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_2_COST_CON_DELIVERED, 0x0544, "Previous Month 2 Cost Consumption Delivered" ) \ |
9022 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_2_COST_CON_RECEIVED, 0x0545, "Previous Month 2 Cost Consumption Received" ) \ |
9023 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_3_COST_CON_DELIVERED, 0x0546, "Previous Month 3 Cost Consumption Delivered" ) \ |
9024 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_3_COST_CON_RECEIVED, 0x0547, "Previous Month 3 Cost Consumption Received" ) \ |
9025 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_4_COST_CON_DELIVERED, 0x0548, "Previous Month 4 Cost Consumption Delivered" ) \ |
9026 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_4_COST_CON_RECEIVED, 0x0549, "Previous Month 4 Cost Consumption Received" ) \ |
9027 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_5_COST_CON_DELIVERED, 0x054A, "Previous Month 5 Cost Consumption Delivered" ) \ |
9028 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_5_COST_CON_RECEIVED, 0x054B, "Previous Month 5 Cost Consumption Received" ) \ |
9029 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_6_COST_CON_DELIVERED, 0x054C, "Previous Month 6 Cost Consumption Delivered" ) \ |
9030 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_6_COST_CON_RECEIVED, 0x054D, "Previous Month 6 Cost Consumption Received" ) \ |
9031 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_7_COST_CON_DELIVERED, 0x054E, "Previous Month 7 Cost Consumption Delivered" ) \ |
9032 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_7_COST_CON_RECEIVED, 0x054F, "Previous Month 7 Cost Consumption Received" ) \ |
9033 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_8_COST_CON_DELIVERED, 0x0550, "Previous Month 8 Cost Consumption Delivered" ) \ |
9034 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_8_COST_CON_RECEIVED, 0x0551, "Previous Month 8 Cost Consumption Received" ) \ |
9035 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_9_COST_CON_DELIVERED, 0x0552, "Previous Month 9 Cost Consumption Delivered" ) \ |
9036 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_9_COST_CON_RECEIVED, 0x0553, "Previous Month 9 Cost Consumption Received" ) \ |
9037 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_10_COST_CON_DELIVERED, 0x0554, "Previous Month 10 Cost Consumption Delivered" ) \ |
9038 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_10_COST_CON_RECEIVED, 0x0555, "Previous Month 10 Cost Consumption Received" ) \ |
9039 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_11_COST_CON_DELIVERED, 0x0556, "Previous Month 11 Cost Consumption Delivered" ) \ |
9040 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_11_COST_CON_RECEIVED, 0x0557, "Previous Month 11 Cost Consumption Received" ) \ |
9041 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_12_COST_CON_DELIVERED, 0x0558, "Previous Month 12 Cost Consumption Delivered" ) \ |
9042 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_12_COST_CON_RECEIVED, 0x0559, "Previous Month 12 Cost Consumption Received" ) \ |
9043 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_13_COST_CON_DELIVERED, 0x055A, "Previous Month 13 Cost Consumption Delivered" ) \ |
9044 | | XXX(ZBEE_ZCL_ATTR_ID_PP_PREVIOUS_MON_13_COST_CON_RECEIVED, 0x055B, "Previous Month 13 Cost Consumption Received" ) \ |
9045 | | XXX(ZBEE_ZCL_ATTR_ID_PP_HISTORICAL_FREEZE_TIME, 0x055C, "Historical Freeze Time" ) \ |
9046 | | /* Smart Energy */ \ |
9047 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PP, 0xFFFE, "Attribute Reporting Status" ) |
9048 | | |
9049 | | VALUE_STRING_ENUM(zbee_zcl_pp_attr_names); |
9050 | | VALUE_STRING_ARRAY(zbee_zcl_pp_attr_names); |
9051 | | static value_string_ext zbee_zcl_pp_attr_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_pp_attr_names); |
9052 | | |
9053 | | /* Server Commands Received */ |
9054 | | #define zbee_zcl_pp_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
9055 | | XXX(ZBEE_ZCL_CMD_ID_PP_SELECT_AVAILABLE_EMERGENCY_CREDIT, 0x00, "Select Available Emergency Credit" ) \ |
9056 | | XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_DEBT, 0x02, "Change Debt" ) \ |
9057 | | XXX(ZBEE_ZCL_CMD_ID_PP_EMERGENCY_CREDIT_SETUP, 0x03, "Emergency Credit Setup" ) \ |
9058 | | XXX(ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP, 0x04, "Consumer Top Up" ) \ |
9059 | | XXX(ZBEE_ZCL_CMD_ID_PP_CREDIT_ADJUSTMENT, 0x05, "Credit Adjustment" ) \ |
9060 | | XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE, 0x06, "Change Payment Mode" ) \ |
9061 | | XXX(ZBEE_ZCL_CMD_ID_PP_GET_PREPAY_SNAPTSHOT, 0x07, "Get Prepay Snapshot" ) \ |
9062 | | XXX(ZBEE_ZCL_CMD_ID_PP_GET_TOP_UP_LOG, 0x08, "Get Top Up Log" ) \ |
9063 | | XXX(ZBEE_ZCL_CMD_ID_PP_SET_LOW_CREDIT_WARNING_LEVEL, 0x09, "Set Low Credit Warning Level" ) \ |
9064 | | XXX(ZBEE_ZCL_CMD_ID_PP_GET_DEBT_REPAYMENT_LOG, 0x0A, "Get Debt Repayment Log" ) \ |
9065 | | XXX(ZBEE_ZCL_CMD_ID_PP_SET_MAXIMUM_CREDIT_LIMIT, 0x0B, "Set Maximum Credit Limit" ) \ |
9066 | | XXX(ZBEE_ZCL_CMD_ID_PP_SET_OVERALL_DEBT_CAP, 0x0C, "Set Overall Debt Cap" ) |
9067 | | |
9068 | | VALUE_STRING_ENUM(zbee_zcl_pp_srv_rx_cmd_names); |
9069 | | VALUE_STRING_ARRAY(zbee_zcl_pp_srv_rx_cmd_names); |
9070 | | |
9071 | | /* Server Commands Generated */ |
9072 | | #define zbee_zcl_pp_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
9073 | | XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_PREPAY_SNAPSHOT, 0x01, "Publish Prepay Snapshot" ) \ |
9074 | | XXX(ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE_RESPONSE, 0x02, "Change Payment Mode Response" ) \ |
9075 | | XXX(ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP_RESPONSE, 0x03, "Consumer Top Up Response" ) \ |
9076 | | XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_TOP_UP_LOG, 0x05, "Publish Top Up Log" ) \ |
9077 | | XXX(ZBEE_ZCL_CMD_ID_PP_PUBLISH_DEBT_LOG, 0x06, "Publish Debt Log" ) |
9078 | | |
9079 | | VALUE_STRING_ENUM(zbee_zcl_pp_srv_tx_cmd_names); |
9080 | | VALUE_STRING_ARRAY(zbee_zcl_pp_srv_tx_cmd_names); |
9081 | | |
9082 | | /*************************/ |
9083 | | /* Function Declarations */ |
9084 | | /*************************/ |
9085 | | void proto_register_zbee_zcl_pp(void); |
9086 | | void proto_reg_handoff_zbee_zcl_pp(void); |
9087 | | |
9088 | | /* Command Dissector Helpers */ |
9089 | | static void dissect_zcl_pp_select_available_emergency_credit (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9090 | | static void dissect_zcl_pp_change_debt (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9091 | | static void dissect_zcl_pp_emergency_credit_setup (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9092 | | static void dissect_zcl_pp_consumer_top_up (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9093 | | static void dissect_zcl_pp_credit_adjustment (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9094 | | static void dissect_zcl_pp_change_payment_mode (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9095 | | static void dissect_zcl_pp_get_prepay_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9096 | | static void dissect_zcl_pp_get_top_up_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9097 | | static void dissect_zcl_pp_set_low_credit_warning_level (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9098 | | static void dissect_zcl_pp_get_debt_repayment_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9099 | | static void dissect_zcl_pp_set_maximum_credit_limit (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9100 | | static void dissect_zcl_pp_set_overall_debt_cap (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9101 | | static void dissect_zcl_pp_publish_prepay_snapshot (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9102 | | static void dissect_zcl_pp_change_payment_mode_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9103 | | static void dissect_zcl_pp_consumer_top_up_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9104 | | static void dissect_zcl_pp_publish_top_up_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9105 | | static void dissect_zcl_pp_publish_debt_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
9106 | | |
9107 | | /*************************/ |
9108 | | /* Global Variables */ |
9109 | | /*************************/ |
9110 | | |
9111 | | /* Initialize the protocol and registered fields */ |
9112 | | static int proto_zbee_zcl_pp; |
9113 | | |
9114 | | static int hf_zbee_zcl_pp_srv_tx_cmd_id; |
9115 | | static int hf_zbee_zcl_pp_srv_rx_cmd_id; |
9116 | | static int hf_zbee_zcl_pp_attr_id; |
9117 | | static int hf_zbee_zcl_pp_attr_reporting_status; |
9118 | | static int hf_zbee_zcl_pp_select_available_emc_cmd_issue_date_time; |
9119 | | static int hf_zbee_zcl_pp_select_available_emc_originating_device; |
9120 | | static int hf_zbee_zcl_pp_change_debt_issuer_event_id; |
9121 | | static int hf_zbee_zcl_pp_change_debt_label; |
9122 | | static int hf_zbee_zcl_pp_change_debt_amount; |
9123 | | static int hf_zbee_zcl_pp_change_debt_recovery_method; |
9124 | | static int hf_zbee_zcl_pp_change_debt_amount_type; |
9125 | | static int hf_zbee_zcl_pp_change_debt_recovery_start_time; |
9126 | | static int hf_zbee_zcl_pp_change_debt_recovery_collection_time; |
9127 | | static int hf_zbee_zcl_pp_change_debt_recovery_frequency; |
9128 | | static int hf_zbee_zcl_pp_change_debt_recovery_amount; |
9129 | | static int hf_zbee_zcl_pp_change_debt_recovery_balance_percentage; |
9130 | | static int hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id; |
9131 | | static int hf_zbee_zcl_pp_emergency_credit_setup_start_time; |
9132 | | static int hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit; |
9133 | | static int hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold; |
9134 | | static int hf_zbee_zcl_pp_consumer_top_up_originating_device; |
9135 | | static int hf_zbee_zcl_pp_consumer_top_up_top_up_code; |
9136 | | static int hf_zbee_zcl_pp_credit_adjustment_issuer_event_id; |
9137 | | static int hf_zbee_zcl_pp_credit_adjustment_start_time; |
9138 | | static int hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type; |
9139 | | static int hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value; |
9140 | | static int hf_zbee_zcl_pp_change_payment_mode_provider_id; |
9141 | | static int hf_zbee_zcl_pp_change_payment_mode_issuer_event_id; |
9142 | | static int hf_zbee_zcl_pp_change_payment_mode_implementation_date_time; |
9143 | | static int hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration; |
9144 | | static int hf_zbee_zcl_pp_change_payment_mode_cut_off_value; |
9145 | | static int hf_zbee_zcl_pp_get_prepay_snapshot_earliest_start_time; |
9146 | | static int hf_zbee_zcl_pp_get_prepay_snapshot_latest_end_time; |
9147 | | static int hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset; |
9148 | | static int hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause; |
9149 | | static int hf_zbee_zcl_pp_get_top_up_log_latest_end_time; |
9150 | | static int hf_zbee_zcl_pp_get_top_up_log_number_of_records; |
9151 | | static int hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level; |
9152 | | static int hf_zbee_zcl_pp_get_debt_repayment_log_latest_end_time; |
9153 | | static int hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts; |
9154 | | static int hf_zbee_zcl_pp_get_debt_repayment_log_debt_type; |
9155 | | static int hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id; |
9156 | | static int hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id; |
9157 | | static int hf_zbee_zcl_pp_set_maximum_credit_limit_implementation_date_time; |
9158 | | static int hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level; |
9159 | | static int hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up; |
9160 | | static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id; |
9161 | | static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id; |
9162 | | static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_implementation_date_time; |
9163 | | static int hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap; |
9164 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id; |
9165 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time; |
9166 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found; |
9167 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_command_index; |
9168 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands; |
9169 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause; |
9170 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type; |
9171 | | static int hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload; |
9172 | | static int hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit; |
9173 | | static int hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id; |
9174 | | static int hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit; |
9175 | | static int hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold; |
9176 | | static int hf_zbee_zcl_pp_consumer_top_up_response_result_type; |
9177 | | static int hf_zbee_zcl_pp_consumer_top_up_response_top_up_value; |
9178 | | static int hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up; |
9179 | | static int hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining; |
9180 | | static int hf_zbee_zcl_pp_publish_top_up_log_command_index; |
9181 | | static int hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands; |
9182 | | static int hf_zbee_zcl_pp_publish_top_up_log_top_up_code; |
9183 | | static int hf_zbee_zcl_pp_publish_top_up_log_top_up_amount; |
9184 | | static int hf_zbee_zcl_pp_publish_top_up_log_top_up_time; |
9185 | | static int hf_zbee_zcl_pp_publish_debt_log_command_index; |
9186 | | static int hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands; |
9187 | | static int hf_zbee_zcl_pp_publish_debt_log_collection_time; |
9188 | | static int hf_zbee_zcl_pp_publish_debt_log_amount_collected; |
9189 | | static int hf_zbee_zcl_pp_publish_debt_log_debt_type; |
9190 | | static int hf_zbee_zcl_pp_publish_debt_log_outstanding_debt; |
9191 | | static int hf_zbee_zcl_pp_payment_control_configuration; |
9192 | | static int hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled; |
9193 | | static int hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled; |
9194 | | static int hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled; |
9195 | | static int hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled; |
9196 | | static int hf_zbee_zcl_pp_payment_control_configuration_account_base; |
9197 | | static int hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted; |
9198 | | static int hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration; |
9199 | | static int hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration; |
9200 | | static int hf_zbee_zcl_pp_payment_control_configuration_debt_configuration; |
9201 | | static int hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration; |
9202 | | static int hf_zbee_zcl_pp_payment_control_configuration_reserved; |
9203 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_general; |
9204 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period; |
9205 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information; |
9206 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix; |
9207 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client; |
9208 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy; |
9209 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier; |
9210 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode; |
9211 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition; |
9212 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition; |
9213 | | static int hf_zbee_zcl_pp_snapshot_payload_cause_reserved; |
9214 | | |
9215 | | static int* const zbee_zcl_pp_payment_control_configuration_flags[] = { |
9216 | | &hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled, |
9217 | | &hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled, |
9218 | | &hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled, |
9219 | | &hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled, |
9220 | | &hf_zbee_zcl_pp_payment_control_configuration_account_base, |
9221 | | &hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted, |
9222 | | &hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration, |
9223 | | &hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration, |
9224 | | &hf_zbee_zcl_pp_payment_control_configuration_debt_configuration, |
9225 | | &hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration, |
9226 | | &hf_zbee_zcl_pp_payment_control_configuration_reserved, |
9227 | | NULL |
9228 | | }; |
9229 | | |
9230 | | static int* const zbee_zcl_pp_snapshot_payload_cause_flags[] = { |
9231 | | &hf_zbee_zcl_pp_snapshot_payload_cause_general, |
9232 | | &hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period, |
9233 | | &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information, |
9234 | | &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix, |
9235 | | &hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client, |
9236 | | &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy, |
9237 | | &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier, |
9238 | | &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode, |
9239 | | &hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition, |
9240 | | &hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition, |
9241 | | &hf_zbee_zcl_pp_snapshot_payload_cause_reserved, |
9242 | | NULL |
9243 | | }; |
9244 | | |
9245 | | /* Initialize the subtree pointers */ |
9246 | 15 | #define ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT 3 |
9247 | 465 | #define ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT 30 |
9248 | 465 | #define ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT 30 |
9249 | | #define ZBEE_ZCL_SE_PP_NUM_TOTAL_ETT (ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT + \ |
9250 | | ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT + \ |
9251 | | ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT) |
9252 | | |
9253 | | static int ett_zbee_zcl_pp; |
9254 | | static int ett_zbee_zcl_pp_payment_control_configuration; |
9255 | | static int ett_zbee_zcl_pp_snapshot_payload_cause; |
9256 | | static int ett_zbee_zcl_pp_publish_top_up_entry[ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT]; |
9257 | | static int ett_zbee_zcl_pp_publish_debt_log_entry[ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT]; |
9258 | | |
9259 | | /*************************/ |
9260 | | /* Function Bodies */ |
9261 | | /*************************/ |
9262 | | |
9263 | | /** |
9264 | | *This function is called by ZCL foundation dissector in order to decode |
9265 | | * |
9266 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9267 | | *@param tvb pointer to buffer containing raw packet. |
9268 | | *@param offset pointer to buffer offset |
9269 | | *@param attr_id attribute identifier |
9270 | | *@param data_type attribute data type |
9271 | | *@param client_attr ZCL client |
9272 | | */ |
9273 | | static void |
9274 | | dissect_zcl_pp_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
9275 | 77 | { |
9276 | 77 | switch (attr_id) { |
9277 | | /* applies to all SE clusters */ |
9278 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_PP: |
9279 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
9280 | 0 | *offset += 1; |
9281 | 0 | break; |
9282 | 41 | case ZBEE_ZCL_ATTR_ID_PP_PAYMENT_CONTROL_CONFIGURATION: |
9283 | 41 | proto_item_append_text(tree, ", Payment Control Configuration"); |
9284 | 41 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_pp_payment_control_configuration, |
9285 | 41 | ett_zbee_zcl_pp_payment_control_configuration, zbee_zcl_pp_payment_control_configuration_flags, ENC_LITTLE_ENDIAN); |
9286 | 41 | *offset += 2; |
9287 | 41 | break; |
9288 | 36 | default: /* Catch all */ |
9289 | 36 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
9290 | 36 | break; |
9291 | 77 | } |
9292 | 77 | } /*dissect_zcl_pp_attr_data*/ |
9293 | | |
9294 | | /** |
9295 | | *ZigBee ZCL Prepayment cluster dissector for wireshark. |
9296 | | * |
9297 | | *@param tvb pointer to buffer containing raw packet. |
9298 | | *@param pinfo pointer to packet information fields |
9299 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9300 | | */ |
9301 | | static int |
9302 | | dissect_zbee_zcl_pp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
9303 | 3 | { |
9304 | 3 | proto_tree *payload_tree; |
9305 | 3 | zbee_zcl_packet *zcl; |
9306 | 3 | unsigned offset = 0; |
9307 | 3 | uint8_t cmd_id; |
9308 | 3 | int rem_len; |
9309 | | |
9310 | | /* Reject the packet if data is NULL */ |
9311 | 3 | if (data == NULL) |
9312 | 0 | return 0; |
9313 | 3 | zcl = (zbee_zcl_packet *)data; |
9314 | 3 | cmd_id = zcl->cmd_id; |
9315 | | |
9316 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
9317 | 3 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
9318 | | /* Append the command name to the info column. */ |
9319 | 2 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
9320 | 2 | val_to_str_const(cmd_id, zbee_zcl_pp_srv_rx_cmd_names, "Unknown Command"), |
9321 | 2 | zcl->tran_seqno); |
9322 | | |
9323 | | /* Add the command ID. */ |
9324 | 2 | proto_tree_add_uint(tree, hf_zbee_zcl_pp_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
9325 | | |
9326 | | /* Check is this command has a payload, than add the payload tree */ |
9327 | 2 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
9328 | 2 | if (rem_len > 0) { |
9329 | 2 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_pp, NULL, "Payload"); |
9330 | | |
9331 | | /* Call the appropriate command dissector */ |
9332 | 2 | switch (cmd_id) { |
9333 | | |
9334 | 1 | case ZBEE_ZCL_CMD_ID_PP_SELECT_AVAILABLE_EMERGENCY_CREDIT: |
9335 | 1 | dissect_zcl_pp_select_available_emergency_credit(tvb, payload_tree, &offset); |
9336 | 1 | break; |
9337 | | |
9338 | 0 | case ZBEE_ZCL_CMD_ID_PP_CHANGE_DEBT: |
9339 | 0 | dissect_zcl_pp_change_debt(tvb, payload_tree, &offset); |
9340 | 0 | break; |
9341 | | |
9342 | 1 | case ZBEE_ZCL_CMD_ID_PP_EMERGENCY_CREDIT_SETUP: |
9343 | 1 | dissect_zcl_pp_emergency_credit_setup(tvb, payload_tree, &offset); |
9344 | 1 | break; |
9345 | | |
9346 | 0 | case ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP: |
9347 | 0 | dissect_zcl_pp_consumer_top_up(tvb, payload_tree, &offset); |
9348 | 0 | break; |
9349 | | |
9350 | 0 | case ZBEE_ZCL_CMD_ID_PP_CREDIT_ADJUSTMENT: |
9351 | 0 | dissect_zcl_pp_credit_adjustment(tvb, payload_tree, &offset); |
9352 | 0 | break; |
9353 | | |
9354 | 0 | case ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE: |
9355 | 0 | dissect_zcl_pp_change_payment_mode(tvb, payload_tree, &offset); |
9356 | 0 | break; |
9357 | | |
9358 | 0 | case ZBEE_ZCL_CMD_ID_PP_GET_PREPAY_SNAPTSHOT: |
9359 | 0 | dissect_zcl_pp_get_prepay_snapshot(tvb, payload_tree, &offset); |
9360 | 0 | break; |
9361 | | |
9362 | 0 | case ZBEE_ZCL_CMD_ID_PP_GET_TOP_UP_LOG: |
9363 | 0 | dissect_zcl_pp_get_top_up_log(tvb, payload_tree, &offset); |
9364 | 0 | break; |
9365 | | |
9366 | 0 | case ZBEE_ZCL_CMD_ID_PP_SET_LOW_CREDIT_WARNING_LEVEL: |
9367 | 0 | dissect_zcl_pp_set_low_credit_warning_level(tvb, payload_tree, &offset); |
9368 | 0 | break; |
9369 | | |
9370 | 0 | case ZBEE_ZCL_CMD_ID_PP_GET_DEBT_REPAYMENT_LOG: |
9371 | 0 | dissect_zcl_pp_get_debt_repayment_log(tvb, payload_tree, &offset); |
9372 | 0 | break; |
9373 | | |
9374 | 0 | case ZBEE_ZCL_CMD_ID_PP_SET_MAXIMUM_CREDIT_LIMIT: |
9375 | 0 | dissect_zcl_pp_set_maximum_credit_limit(tvb, payload_tree, &offset); |
9376 | 0 | break; |
9377 | | |
9378 | 0 | case ZBEE_ZCL_CMD_ID_PP_SET_OVERALL_DEBT_CAP: |
9379 | 0 | dissect_zcl_pp_set_overall_debt_cap(tvb, payload_tree, &offset); |
9380 | 0 | break; |
9381 | | |
9382 | 0 | default: |
9383 | 0 | break; |
9384 | 2 | } |
9385 | 2 | } |
9386 | 2 | } |
9387 | 1 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
9388 | | /* Append the command name to the info column. */ |
9389 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
9390 | 1 | val_to_str_const(cmd_id, zbee_zcl_pp_srv_tx_cmd_names, "Unknown Command"), |
9391 | 1 | zcl->tran_seqno); |
9392 | | |
9393 | | /* Add the command ID. */ |
9394 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_pp_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
9395 | | |
9396 | | /* Check is this command has a payload, than add the payload tree */ |
9397 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
9398 | 1 | if (rem_len > 0) { |
9399 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_pp, NULL, "Payload"); |
9400 | | |
9401 | | /* Call the appropriate command dissector */ |
9402 | 1 | switch (cmd_id) { |
9403 | | |
9404 | 0 | case ZBEE_ZCL_CMD_ID_PP_PUBLISH_PREPAY_SNAPSHOT: |
9405 | 0 | dissect_zcl_pp_publish_prepay_snapshot(tvb, payload_tree, &offset); |
9406 | 0 | break; |
9407 | | |
9408 | 0 | case ZBEE_ZCL_CMD_ID_PP_CHANGE_PAYMENT_MODE_RESPONSE: |
9409 | 0 | dissect_zcl_pp_change_payment_mode_response(tvb, payload_tree, &offset); |
9410 | 0 | break; |
9411 | | |
9412 | 0 | case ZBEE_ZCL_CMD_ID_PP_CONSUMER_TOP_UP_RESPONSE: |
9413 | 0 | dissect_zcl_pp_consumer_top_up_response(tvb, payload_tree, &offset); |
9414 | 0 | break; |
9415 | | |
9416 | 0 | case ZBEE_ZCL_CMD_ID_PP_PUBLISH_TOP_UP_LOG: |
9417 | 0 | dissect_zcl_pp_publish_top_up_log(tvb, payload_tree, &offset); |
9418 | 0 | break; |
9419 | | |
9420 | 0 | case ZBEE_ZCL_CMD_ID_PP_PUBLISH_DEBT_LOG: |
9421 | 0 | dissect_zcl_pp_publish_debt_log(tvb, payload_tree, &offset); |
9422 | 0 | break; |
9423 | | |
9424 | 1 | default: |
9425 | 1 | break; |
9426 | 1 | } |
9427 | 1 | } |
9428 | 1 | } |
9429 | | |
9430 | 3 | return tvb_captured_length(tvb); |
9431 | 3 | } /*dissect_zbee_zcl_pp*/ |
9432 | | |
9433 | | /** |
9434 | | *This function manages the Select Available Emergency Credit payload |
9435 | | * |
9436 | | *@param tvb pointer to buffer containing raw packet. |
9437 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9438 | | *@param offset pointer to offset from caller |
9439 | | */ |
9440 | | static void |
9441 | | dissect_zcl_pp_select_available_emergency_credit(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9442 | 1 | { |
9443 | | /* Command Issue Date/Time */ |
9444 | 1 | 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); |
9445 | 1 | *offset += 4; |
9446 | | |
9447 | | /* Originating Device */ |
9448 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_pp_select_available_emc_originating_device, tvb, *offset, 1, ENC_NA); |
9449 | 1 | *offset += 1; |
9450 | 1 | } /*dissect_zcl_pp_select_available_emergency_credit*/ |
9451 | | |
9452 | | /** |
9453 | | *This function manages the Change Debt payload |
9454 | | * |
9455 | | *@param tvb pointer to buffer containing raw packet. |
9456 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9457 | | *@param offset pointer to offset from caller |
9458 | | */ |
9459 | | static void |
9460 | | dissect_zcl_pp_change_debt(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9461 | 0 | { |
9462 | 0 | uint8_t label_length; |
9463 | | |
9464 | | /* Issuer Event ID */ |
9465 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9466 | 0 | *offset += 4; |
9467 | | |
9468 | | /* Debt Label */ |
9469 | 0 | label_length = tvb_get_uint8(tvb, *offset) + 1; |
9470 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_label, tvb, *offset, label_length, ENC_NA); |
9471 | 0 | *offset += label_length; |
9472 | | |
9473 | | /* Debt Amount */ |
9474 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_amount, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9475 | 0 | *offset += 4; |
9476 | | |
9477 | | /* Debt Recovery Method */ |
9478 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_method, tvb, *offset, 1, ENC_NA); |
9479 | 0 | *offset += 1; |
9480 | | |
9481 | | /* Debt Amount Type */ |
9482 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_amount_type, tvb, *offset, 1, ENC_NA); |
9483 | 0 | *offset += 1; |
9484 | | |
9485 | | /* Debt Recovery Start Time */ |
9486 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
9487 | 0 | *offset += 4; |
9488 | | |
9489 | | /* Debt Recovery Collection Time */ |
9490 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_collection_time, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
9491 | 0 | *offset += 2; |
9492 | | |
9493 | | /* Debt Recovery Frequency */ |
9494 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_frequency, tvb, *offset, 1, ENC_NA); |
9495 | 0 | *offset += 1; |
9496 | | |
9497 | | /* Debt Recovery Amount */ |
9498 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_amount, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9499 | 0 | *offset += 4; |
9500 | | |
9501 | | /* Debt Recovery Balance Percentage */ |
9502 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_debt_recovery_balance_percentage, tvb, *offset, 1, ENC_NA); |
9503 | 0 | *offset += 1; |
9504 | 0 | } /*dissect_zcl_pp_change_debt*/ |
9505 | | |
9506 | | /** |
9507 | | *This function manages the Select Available Emergency Credit payload |
9508 | | * |
9509 | | *@param tvb pointer to buffer containing raw packet. |
9510 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9511 | | *@param offset pointer to offset from caller |
9512 | | */ |
9513 | | static void |
9514 | | dissect_zcl_pp_emergency_credit_setup(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9515 | 1 | { |
9516 | | /* Issuer Event ID */ |
9517 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9518 | 1 | *offset += 4; |
9519 | | |
9520 | | /* Start Time */ |
9521 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_pp_emergency_credit_setup_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
9522 | 1 | *offset += 4; |
9523 | | |
9524 | | /* Emergency Credit Limit */ |
9525 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9526 | 1 | *offset += 4; |
9527 | | |
9528 | | /* Emergency Credit Threshold */ |
9529 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9530 | 1 | *offset += 4; |
9531 | 1 | } /*dissect_zcl_pp_emergency_credit_setup*/ |
9532 | | |
9533 | | /** |
9534 | | *This function manages the Consumer Top Up payload |
9535 | | * |
9536 | | *@param tvb pointer to buffer containing raw packet. |
9537 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9538 | | *@param offset pointer to offset from caller |
9539 | | */ |
9540 | | static void |
9541 | | dissect_zcl_pp_consumer_top_up(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9542 | 0 | { |
9543 | 0 | int length; |
9544 | | |
9545 | | /* Originating Device */ |
9546 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_consumer_top_up_originating_device, tvb, *offset, 1, ENC_NA); |
9547 | 0 | *offset += 1; |
9548 | | |
9549 | | /* TopUp Code */ |
9550 | 0 | 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); |
9551 | 0 | *offset += length; |
9552 | 0 | } /*dissect_zcl_pp_consumer_top_up*/ |
9553 | | |
9554 | | /** |
9555 | | *This function manages the Credit Adjustment payload |
9556 | | * |
9557 | | *@param tvb pointer to buffer containing raw packet. |
9558 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9559 | | *@param offset pointer to offset from caller |
9560 | | */ |
9561 | | static void |
9562 | | dissect_zcl_pp_credit_adjustment(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9563 | 0 | { |
9564 | | /* Issuer Event ID */ |
9565 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_credit_adjustment_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9566 | 0 | *offset += 4; |
9567 | | |
9568 | | /* Start Time */ |
9569 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_credit_adjustment_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
9570 | 0 | *offset += 4; |
9571 | | |
9572 | | /* Credit Adjustment Type */ |
9573 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type, tvb, *offset, 1, ENC_NA); |
9574 | 0 | *offset += 1; |
9575 | | |
9576 | | /* Credit Adjustment Value */ |
9577 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9578 | 0 | *offset += 4; |
9579 | 0 | } /*dissect_zcl_pp_credit_adjustment*/ |
9580 | | |
9581 | | /** |
9582 | | *This function manages the Change Payment Mode payload |
9583 | | * |
9584 | | *@param tvb pointer to buffer containing raw packet. |
9585 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9586 | | *@param offset pointer to offset from caller |
9587 | | */ |
9588 | | static void |
9589 | | dissect_zcl_pp_change_payment_mode(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9590 | 0 | { |
9591 | | /* Provider ID */ |
9592 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9593 | 0 | *offset += 4; |
9594 | | |
9595 | | /* Issuer Event ID */ |
9596 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9597 | 0 | *offset += 4; |
9598 | | |
9599 | | /* Implementation Date/Time */ |
9600 | 0 | 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); |
9601 | 0 | *offset += 4; |
9602 | | |
9603 | | /* Proposed Payment Control Configuration */ |
9604 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration, |
9605 | 0 | ett_zbee_zcl_pp_payment_control_configuration, zbee_zcl_pp_payment_control_configuration_flags, ENC_LITTLE_ENDIAN); |
9606 | 0 | *offset += 2; |
9607 | | |
9608 | | /* Cut Off Value */ |
9609 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_cut_off_value, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9610 | 0 | *offset += 4; |
9611 | 0 | } /*dissect_zcl_pp_change_payment_mode*/ |
9612 | | |
9613 | | /** |
9614 | | *This function manages the Get Prepay Snapshot payload |
9615 | | * |
9616 | | *@param tvb pointer to buffer containing raw packet. |
9617 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9618 | | *@param offset pointer to offset from caller |
9619 | | */ |
9620 | | static void |
9621 | | dissect_zcl_pp_get_prepay_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9622 | 0 | { |
9623 | | /* Earliest Start Time */ |
9624 | 0 | 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); |
9625 | 0 | *offset += 4; |
9626 | | |
9627 | | /* Latest End Time */ |
9628 | 0 | 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); |
9629 | 0 | *offset += 4; |
9630 | | |
9631 | | /* Snapshot Offset */ |
9632 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset, tvb, *offset, 1, ENC_NA); |
9633 | 0 | *offset += 1; |
9634 | | |
9635 | | /* Snapshot Cause */ |
9636 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause, |
9637 | 0 | ett_zbee_zcl_pp_snapshot_payload_cause, zbee_zcl_pp_snapshot_payload_cause_flags, ENC_LITTLE_ENDIAN); |
9638 | 0 | *offset += 4; |
9639 | 0 | } /*dissect_zcl_pp_get_prepay_snapshot*/ |
9640 | | |
9641 | | /** |
9642 | | *This function manages the Get Top Up Log payload |
9643 | | * |
9644 | | *@param tvb pointer to buffer containing raw packet. |
9645 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9646 | | *@param offset pointer to offset from caller |
9647 | | */ |
9648 | | static void |
9649 | | dissect_zcl_pp_get_top_up_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9650 | 0 | { |
9651 | | /* Latest End Time */ |
9652 | 0 | 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); |
9653 | 0 | *offset += 4; |
9654 | | |
9655 | | /* Number of Records */ |
9656 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_get_top_up_log_number_of_records, tvb, *offset, 1, ENC_NA); |
9657 | 0 | *offset += 1; |
9658 | 0 | } /*dissect_zcl_pp_get_top_up_log*/ |
9659 | | |
9660 | | /** |
9661 | | *This function manages the Set Low Credit Warning Level payload |
9662 | | * |
9663 | | *@param tvb pointer to buffer containing raw packet. |
9664 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9665 | | *@param offset pointer to offset from caller |
9666 | | */ |
9667 | | static void |
9668 | | dissect_zcl_pp_set_low_credit_warning_level(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9669 | 0 | { |
9670 | | /* Low Credit Warning Level */ |
9671 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9672 | 0 | *offset += 4; |
9673 | 0 | } /*dissect_zcl_pp_set_low_credit_warning_level*/ |
9674 | | |
9675 | | /** |
9676 | | *This function manages the Get Debt Repayment Log payload |
9677 | | * |
9678 | | *@param tvb pointer to buffer containing raw packet. |
9679 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9680 | | *@param offset pointer to offset from caller |
9681 | | */ |
9682 | | static void |
9683 | | dissect_zcl_pp_get_debt_repayment_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9684 | 0 | { |
9685 | | /* Latest End Time */ |
9686 | 0 | 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); |
9687 | 0 | *offset += 4; |
9688 | | |
9689 | | /* Number of Records */ |
9690 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts, tvb, *offset, 1, ENC_NA); |
9691 | 0 | *offset += 1; |
9692 | | |
9693 | | /* Debt Type */ |
9694 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_get_debt_repayment_log_debt_type, tvb, *offset, 1, ENC_NA); |
9695 | 0 | *offset += 1; |
9696 | 0 | } /*dissect_zcl_pp_get_debt_repayment_log*/ |
9697 | | |
9698 | | /** |
9699 | | *This function manages the Set Maximum Credit Limit payload |
9700 | | * |
9701 | | *@param tvb pointer to buffer containing raw packet. |
9702 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9703 | | *@param offset pointer to offset from caller |
9704 | | */ |
9705 | | static void |
9706 | | dissect_zcl_pp_set_maximum_credit_limit(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9707 | 0 | { |
9708 | | /* Provider ID */ |
9709 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9710 | 0 | *offset += 4; |
9711 | | |
9712 | | /* Issuer Event ID */ |
9713 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9714 | 0 | *offset += 4; |
9715 | | |
9716 | | /* Implementation Date/Time */ |
9717 | 0 | 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); |
9718 | 0 | *offset += 4; |
9719 | | |
9720 | | /* Maximum Credit Level */ |
9721 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9722 | 0 | *offset += 4; |
9723 | | |
9724 | | /* Maximum Credit Per Top Up */ |
9725 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9726 | 0 | *offset += 4; |
9727 | 0 | } /*dissect_zcl_pp_set_maximum_credit_limit*/ |
9728 | | |
9729 | | /** |
9730 | | *This function manages the Set Overall Debt Cap payload |
9731 | | * |
9732 | | *@param tvb pointer to buffer containing raw packet. |
9733 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9734 | | *@param offset pointer to offset from caller |
9735 | | */ |
9736 | | static void |
9737 | | dissect_zcl_pp_set_overall_debt_cap(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9738 | 0 | { |
9739 | | /* Provider ID */ |
9740 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9741 | 0 | *offset += 4; |
9742 | | |
9743 | | /* Issuer Event ID */ |
9744 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9745 | 0 | *offset += 4; |
9746 | | |
9747 | | /* Implementation Date/Time */ |
9748 | 0 | 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); |
9749 | 0 | *offset += 4; |
9750 | | |
9751 | | /* Overall Debt Cap */ |
9752 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9753 | 0 | *offset += 4; |
9754 | 0 | } /*dissect_zcl_pp_set_overall_debt_cap*/ |
9755 | | |
9756 | | /** |
9757 | | *This function manages the Publish Prepay Snapshot payload |
9758 | | * |
9759 | | *@param tvb pointer to buffer containing raw packet. |
9760 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9761 | | *@param offset pointer to offset from caller |
9762 | | */ |
9763 | | static void |
9764 | | dissect_zcl_pp_publish_prepay_snapshot(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9765 | 0 | { |
9766 | 0 | int rem_len; |
9767 | | |
9768 | | /* Snapshot ID */ |
9769 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9770 | 0 | *offset += 4; |
9771 | | |
9772 | | /* Snapshot Time */ |
9773 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
9774 | 0 | *offset += 4; |
9775 | | |
9776 | | /* Total Snapshots Found */ |
9777 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found, tvb, *offset, 1, ENC_NA); |
9778 | 0 | *offset += 1; |
9779 | | |
9780 | | /* Command Index */ |
9781 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_command_index, tvb, *offset, 1, ENC_NA); |
9782 | 0 | *offset += 1; |
9783 | | |
9784 | | /* Total Number of Commands */ |
9785 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
9786 | 0 | *offset += 1; |
9787 | | |
9788 | | /* Snapshot Cause */ |
9789 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause, |
9790 | 0 | ett_zbee_zcl_pp_snapshot_payload_cause, zbee_zcl_pp_snapshot_payload_cause_flags, ENC_LITTLE_ENDIAN); |
9791 | 0 | *offset += 4; |
9792 | | |
9793 | | /* Snapshot Payload Type */ |
9794 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type, tvb, *offset, 1, ENC_NA); |
9795 | 0 | *offset += 1; |
9796 | | |
9797 | | /* Snapshot Payload */ |
9798 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
9799 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload, tvb, *offset, rem_len, ENC_NA); |
9800 | 0 | *offset += rem_len; |
9801 | 0 | } /*dissect_zcl_pp_publish_prepay_snapshot*/ |
9802 | | |
9803 | | /** |
9804 | | *This function manages the Change Payment Mode Response payload |
9805 | | * |
9806 | | *@param tvb pointer to buffer containing raw packet. |
9807 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9808 | | *@param offset pointer to offset from caller |
9809 | | */ |
9810 | | static void |
9811 | | dissect_zcl_pp_change_payment_mode_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9812 | 0 | { |
9813 | | /* Friendly Credit */ |
9814 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit, tvb, *offset, 1, ENC_NA); |
9815 | 0 | *offset += 1; |
9816 | | |
9817 | | /* Friendly Credit Calendar ID */ |
9818 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9819 | 0 | *offset += 4; |
9820 | | |
9821 | | /* Emergency Credit Limit */ |
9822 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9823 | 0 | *offset += 4; |
9824 | | |
9825 | | /* Emergency Credit Threshold */ |
9826 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9827 | 0 | *offset += 4; |
9828 | 0 | } /*dissect_zcl_pp_change_payment_mode_response*/ |
9829 | | |
9830 | | /** |
9831 | | *This function manages the Consumer Top Up Response payload |
9832 | | * |
9833 | | *@param tvb pointer to buffer containing raw packet. |
9834 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9835 | | *@param offset pointer to offset from caller |
9836 | | */ |
9837 | | static void |
9838 | | dissect_zcl_pp_consumer_top_up_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9839 | 0 | { |
9840 | | /* Result Type */ |
9841 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_consumer_top_up_response_result_type, tvb, *offset, 1, ENC_NA); |
9842 | 0 | *offset += 1; |
9843 | | |
9844 | | /* Top Up Value */ |
9845 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_consumer_top_up_response_top_up_value, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9846 | 0 | *offset += 4; |
9847 | | |
9848 | | /* Source of Top up */ |
9849 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up, tvb, *offset, 1, ENC_NA); |
9850 | 0 | *offset += 1; |
9851 | | |
9852 | | /* Credit Remaining */ |
9853 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9854 | 0 | *offset += 4; |
9855 | 0 | } /*dissect_zcl_pp_consumer_top_up_response*/ |
9856 | | |
9857 | | /** |
9858 | | *This function manages the Publish Top Up Log payload |
9859 | | * |
9860 | | *@param tvb pointer to buffer containing raw packet. |
9861 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9862 | | *@param offset pointer to offset from caller |
9863 | | */ |
9864 | | static void |
9865 | | dissect_zcl_pp_publish_top_up_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9866 | 0 | { |
9867 | 0 | unsigned i = 0; |
9868 | 0 | int length; |
9869 | 0 | proto_tree *sub_tree; |
9870 | | |
9871 | | /* Command Index */ |
9872 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_top_up_log_command_index, tvb, *offset, 1, ENC_NA); |
9873 | 0 | *offset += 1; |
9874 | | |
9875 | | /* Total Number of Commands */ |
9876 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
9877 | 0 | *offset += 1; |
9878 | | |
9879 | | /* Top Up Payload */ |
9880 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0 && i < ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT) { |
9881 | | /* Add subtree */ |
9882 | 0 | 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); |
9883 | 0 | i++; |
9884 | | |
9885 | | /* Top Up Code */ |
9886 | 0 | 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); |
9887 | 0 | *offset += length; |
9888 | | |
9889 | | /* Top Up Amount */ |
9890 | 0 | proto_tree_add_item(sub_tree, hf_zbee_zcl_pp_publish_top_up_log_top_up_amount, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9891 | 0 | *offset += 4; |
9892 | | |
9893 | | /* Top Up Time */ |
9894 | 0 | 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); |
9895 | 0 | *offset += 4; |
9896 | | |
9897 | | /* Set length of subtree */ |
9898 | 0 | proto_item_set_end(proto_tree_get_parent(sub_tree), tvb, *offset); |
9899 | 0 | } |
9900 | 0 | } /*dissect_zcl_pp_publish_top_up_log*/ |
9901 | | |
9902 | | /** |
9903 | | *This function manages the Publish Debt Log payload |
9904 | | * |
9905 | | *@param tvb pointer to buffer containing raw packet. |
9906 | | *@param tree pointer to data tree Wireshark uses to display packet. |
9907 | | *@param offset pointer to offset from caller |
9908 | | */ |
9909 | | static void |
9910 | | dissect_zcl_pp_publish_debt_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
9911 | 0 | { |
9912 | 0 | unsigned i = 0; |
9913 | 0 | proto_tree *sub_tree; |
9914 | | |
9915 | | /* Command Index */ |
9916 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_debt_log_command_index, tvb, *offset, 1, ENC_NA); |
9917 | 0 | *offset += 1; |
9918 | | |
9919 | | /* Total Number of Commands */ |
9920 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
9921 | 0 | *offset += 1; |
9922 | | |
9923 | | /* Debt Payload */ |
9924 | 0 | while (tvb_reported_length_remaining(tvb, *offset) > 0 && i < ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT) { |
9925 | | /* Add subtree */ |
9926 | 0 | 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); |
9927 | 0 | i++; |
9928 | | |
9929 | | /* Collection Time */ |
9930 | 0 | 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); |
9931 | 0 | *offset += 4; |
9932 | | |
9933 | | /* Amount Collected */ |
9934 | 0 | proto_tree_add_item(sub_tree, hf_zbee_zcl_pp_publish_debt_log_amount_collected, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9935 | 0 | *offset += 4; |
9936 | | |
9937 | | /* Debt Type */ |
9938 | 0 | proto_tree_add_item(sub_tree, hf_zbee_zcl_pp_publish_debt_log_debt_type, tvb, *offset, 1, ENC_NA); |
9939 | 0 | *offset += 1; |
9940 | | |
9941 | | /* Outstanding Debt */ |
9942 | 0 | proto_tree_add_item(sub_tree, hf_zbee_zcl_pp_publish_debt_log_outstanding_debt, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
9943 | 0 | *offset += 4; |
9944 | 0 | } |
9945 | 0 | } /*dissect_zcl_pp_publish_debt_log*/ |
9946 | | |
9947 | | /** |
9948 | | *This function registers the ZCL Prepayment dissector |
9949 | | * |
9950 | | */ |
9951 | | void |
9952 | | proto_register_zbee_zcl_pp(void) |
9953 | 15 | { |
9954 | 15 | static hf_register_info hf[] = { |
9955 | | |
9956 | 15 | { &hf_zbee_zcl_pp_attr_id, |
9957 | 15 | { "Attribute", "zbee_zcl_se.pp.attr_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &zbee_zcl_pp_attr_names_ext, |
9958 | 15 | 0x0, NULL, HFILL } }, |
9959 | | |
9960 | 15 | { &hf_zbee_zcl_pp_attr_reporting_status, /* common to all SE clusters */ |
9961 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.pp.attr.attr_reporting_status", |
9962 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
9963 | | |
9964 | 15 | { &hf_zbee_zcl_pp_srv_tx_cmd_id, |
9965 | 15 | { "Command", "zbee_zcl_se.pp.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_pp_srv_tx_cmd_names), |
9966 | 15 | 0x00, NULL, HFILL } }, |
9967 | | |
9968 | 15 | { &hf_zbee_zcl_pp_srv_rx_cmd_id, |
9969 | 15 | { "Command", "zbee_zcl_se.pp.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_pp_srv_rx_cmd_names), |
9970 | 15 | 0x00, NULL, HFILL } }, |
9971 | | |
9972 | 15 | { &hf_zbee_zcl_pp_select_available_emc_cmd_issue_date_time, |
9973 | 15 | { "Command Issue Date/Time", "zbee_zcl_se.pp.select_available_emc.cmd_issue_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
9974 | 15 | 0x00, NULL, HFILL } }, |
9975 | | |
9976 | 15 | { &hf_zbee_zcl_pp_select_available_emc_originating_device, |
9977 | 15 | { "Originating Device", "zbee_zcl_se.pp.select_available_emc.originating_device", FT_UINT8, BASE_DEC, NULL, |
9978 | 15 | 0x00, NULL, HFILL } }, |
9979 | | |
9980 | 15 | { &hf_zbee_zcl_pp_change_debt_issuer_event_id, |
9981 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.change_debt.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
9982 | 15 | 0x00, NULL, HFILL } }, |
9983 | | |
9984 | 15 | { &hf_zbee_zcl_pp_change_debt_label, |
9985 | 15 | { "Debt Label", "zbee_zcl_se.pp.change_debt.debt_label", FT_BYTES, BASE_NONE, NULL, |
9986 | 15 | 0x00, NULL, HFILL } }, |
9987 | | |
9988 | 15 | { &hf_zbee_zcl_pp_change_debt_amount, |
9989 | 15 | { "Debt Amount", "zbee_zcl_se.pp.change_debt.debt_amount", FT_INT32, BASE_DEC, NULL, |
9990 | 15 | 0x00, NULL, HFILL } }, |
9991 | | |
9992 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_method, |
9993 | 15 | { "Debt Recovery Method", "zbee_zcl_se.pp.change_debt.recovery_method", FT_UINT8, BASE_DEC, NULL, |
9994 | 15 | 0x00, NULL, HFILL } }, |
9995 | | |
9996 | 15 | { &hf_zbee_zcl_pp_change_debt_amount_type, |
9997 | 15 | { "Debt Amount Type", "zbee_zcl_se.pp.change_debt.amount_type", FT_UINT8, BASE_DEC, NULL, |
9998 | 15 | 0x00, NULL, HFILL } }, |
9999 | | |
10000 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_start_time, |
10001 | 15 | { "Debt Recovery Start Time", "zbee_zcl_se.pp.change_debt.recovery_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10002 | 15 | 0x00, NULL, HFILL } }, |
10003 | | |
10004 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_collection_time, |
10005 | 15 | { "Debt Recovery Collection Time", "zbee_zcl_se.pp.change_debt.recovery_collection_time", FT_UINT16, BASE_DEC, NULL, |
10006 | 15 | 0x00, NULL, HFILL } }, |
10007 | | |
10008 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_frequency, |
10009 | 15 | { "Debt Recovery Frequency", "zbee_zcl_se.pp.change_debt.recovery_frequency", FT_UINT8, BASE_DEC, NULL, |
10010 | 15 | 0x00, NULL, HFILL } }, |
10011 | | |
10012 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_amount, |
10013 | 15 | { "Debt Recovery Amount", "zbee_zcl_se.pp.change_debt.recovery_amount", FT_INT32, BASE_DEC, NULL, |
10014 | 15 | 0x00, NULL, HFILL } }, |
10015 | | |
10016 | 15 | { &hf_zbee_zcl_pp_change_debt_recovery_balance_percentage, |
10017 | 15 | { "Debt Recovery Balance Percentage", "zbee_zcl_se.pp.change_debt.recovery_balance_percentage", FT_UINT8, BASE_DEC, NULL, |
10018 | 15 | 0x00, NULL, HFILL } }, |
10019 | | |
10020 | 15 | { &hf_zbee_zcl_pp_emergency_credit_setup_issuer_event_id, |
10021 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.emc_setup.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
10022 | 15 | 0x00, NULL, HFILL } }, |
10023 | | |
10024 | 15 | { &hf_zbee_zcl_pp_emergency_credit_setup_start_time, |
10025 | 15 | { "Start Time", "zbee_zcl_se.pp.emc_setup.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
10026 | 15 | 0x00, NULL, HFILL } }, |
10027 | | |
10028 | 15 | { &hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_limit, |
10029 | 15 | { "Emergency Credit Limit", "zbee_zcl_se.pp.emc_setup.emc_limit", FT_UINT32, BASE_DEC, NULL, |
10030 | 15 | 0x00, NULL, HFILL } }, |
10031 | | |
10032 | 15 | { &hf_zbee_zcl_pp_emergency_credit_setup_emergency_credit_threshold, |
10033 | 15 | { "Emergency Credit Threshold", "zbee_zcl_se.pp.emc_setup.emc_threshold", FT_UINT32, BASE_DEC, NULL, |
10034 | 15 | 0x00, NULL, HFILL } }, |
10035 | | |
10036 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_originating_device, |
10037 | 15 | { "Originating Device", "zbee_zcl_se.pp.consumer_top_up.originating_device", FT_UINT8, BASE_DEC, NULL, |
10038 | 15 | 0x00, NULL, HFILL } }, |
10039 | | |
10040 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_top_up_code, |
10041 | 15 | { "TopUp Code", "zbee_zcl_se.pp.consumer_top_up.top_up_code", FT_UINT_BYTES, SEP_COLON, NULL, |
10042 | 15 | 0x00, NULL, HFILL } }, |
10043 | | |
10044 | 15 | { &hf_zbee_zcl_pp_credit_adjustment_issuer_event_id, |
10045 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.credit_adjustment.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
10046 | 15 | 0x00, NULL, HFILL } }, |
10047 | | |
10048 | 15 | { &hf_zbee_zcl_pp_credit_adjustment_start_time, |
10049 | 15 | { "Start Time", "zbee_zcl_se.pp.credit_adjustment.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
10050 | 15 | 0x00, NULL, HFILL } }, |
10051 | | |
10052 | 15 | { &hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_type, |
10053 | 15 | { "Credit Adjustment Type", "zbee_zcl_se.pp.credit_adjustment.credit_adjustment_type", FT_UINT8, BASE_DEC, NULL, |
10054 | 15 | 0x00, NULL, HFILL } }, |
10055 | | |
10056 | 15 | { &hf_zbee_zcl_pp_credit_adjustment_credit_adjustment_value, |
10057 | 15 | { "Credit Adjustment Value", "zbee_zcl_se.pp.credit_adjustment.credit_adjustment_value", FT_INT32, BASE_DEC, NULL, |
10058 | 15 | 0x00, NULL, HFILL } }, |
10059 | | |
10060 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_provider_id, |
10061 | 15 | { "Provider ID", "zbee_zcl_se.pp.change_payment_mode.provider_id", FT_UINT32, BASE_DEC, NULL, |
10062 | 15 | 0x00, NULL, HFILL } }, |
10063 | | |
10064 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_issuer_event_id, |
10065 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.change_payment_mode.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
10066 | 15 | 0x00, NULL, HFILL } }, |
10067 | | |
10068 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_implementation_date_time, |
10069 | 15 | { "Implementation Date/Time", "zbee_zcl_se.pp.change_payment_mode.implementation_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
10070 | 15 | 0x00, NULL, HFILL } }, |
10071 | | |
10072 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_proposed_payment_control_configuration, |
10073 | 15 | { "Proposed Payment Control Configuration", "zbee_zcl_se.pp.change_payment_mode.payment_control_configuration", FT_UINT16, BASE_HEX, NULL, |
10074 | 15 | 0x00, NULL, HFILL } }, |
10075 | | |
10076 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_cut_off_value, |
10077 | 15 | { "Cut Off Value", "zbee_zcl_se.pp.change_payment_mode.cut_off_value", FT_INT32, BASE_DEC, NULL, |
10078 | 15 | 0x00, NULL, HFILL } }, |
10079 | | |
10080 | 15 | { &hf_zbee_zcl_pp_get_prepay_snapshot_earliest_start_time, |
10081 | 15 | { "Earliest Start Time", "zbee_zcl_se.pp.get_prepay_snapshot.earliest_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10082 | 15 | 0x00, NULL, HFILL } }, |
10083 | | |
10084 | 15 | { &hf_zbee_zcl_pp_get_prepay_snapshot_latest_end_time, |
10085 | 15 | { "Latest End Time", "zbee_zcl_se.pp.get_prepay_snapshot.latest_end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10086 | 15 | 0x00, NULL, HFILL } }, |
10087 | | |
10088 | 15 | { &hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_offset, |
10089 | 15 | { "Snapshot Offset", "zbee_zcl_se.pp.get_prepay_snapshot.snapshot_offset", FT_UINT8, BASE_DEC, NULL, |
10090 | 15 | 0x00, NULL, HFILL } }, |
10091 | | |
10092 | 15 | { &hf_zbee_zcl_pp_get_prepay_snapshot_snapshot_cause, |
10093 | 15 | { "Snapshot Cause", "zbee_zcl_se.pp.get_prepay_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
10094 | 15 | 0x00, NULL, HFILL } }, |
10095 | | |
10096 | 15 | { &hf_zbee_zcl_pp_get_top_up_log_latest_end_time, |
10097 | 15 | { "Latest End Time", "zbee_zcl_se.pp.get_top_up_log.latest_end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10098 | 15 | 0x00, NULL, HFILL } }, |
10099 | | |
10100 | 15 | { &hf_zbee_zcl_pp_get_top_up_log_number_of_records, |
10101 | 15 | { "Number of Records", "zbee_zcl_se.pp.get_top_up_log.number_of_records", FT_UINT8, BASE_DEC, NULL, |
10102 | 15 | 0x00, NULL, HFILL } }, |
10103 | | |
10104 | 15 | { &hf_zbee_zcl_pp_set_low_credit_warning_level_low_credit_warning_level, |
10105 | 15 | { "Low Credit Warning Level", "zbee_zcl_se.pp.set_low_credit_warning_level.low_credit_warning_level", FT_UINT32, BASE_DEC, NULL, |
10106 | 15 | 0x00, NULL, HFILL } }, |
10107 | | |
10108 | 15 | { &hf_zbee_zcl_pp_get_debt_repayment_log_latest_end_time, |
10109 | 15 | { "Latest End Time", "zbee_zcl_se.pp.get_debt_repayment_log.latest_end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10110 | 15 | 0x00, NULL, HFILL } }, |
10111 | | |
10112 | 15 | { &hf_zbee_zcl_pp_get_debt_repayment_log_number_of_debts, |
10113 | 15 | { "Number of Records", "zbee_zcl_se.pp.get_debt_repayment_log.number_of_records", FT_UINT8, BASE_DEC, NULL, |
10114 | 15 | 0x00, NULL, HFILL } }, |
10115 | | |
10116 | 15 | { &hf_zbee_zcl_pp_get_debt_repayment_log_debt_type, |
10117 | 15 | { "Debt Type", "zbee_zcl_se.pp.get_debt_repayment_log.debt_type", FT_UINT8, BASE_DEC, NULL, |
10118 | 15 | 0x00, NULL, HFILL } }, |
10119 | | |
10120 | 15 | { &hf_zbee_zcl_pp_set_maximum_credit_limit_provider_id, |
10121 | 15 | { "Provider ID", "zbee_zcl_se.pp.set_maximum_credit_limit.provider_id", FT_UINT32, BASE_DEC, NULL, |
10122 | 15 | 0x00, NULL, HFILL } }, |
10123 | | |
10124 | 15 | { &hf_zbee_zcl_pp_set_maximum_credit_limit_issuer_event_id, |
10125 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.set_maximum_credit_limit.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
10126 | 15 | 0x00, NULL, HFILL } }, |
10127 | | |
10128 | 15 | { &hf_zbee_zcl_pp_set_maximum_credit_limit_implementation_date_time, |
10129 | 15 | { "Implementation Date/Time", "zbee_zcl_se.pp.set_maximum_credit_limit.implementation_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
10130 | 15 | 0x00, NULL, HFILL } }, |
10131 | | |
10132 | 15 | { &hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_level, |
10133 | 15 | { "Maximum Credit Level", "zbee_zcl_se.pp.set_maximum_credit_limit.max_credit_level", FT_UINT32, BASE_DEC, NULL, |
10134 | 15 | 0x00, NULL, HFILL } }, |
10135 | | |
10136 | 15 | { &hf_zbee_zcl_pp_set_maximum_credit_limit_maximum_credit_per_top_up, |
10137 | 15 | { "Maximum Credit Per Top Up", "zbee_zcl_se.pp.set_maximum_credit_limit.max_credit_per_top_up", FT_UINT32, BASE_DEC, NULL, |
10138 | 15 | 0x00, NULL, HFILL } }, |
10139 | | |
10140 | 15 | { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_provider_id, |
10141 | 15 | { "Provider ID", "zbee_zcl_se.pp.set_overall_debt_cap_limit.provider_id", FT_UINT32, BASE_DEC, NULL, |
10142 | 15 | 0x00, NULL, HFILL } }, |
10143 | | |
10144 | 15 | { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_issuer_event_id, |
10145 | 15 | { "Issuer Event ID", "zbee_zcl_se.pp.set_overall_debt_cap_limit.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
10146 | 15 | 0x00, NULL, HFILL } }, |
10147 | | |
10148 | 15 | { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_implementation_date_time, |
10149 | 15 | { "Implementation Date/Time", "zbee_zcl_se.pp.set_overall_debt_cap_limit.implementation_date_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
10150 | 15 | 0x00, NULL, HFILL } }, |
10151 | | |
10152 | 15 | { &hf_zbee_zcl_pp_set_overall_debt_cap_limit_overall_debt_cap, |
10153 | 15 | { "Overall Debt Cap", "zbee_zcl_se.pp.set_overall_debt_cap_limit.overall_debt_cap", FT_INT32, BASE_DEC, NULL, |
10154 | 15 | 0x00, NULL, HFILL } }, |
10155 | | |
10156 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_id, |
10157 | 15 | { "Snapshot ID", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_id", FT_UINT32, BASE_DEC, NULL, |
10158 | 15 | 0x00, NULL, HFILL } }, |
10159 | | |
10160 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_time, |
10161 | 15 | { "Snapshot Time", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10162 | 15 | 0x00, NULL, HFILL } }, |
10163 | | |
10164 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_total_snapshots_found, |
10165 | 15 | { "Total Snapshots Found", "zbee_zcl_se.pp.publish_prepay_snapshot.total_snapshots_found", FT_UINT8, BASE_DEC, NULL, |
10166 | 15 | 0x00, NULL, HFILL } }, |
10167 | | |
10168 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_command_index, |
10169 | 15 | { "Command Index", "zbee_zcl_se.pp.publish_prepay_snapshot.command_index", FT_UINT8, BASE_DEC, NULL, |
10170 | 15 | 0x00, NULL, HFILL } }, |
10171 | | |
10172 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_total_number_of_commands, |
10173 | 15 | { "Total Number of Commands", "zbee_zcl_se.pp.publish_prepay_snapshot.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
10174 | 15 | 0x00, NULL, HFILL } }, |
10175 | | |
10176 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_cause, |
10177 | 15 | { "Snapshot Cause", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_cause", FT_UINT32, BASE_HEX, NULL, |
10178 | 15 | 0x00, NULL, HFILL } }, |
10179 | | |
10180 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload_type, |
10181 | 15 | { "Snapshot Payload Type", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_payload_type", FT_UINT8, BASE_DEC, NULL, |
10182 | 15 | 0x00, NULL, HFILL } }, |
10183 | | |
10184 | 15 | { &hf_zbee_zcl_pp_publish_prepay_snapshot_snapshot_payload, |
10185 | 15 | { "Snapshot Payload", "zbee_zcl_se.pp.publish_prepay_snapshot.snapshot_payload", FT_BYTES, BASE_NONE, NULL, |
10186 | 15 | 0x00, NULL, HFILL } }, |
10187 | | |
10188 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit, |
10189 | 15 | { "Friendly Credit", "zbee_zcl_se.pp.change_payment_mode_response.friendly_credit", FT_UINT8, BASE_HEX, NULL, |
10190 | 15 | 0x00, NULL, HFILL } }, |
10191 | | |
10192 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_response_friendly_credit_calendar_id, |
10193 | 15 | { "Friendly Credit Calendar ID", "zbee_zcl_se.pp.change_payment_mode_response.friendly_credit_calendar_id", FT_UINT32, BASE_DEC, NULL, |
10194 | 15 | 0x00, NULL, HFILL } }, |
10195 | | |
10196 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_limit, |
10197 | 15 | { "Emergency Credit Limit", "zbee_zcl_se.pp.change_payment_mode_response.emc_limit", FT_UINT32, BASE_DEC, NULL, |
10198 | 15 | 0x00, NULL, HFILL } }, |
10199 | | |
10200 | 15 | { &hf_zbee_zcl_pp_change_payment_mode_response_emergency_credit_threshold, |
10201 | 15 | { "Emergency Credit Threshold", "zbee_zcl_se.pp.change_payment_mode_response.emc_threshold", FT_UINT32, BASE_DEC, NULL, |
10202 | 15 | 0x00, NULL, HFILL } }, |
10203 | | |
10204 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_response_result_type, |
10205 | 15 | { "Result Type", "zbee_zcl_se.pp.consumer_top_up_response.result_type", FT_UINT8, BASE_DEC, NULL, |
10206 | 15 | 0x00, NULL, HFILL } }, |
10207 | | |
10208 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_response_top_up_value, |
10209 | 15 | { "Top Up Value", "zbee_zcl_se.pp.consumer_top_up_response.top_up_value", FT_INT32, BASE_DEC, NULL, |
10210 | 15 | 0x00, NULL, HFILL } }, |
10211 | | |
10212 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_response_source_of_top_up, |
10213 | 15 | { "Source of Top up", "zbee_zcl_se.pp.consumer_top_up_response.source_of_top_up", FT_UINT8, BASE_DEC, NULL, |
10214 | 15 | 0x00, NULL, HFILL } }, |
10215 | | |
10216 | 15 | { &hf_zbee_zcl_pp_consumer_top_up_response_credit_remaining, |
10217 | 15 | { "Credit Remaining", "zbee_zcl_se.pp.consumer_top_up_response.credit_remaining", FT_INT32, BASE_DEC, NULL, |
10218 | 15 | 0x00, NULL, HFILL } }, |
10219 | | |
10220 | 15 | { &hf_zbee_zcl_pp_publish_top_up_log_command_index, |
10221 | 15 | { "Command Index", "zbee_zcl_se.pp.publish_top_up_log.command_index", FT_UINT8, BASE_DEC, NULL, |
10222 | 15 | 0x00, NULL, HFILL } }, |
10223 | | |
10224 | 15 | { &hf_zbee_zcl_pp_publish_top_up_log_total_number_of_commands, |
10225 | 15 | { "Total Number of Commands", "zbee_zcl_se.pp.publish_top_up_log.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
10226 | 15 | 0x00, NULL, HFILL } }, |
10227 | | |
10228 | 15 | { &hf_zbee_zcl_pp_publish_top_up_log_top_up_code, |
10229 | 15 | { "TopUp Code", "zbee_zcl_se.pp.publish_top_up_log.top_up_code", FT_UINT_BYTES, SEP_COLON, NULL, |
10230 | 15 | 0x00, NULL, HFILL } }, |
10231 | | |
10232 | 15 | { &hf_zbee_zcl_pp_publish_top_up_log_top_up_amount, |
10233 | 15 | { "TopUp Amount", "zbee_zcl_se.pp.publish_top_up_log.top_up_amount", FT_INT32, BASE_DEC, NULL, |
10234 | 15 | 0x00, NULL, HFILL } }, |
10235 | | |
10236 | 15 | { &hf_zbee_zcl_pp_publish_top_up_log_top_up_time, |
10237 | 15 | { "TopUp Time", "zbee_zcl_se.pp.publish_top_up_log.top_up_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10238 | 15 | 0x00, NULL, HFILL } }, |
10239 | | |
10240 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_command_index, |
10241 | 15 | { "Command Index", "zbee_zcl_se.pp.publish_debt_log.command_index", FT_UINT8, BASE_DEC, NULL, |
10242 | 15 | 0x00, NULL, HFILL } }, |
10243 | | |
10244 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_total_number_of_commands, |
10245 | 15 | { "Total Number of Commands", "zbee_zcl_se.pp.publish_debt_log.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
10246 | 15 | 0x00, NULL, HFILL } }, |
10247 | | |
10248 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_collection_time, |
10249 | 15 | { "Collection Time", "zbee_zcl_se.pp.publish_debt_log.collection_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
10250 | 15 | 0x00, NULL, HFILL } }, |
10251 | | |
10252 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_amount_collected, |
10253 | 15 | { "Amount Collected", "zbee_zcl_se.pp.publish_debt_log.amount_collected", FT_INT32, BASE_DEC, NULL, |
10254 | 15 | 0x00, NULL, HFILL } }, |
10255 | | |
10256 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_debt_type, |
10257 | 15 | { "Debt Type", "zbee_zcl_se.pp.publish_debt_log.debt_type", FT_UINT8, BASE_DEC, NULL, |
10258 | 15 | 0x00, NULL, HFILL } }, |
10259 | | |
10260 | 15 | { &hf_zbee_zcl_pp_publish_debt_log_outstanding_debt, |
10261 | 15 | { "Outstanding Debt", "zbee_zcl_se.pp.publish_debt_log.outstanding_debt", FT_UINT32, BASE_DEC, NULL, |
10262 | 15 | 0x00, NULL, HFILL } }, |
10263 | | |
10264 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration, |
10265 | 15 | { "Payment Control Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration", FT_UINT16, BASE_HEX, NULL, |
10266 | 15 | 0x00, NULL, HFILL } }, |
10267 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_disconnection_enabled, |
10268 | 15 | { "Disconnection Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.disconnection_enabled", FT_BOOLEAN, 16, NULL, |
10269 | 15 | 0x0001, NULL, HFILL } }, |
10270 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_prepayment_enabled, |
10271 | 15 | { "Prepayment Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.prepayment_enabled", FT_BOOLEAN, 16, NULL, |
10272 | 15 | 0x0002, NULL, HFILL } }, |
10273 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_credit_management_enabled, |
10274 | 15 | { "Credit Management Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.credit_management_enabled", FT_BOOLEAN, 16, NULL, |
10275 | 15 | 0x0004, NULL, HFILL } }, |
10276 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_credit_display_enabled, |
10277 | 15 | { "Credit Display Enabled", "zbee_zcl_se.pp.attr.payment_control_configuration.credit_display_enabled", FT_BOOLEAN, 16, NULL, |
10278 | 15 | 0x0010, NULL, HFILL } }, |
10279 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_account_base, |
10280 | 15 | { "Account Base", "zbee_zcl_se.pp.attr.payment_control_configuration.account_base", FT_BOOLEAN, 16, NULL, |
10281 | 15 | 0x0040, NULL, HFILL } }, |
10282 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_contactor_fitted, |
10283 | 15 | { "Contactor Fitted", "zbee_zcl_se.pp.attr.payment_control_configuration.contactor_fitted", FT_BOOLEAN, 16, NULL, |
10284 | 15 | 0x0080, NULL, HFILL } }, |
10285 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_standing_charge_configuration, |
10286 | 15 | { "Standing Charge Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.standing_charge_configuration", FT_BOOLEAN, 16, NULL, |
10287 | 15 | 0x0100, NULL, HFILL } }, |
10288 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_emergency_standing_charge_configuration, |
10289 | 15 | { "Emergency Standing Charge Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.emergency_standing_charge_configuration", FT_BOOLEAN, 16, NULL, |
10290 | 15 | 0x0200, NULL, HFILL } }, |
10291 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_debt_configuration, |
10292 | 15 | { "Debt Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.debt_configuration", FT_BOOLEAN, 16, NULL, |
10293 | 15 | 0x0400, NULL, HFILL } }, |
10294 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_emergency_debt_configuration, |
10295 | 15 | { "Emergency Debt Configuration", "zbee_zcl_se.pp.attr.payment_control_configuration.emergency_debt_configuration", FT_BOOLEAN, 16, NULL, |
10296 | 15 | 0x0800, NULL, HFILL } }, |
10297 | 15 | { &hf_zbee_zcl_pp_payment_control_configuration_reserved, |
10298 | 15 | { "Reserved", "zbee_zcl_se.pp.attr.payment_control_configuration.reserved", FT_UINT16, BASE_HEX, NULL, |
10299 | 15 | 0xF028, NULL, HFILL } }, |
10300 | | |
10301 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_general, |
10302 | 15 | { "General", "zbee_zcl_se.pp.snapshot_payload_cause.general", FT_BOOLEAN, 32, NULL, |
10303 | 15 | 0x00000001, NULL, HFILL } }, |
10304 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_end_of_billing_period, |
10305 | 15 | { "End of Billing Period", "zbee_zcl_se.pp.snapshot_payload_cause.end_of_billing_period", FT_BOOLEAN, 32, NULL, |
10306 | 15 | 0x00000002, NULL, HFILL } }, |
10307 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tariff_information, |
10308 | 15 | { "Change of Tariff Information", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_tariff_information", FT_BOOLEAN, 32, NULL, |
10309 | 15 | 0x00000008, NULL, HFILL } }, |
10310 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_price_matrix, |
10311 | 15 | { "Change of Price Matrix", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_price_matrix", FT_BOOLEAN, 32, NULL, |
10312 | 15 | 0x00000010, NULL, HFILL } }, |
10313 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_manually_triggered_from_client, |
10314 | 15 | { "Manually Triggered from Client", "zbee_zcl_se.pp.snapshot_payload_cause.manually_triggered_from_client", FT_BOOLEAN, 32, NULL, |
10315 | 15 | 0x00000400, NULL, HFILL } }, |
10316 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_tenancy, |
10317 | 15 | { "Change of Tenancy", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_tenancy", FT_BOOLEAN, 32, NULL, |
10318 | 15 | 0x00001000, NULL, HFILL } }, |
10319 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_supplier, |
10320 | 15 | { "Change of Supplier", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_supplier", FT_BOOLEAN, 32, NULL, |
10321 | 15 | 0x00002000, NULL, HFILL } }, |
10322 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_change_of_meter_mode, |
10323 | 15 | { "Change of (Meter) Mode", "zbee_zcl_se.pp.snapshot_payload_cause.change_of_meter_mode", FT_BOOLEAN, 32, NULL, |
10324 | 15 | 0x00004000, NULL, HFILL } }, |
10325 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_top_up_addition, |
10326 | 15 | { "TopUp addition", "zbee_zcl_se.pp.snapshot_payload_cause.top_up_addition", FT_BOOLEAN, 32, NULL, |
10327 | 15 | 0x00040000, NULL, HFILL } }, |
10328 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_debt_credit_addition, |
10329 | 15 | { "Debt/Credit addition", "zbee_zcl_se.pp.snapshot_payload_cause.debt_credit_addition", FT_BOOLEAN, 32, NULL, |
10330 | 15 | 0x00080000, NULL, HFILL } }, |
10331 | 15 | { &hf_zbee_zcl_pp_snapshot_payload_cause_reserved, |
10332 | 15 | { "Reserved", "zbee_zcl_se.pp.snapshot_payload_cause.reserved", FT_UINT32, BASE_HEX, NULL, |
10333 | 15 | 0xFFF38BE4, NULL, HFILL } }, |
10334 | 15 | }; |
10335 | | |
10336 | | /* ZCL Prepayment subtrees */ |
10337 | 15 | int *ett[ZBEE_ZCL_SE_PP_NUM_TOTAL_ETT]; |
10338 | 15 | ett[0] = &ett_zbee_zcl_pp; |
10339 | 15 | ett[1] = &ett_zbee_zcl_pp_payment_control_configuration; |
10340 | 15 | ett[2] = &ett_zbee_zcl_pp_snapshot_payload_cause; |
10341 | | |
10342 | 15 | unsigned j = ZBEE_ZCL_SE_PP_NUM_INDIVIDUAL_ETT; |
10343 | | |
10344 | | /* Initialize Publish Top Up Log subtrees */ |
10345 | 465 | for (unsigned i = 0; i < ZBEE_ZCL_SE_PP_NUM_PUBLISH_TOP_UP_LOG_ETT; i++, j++) { |
10346 | 450 | ett[j] = &ett_zbee_zcl_pp_publish_top_up_entry[i]; |
10347 | 450 | } |
10348 | | |
10349 | | /* Initialize Publish Debt Log subtrees */ |
10350 | 465 | for (unsigned i = 0; i < ZBEE_ZCL_SE_PP_NUM_PUBLISH_DEBT_LOG_ETT; i++, j++ ) { |
10351 | 450 | ett[j] = &ett_zbee_zcl_pp_publish_debt_log_entry[i]; |
10352 | 450 | } |
10353 | | |
10354 | | /* Register the ZigBee ZCL Prepayment cluster protocol name and description */ |
10355 | 15 | proto_zbee_zcl_pp = proto_register_protocol("ZigBee ZCL Prepayment", "ZCL Prepayment", ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT); |
10356 | 15 | proto_register_field_array(proto_zbee_zcl_pp, hf, array_length(hf)); |
10357 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
10358 | | |
10359 | | /* Register the ZigBee ZCL Prepayment dissector. */ |
10360 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT, dissect_zbee_zcl_pp, proto_zbee_zcl_pp); |
10361 | 15 | } /*proto_register_zbee_zcl_pp*/ |
10362 | | |
10363 | | /** |
10364 | | *Hands off the ZCL Prepayment dissector. |
10365 | | * |
10366 | | */ |
10367 | | void |
10368 | | proto_reg_handoff_zbee_zcl_pp(void) |
10369 | 15 | { |
10370 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_PRE_PAYMENT, |
10371 | 15 | proto_zbee_zcl_pp, |
10372 | 15 | ett_zbee_zcl_pp, |
10373 | 15 | ZBEE_ZCL_CID_PRE_PAYMENT, |
10374 | 15 | ZBEE_MFG_CODE_NONE, |
10375 | 15 | hf_zbee_zcl_pp_attr_id, |
10376 | 15 | -1, |
10377 | 15 | hf_zbee_zcl_pp_srv_rx_cmd_id, |
10378 | 15 | hf_zbee_zcl_pp_srv_tx_cmd_id, |
10379 | 15 | dissect_zcl_pp_attr_data |
10380 | 15 | ); |
10381 | 15 | } /*proto_reg_handoff_zbee_zcl_pp*/ |
10382 | | |
10383 | | /* ########################################################################## */ |
10384 | | /* #### (0x0706) ENERGY MANAGEMENT CLUSTER ################################## */ |
10385 | | /* ########################################################################## */ |
10386 | | |
10387 | | /* Attributes */ |
10388 | | #define zbee_zcl_energy_management_attr_names_VALUE_STRING_LIST(XXX) \ |
10389 | | /* Block Threshold (Delivered) Set */ \ |
10390 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_LOAD_CONTROL_STATE, 0x0000, "Load Control State" ) \ |
10391 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CURRENT_EVENT_ID, 0x0001, "Current Event ID" ) \ |
10392 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CURRENT_EVENT_STATUS, 0x0002, "Current Event Status" ) \ |
10393 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_CONFORMANCE_LEVEL, 0x0003, "Conformance Level" ) \ |
10394 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_OFF_TIME, 0x0004, "Minimum Off Time" ) \ |
10395 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_ON_TIME, 0x0005, "Minimum On Time" ) \ |
10396 | | XXX(ZBEE_ZCL_ATTR_ID_ENERGY_MANAGEMENT_MINIMUM_CYCLE_PERIOD, 0x0006, "Minimum Cycle Period" ) \ |
10397 | | /* Smart Energy */ \ |
10398 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_ENERGY_MANAGEMENT, 0xFFFE, "Attribute Reporting Status" ) |
10399 | | |
10400 | | VALUE_STRING_ENUM(zbee_zcl_energy_management_attr_names); |
10401 | | VALUE_STRING_ARRAY(zbee_zcl_energy_management_attr_names); |
10402 | | |
10403 | | /* Server Commands Received */ |
10404 | | #define zbee_zcl_energy_management_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
10405 | | XXX(ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_MANAGE_EVENT, 0x00, "Manage Event" ) |
10406 | | |
10407 | | VALUE_STRING_ENUM(zbee_zcl_energy_management_srv_rx_cmd_names); |
10408 | | VALUE_STRING_ARRAY(zbee_zcl_energy_management_srv_rx_cmd_names); |
10409 | | |
10410 | | /* Server Commands Generated */ |
10411 | | #define zbee_zcl_energy_management_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
10412 | | XXX(ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_REPORT_EVENT_STATUS, 0x00, "Report Event Status" ) |
10413 | | |
10414 | | VALUE_STRING_ENUM(zbee_zcl_energy_management_srv_tx_cmd_names); |
10415 | | VALUE_STRING_ARRAY(zbee_zcl_energy_management_srv_tx_cmd_names); |
10416 | | |
10417 | | /*************************/ |
10418 | | /* Function Declarations */ |
10419 | | /*************************/ |
10420 | | void proto_register_zbee_zcl_energy_management(void); |
10421 | | void proto_reg_handoff_zbee_zcl_energy_management(void); |
10422 | | |
10423 | | static void dissect_zbee_zcl_energy_management_manage_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10424 | | static void dissect_zbee_zcl_energy_management_report_event_status (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10425 | | |
10426 | | /*************************/ |
10427 | | /* Global Variables */ |
10428 | | /*************************/ |
10429 | | |
10430 | | /* Initialize the protocol and registered fields */ |
10431 | | static int proto_zbee_zcl_energy_management; |
10432 | | |
10433 | | static int hf_zbee_zcl_energy_management_srv_tx_cmd_id; |
10434 | | static int hf_zbee_zcl_energy_management_srv_rx_cmd_id; |
10435 | | static int hf_zbee_zcl_energy_management_attr_id; |
10436 | | static int hf_zbee_zcl_energy_management_attr_reporting_status; |
10437 | | static int hf_zbee_zcl_energy_management_issuer_event_id; |
10438 | | static int hf_zbee_zcl_energy_management_device_class; |
10439 | | static int hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace; |
10440 | | static int hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters; |
10441 | | static int hf_zbee_zcl_energy_management_device_class_water_heater; |
10442 | | static int hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi; |
10443 | | static int hf_zbee_zcl_energy_management_device_class_smart_appliances; |
10444 | | static int hf_zbee_zcl_energy_management_device_class_irrigation_pump; |
10445 | | static int hf_zbee_zcl_energy_management_device_class_managed_c_i_loads; |
10446 | | static int hf_zbee_zcl_energy_management_device_class_simple_misc_loads; |
10447 | | static int hf_zbee_zcl_energy_management_device_class_exterior_lighting; |
10448 | | static int hf_zbee_zcl_energy_management_device_class_interior_lighting; |
10449 | | static int hf_zbee_zcl_energy_management_device_class_electric_vehicle; |
10450 | | static int hf_zbee_zcl_energy_management_device_class_generation_systems; |
10451 | | static int hf_zbee_zcl_energy_management_device_class_reserved; |
10452 | | static int hf_zbee_zcl_energy_management_utility_enrollment_group; |
10453 | | static int hf_zbee_zcl_energy_management_action_required; |
10454 | | static int hf_zbee_zcl_energy_management_action_required_opt_out_of_event; |
10455 | | static int hf_zbee_zcl_energy_management_action_required_opt_into_event; |
10456 | | static int hf_zbee_zcl_energy_management_action_required_disable_duty_cycling; |
10457 | | static int hf_zbee_zcl_energy_management_action_required_enable_duty_cycling; |
10458 | | static int hf_zbee_zcl_energy_management_action_required_reserved; |
10459 | | |
10460 | | static int hf_zbee_zcl_energy_management_report_event_issuer_event_id; |
10461 | | static int hf_zbee_zcl_energy_management_report_event_event_status; |
10462 | | static int hf_zbee_zcl_energy_management_report_event_event_status_time; |
10463 | | static int hf_zbee_zcl_energy_management_report_event_criticality_level_applied; |
10464 | | static int hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied; |
10465 | | static int hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied; |
10466 | | static int hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage; |
10467 | | static int hf_zbee_zcl_energy_management_report_event_duty_cycle; |
10468 | | static int hf_zbee_zcl_energy_management_report_event_event_control; |
10469 | | static int hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time; |
10470 | | static int hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time; |
10471 | | static int hf_zbee_zcl_energy_management_report_event_event_control_reserved; |
10472 | | |
10473 | | |
10474 | | static int* const zbee_zcl_energy_management_device_classes[] = { |
10475 | | &hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace, |
10476 | | &hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters, |
10477 | | &hf_zbee_zcl_energy_management_device_class_water_heater, |
10478 | | &hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi, |
10479 | | &hf_zbee_zcl_energy_management_device_class_smart_appliances, |
10480 | | &hf_zbee_zcl_energy_management_device_class_irrigation_pump, |
10481 | | &hf_zbee_zcl_energy_management_device_class_managed_c_i_loads, |
10482 | | &hf_zbee_zcl_energy_management_device_class_simple_misc_loads, |
10483 | | &hf_zbee_zcl_energy_management_device_class_exterior_lighting, |
10484 | | &hf_zbee_zcl_energy_management_device_class_interior_lighting, |
10485 | | &hf_zbee_zcl_energy_management_device_class_electric_vehicle, |
10486 | | &hf_zbee_zcl_energy_management_device_class_generation_systems, |
10487 | | &hf_zbee_zcl_energy_management_device_class_reserved, |
10488 | | NULL |
10489 | | }; |
10490 | | |
10491 | | static int* const zbee_zcl_energy_management_action_required[] = { |
10492 | | &hf_zbee_zcl_energy_management_action_required_opt_out_of_event, |
10493 | | &hf_zbee_zcl_energy_management_action_required_opt_into_event, |
10494 | | &hf_zbee_zcl_energy_management_action_required_disable_duty_cycling, |
10495 | | &hf_zbee_zcl_energy_management_action_required_enable_duty_cycling, |
10496 | | &hf_zbee_zcl_energy_management_action_required_reserved, |
10497 | | NULL |
10498 | | }; |
10499 | | |
10500 | | static int* const hf_zbee_zcl_energy_management_event_control_flags[] = { |
10501 | | &hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time, |
10502 | | &hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time, |
10503 | | &hf_zbee_zcl_energy_management_report_event_event_control_reserved, |
10504 | | NULL |
10505 | | }; |
10506 | | |
10507 | | /* Initialize the subtree pointers */ |
10508 | | static int ett_zbee_zcl_energy_management; |
10509 | | static int ett_zbee_zcl_energy_management_device_class; |
10510 | | static int ett_zbee_zcl_energy_management_actions_required; |
10511 | | static int ett_zbee_zcl_energy_management_report_event_event_control; |
10512 | | |
10513 | | static const range_string zbee_zcl_energy_management_load_control_event_criticality_level[] = { |
10514 | | { 0x0, 0x0, "Reserved" }, |
10515 | | { 0x1, 0x1, "Green" }, |
10516 | | { 0x2, 0x2, "1" }, |
10517 | | { 0x3, 0x3, "2" }, |
10518 | | { 0x4, 0x4, "3" }, |
10519 | | { 0x5, 0x5, "4" }, |
10520 | | { 0x6, 0x6, "5" }, |
10521 | | { 0x7, 0x7, "Emergency" }, |
10522 | | { 0x8, 0x8, "Planned Outage" }, |
10523 | | { 0x9, 0x9, "Service Disconnect" }, |
10524 | | { 0x0A, 0x0F, "Utility Defined" }, |
10525 | | { 0x10, 0xFF, "Reserved" }, |
10526 | | { 0, 0, NULL } |
10527 | | }; |
10528 | | |
10529 | | /*************************/ |
10530 | | /* Function Bodies */ |
10531 | | /*************************/ |
10532 | | |
10533 | | /** |
10534 | | *This function is called by ZCL foundation dissector in order to decode |
10535 | | * |
10536 | | *@param tree pointer to data tree Wireshark uses to display packet. |
10537 | | *@param tvb pointer to buffer containing raw packet. |
10538 | | *@param offset pointer to buffer offset |
10539 | | *@param attr_id attribute identifier |
10540 | | *@param data_type attribute data type |
10541 | | *@param client_attr ZCL client |
10542 | | */ |
10543 | | static void |
10544 | | dissect_zcl_energy_management_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
10545 | 150 | { |
10546 | 150 | switch (attr_id) { |
10547 | | /* applies to all SE clusters */ |
10548 | 5 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_ENERGY_MANAGEMENT: |
10549 | 5 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
10550 | 5 | *offset += 1; |
10551 | 5 | break; |
10552 | | |
10553 | 145 | default: /* Catch all */ |
10554 | 145 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
10555 | 145 | break; |
10556 | 150 | } |
10557 | 150 | } /*dissect_zcl_energy_management_attr_data*/ |
10558 | | |
10559 | | /** |
10560 | | *ZigBee ZCL Energy Management cluster dissector for wireshark. |
10561 | | * |
10562 | | *@param tvb pointer to buffer containing raw packet. |
10563 | | *@param tree pointer to data tree Wireshark uses to display packet. |
10564 | | *@param offset pointer to buffer offset |
10565 | | */ |
10566 | | static void |
10567 | | dissect_zbee_zcl_energy_management_manage_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
10568 | 0 | { |
10569 | | /* Issuer Event ID */ |
10570 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_issuer_event_id, tvb, |
10571 | 0 | *offset, 4, ENC_LITTLE_ENDIAN); |
10572 | 0 | *offset += 4; |
10573 | | |
10574 | | /* Device Class */ |
10575 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_energy_management_device_class, ett_zbee_zcl_energy_management_device_class, |
10576 | 0 | zbee_zcl_energy_management_device_classes, ENC_LITTLE_ENDIAN); |
10577 | 0 | *offset += 2; |
10578 | | |
10579 | | /* Utility Enrollment Group */ |
10580 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_utility_enrollment_group, tvb, |
10581 | 0 | *offset, 1, ENC_NA); |
10582 | 0 | *offset += 1; |
10583 | | |
10584 | | /* Action(s) Required */ |
10585 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_energy_management_action_required, ett_zbee_zcl_energy_management_actions_required, |
10586 | 0 | zbee_zcl_energy_management_action_required, ENC_NA); |
10587 | 0 | *offset += 1; |
10588 | 0 | } |
10589 | | |
10590 | | /** |
10591 | | *ZigBee ZCL Energy Management cluster dissector for wireshark. |
10592 | | * |
10593 | | *@param tvb pointer to buffer containing raw packet. |
10594 | | *@param tree pointer to data tree Wireshark uses to display packet. |
10595 | | *@param offset pointer to buffer offset |
10596 | | */ |
10597 | | static void |
10598 | | dissect_zbee_zcl_energy_management_report_event_status(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
10599 | 0 | { |
10600 | | /* Event Control */ |
10601 | | |
10602 | | /* Issuer Event ID */ |
10603 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_issuer_event_id, tvb, |
10604 | 0 | *offset, 4, ENC_LITTLE_ENDIAN); |
10605 | 0 | *offset += 4; |
10606 | | |
10607 | | /* Event Status */ |
10608 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_event_status, tvb, *offset, 1, ENC_NA); |
10609 | 0 | *offset += 1; |
10610 | | |
10611 | | /* Event Status Time */ |
10612 | 0 | 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); |
10613 | 0 | *offset += 4; |
10614 | | |
10615 | | /* Criticality Level Applied */ |
10616 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_criticality_level_applied, tvb, |
10617 | 0 | *offset, 1, ENC_NA); |
10618 | 0 | *offset += 1; |
10619 | | |
10620 | | /* Cooling Temperature Set Point Applied */ |
10621 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied, tvb, |
10622 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
10623 | 0 | *offset += 2; |
10624 | | |
10625 | | /* Heating Temperature Set Point Applied */ |
10626 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied, tvb, |
10627 | 0 | *offset, 2, ENC_LITTLE_ENDIAN); |
10628 | 0 | *offset += 2; |
10629 | | |
10630 | | /* Average Load Adjustment Percentage Applied */ |
10631 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage, tvb, |
10632 | 0 | *offset, 1, ENC_NA); |
10633 | 0 | *offset += 1; |
10634 | | |
10635 | | /* Duty Cycle Applied */ |
10636 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_energy_management_report_event_duty_cycle, tvb, |
10637 | 0 | *offset, 1, ENC_NA); |
10638 | 0 | *offset += 1; |
10639 | | |
10640 | | /* Event Control */ |
10641 | 0 | 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, |
10642 | 0 | hf_zbee_zcl_energy_management_event_control_flags, ENC_LITTLE_ENDIAN); |
10643 | 0 | *offset += 1; |
10644 | |
|
10645 | 0 | } /*dissect_zbee_zcl_energy_management_report_event_status*/ |
10646 | | |
10647 | | /** |
10648 | | *ZigBee ZCL Energy Management cluster dissector for wireshark. |
10649 | | * |
10650 | | *@param tvb pointer to buffer containing raw packet. |
10651 | | *@param pinfo pointer to packet information fields |
10652 | | *@param tree pointer to data tree Wireshark uses to display packet. |
10653 | | */ |
10654 | | static int |
10655 | | dissect_zbee_zcl_energy_management(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
10656 | 0 | { |
10657 | 0 | zbee_zcl_packet *zcl; |
10658 | 0 | unsigned offset = 0; |
10659 | 0 | uint8_t cmd_id; |
10660 | 0 | int rem_len; |
10661 | | |
10662 | | /* Reject the packet if data is NULL */ |
10663 | 0 | if (data == NULL) |
10664 | 0 | return 0; |
10665 | 0 | zcl = (zbee_zcl_packet *)data; |
10666 | 0 | cmd_id = zcl->cmd_id; |
10667 | | |
10668 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
10669 | 0 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
10670 | | /* Append the command name to the info column. */ |
10671 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
10672 | 0 | val_to_str_const(cmd_id, zbee_zcl_energy_management_srv_rx_cmd_names, "Unknown Command"), |
10673 | 0 | zcl->tran_seqno); |
10674 | | |
10675 | | /* Add the command ID. */ |
10676 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_energy_management_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
10677 | | |
10678 | | /* Check is this command has a payload, than add the payload tree */ |
10679 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
10680 | 0 | if (rem_len > 0) { |
10681 | 0 | proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_energy_management, NULL, "Payload"); |
10682 | | |
10683 | | /* Call the appropriate command dissector */ |
10684 | 0 | switch (cmd_id) { |
10685 | | |
10686 | 0 | case ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_MANAGE_EVENT: |
10687 | 0 | dissect_zbee_zcl_energy_management_manage_event(tvb, tree, &offset); |
10688 | 0 | break; |
10689 | | |
10690 | 0 | default: |
10691 | 0 | break; |
10692 | 0 | } |
10693 | 0 | } |
10694 | 0 | } |
10695 | 0 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
10696 | | /* Append the command name to the info column. */ |
10697 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
10698 | 0 | val_to_str_const(cmd_id, zbee_zcl_energy_management_srv_tx_cmd_names, "Unknown Command"), |
10699 | 0 | zcl->tran_seqno); |
10700 | | |
10701 | | /* Add the command ID. */ |
10702 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_energy_management_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
10703 | | |
10704 | | /* Check is this command has a payload, than add the payload tree */ |
10705 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
10706 | 0 | if (rem_len > 0) { |
10707 | 0 | proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_energy_management, NULL, "Payload"); |
10708 | | |
10709 | | /* Call the appropriate command dissector */ |
10710 | 0 | switch (cmd_id) { |
10711 | | |
10712 | 0 | case ZBEE_ZCL_CMD_ID_ENERGY_MANAGEMENT_REPORT_EVENT_STATUS: |
10713 | 0 | dissect_zbee_zcl_energy_management_report_event_status(tvb, tree, &offset); |
10714 | 0 | break; |
10715 | | |
10716 | 0 | default: |
10717 | 0 | break; |
10718 | 0 | } |
10719 | 0 | } |
10720 | 0 | } |
10721 | | |
10722 | 0 | return tvb_captured_length(tvb); |
10723 | 0 | } /*dissect_zbee_zcl_energy_management*/ |
10724 | | |
10725 | | /** |
10726 | | *This function registers the ZCL Energy_Management dissector |
10727 | | * |
10728 | | */ |
10729 | | void |
10730 | | proto_register_zbee_zcl_energy_management(void) |
10731 | 15 | { |
10732 | 15 | static hf_register_info hf[] = { |
10733 | | |
10734 | 15 | { &hf_zbee_zcl_energy_management_attr_id, |
10735 | 15 | { "Attribute", "zbee_zcl_se.energy_management.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_energy_management_attr_names), |
10736 | 15 | 0x0, NULL, HFILL } }, |
10737 | | |
10738 | 15 | { &hf_zbee_zcl_energy_management_attr_reporting_status, /* common to all SE clusters */ |
10739 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.energy_management.attr.attr_reporting_status", |
10740 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
10741 | | |
10742 | 15 | { &hf_zbee_zcl_energy_management_srv_tx_cmd_id, |
10743 | 15 | { "Command", "zbee_zcl_se.energy_management.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_energy_management_srv_tx_cmd_names), |
10744 | 15 | 0x00, NULL, HFILL } }, |
10745 | | |
10746 | 15 | { &hf_zbee_zcl_energy_management_srv_rx_cmd_id, |
10747 | 15 | { "Command", "zbee_zcl_se.energy_management.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_energy_management_srv_rx_cmd_names), |
10748 | 15 | 0x00, NULL, HFILL } }, |
10749 | | |
10750 | 15 | { &hf_zbee_zcl_energy_management_issuer_event_id, |
10751 | 15 | { "Issuer Event ID", "zbee_zcl_se.energy_management.issuer_id", |
10752 | 15 | FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10753 | | |
10754 | 15 | { &hf_zbee_zcl_energy_management_device_class, |
10755 | 15 | { "Device Class", "zbee_zcl_se.energy_management.device_class", |
10756 | 15 | FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10757 | | |
10758 | 15 | { &hf_zbee_zcl_energy_management_device_class_hvac_compressor_or_furnace, |
10759 | 15 | { "HVAC Compressor or Furnace", "zbee_zcl_se.energy_management.device_class.hvac_compressor_or_furnace", |
10760 | 15 | FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL } }, |
10761 | | |
10762 | 15 | { &hf_zbee_zcl_energy_management_device_class_strip_heaters_baseboard_heaters, |
10763 | 15 | { "Strip Heaters/Baseboard Heaters", "zbee_zcl_se.energy_management.device_class.strip_heaters_baseboard_heaters", |
10764 | 15 | FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } }, |
10765 | | |
10766 | 15 | { &hf_zbee_zcl_energy_management_device_class_water_heater, |
10767 | 15 | { "Water Heater", "zbee_zcl_se.energy_management.device_class.water_heater", |
10768 | 15 | FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } }, |
10769 | | |
10770 | 15 | { &hf_zbee_zcl_energy_management_device_class_pool_pump_spa_jacuzzi, |
10771 | 15 | { "Pool Pump/Spa/Jacuzzi", "zbee_zcl_se.energy_management.device_class.pool_pump_spa_jacuzzi", |
10772 | 15 | FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } }, |
10773 | | |
10774 | 15 | { &hf_zbee_zcl_energy_management_device_class_smart_appliances, |
10775 | 15 | { "Smart Appliances", "zbee_zcl_se.energy_management.device_class.smart_appliances", |
10776 | 15 | FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL } }, |
10777 | | |
10778 | 15 | { &hf_zbee_zcl_energy_management_device_class_irrigation_pump, |
10779 | 15 | { "Irrigation Pump", "zbee_zcl_se.energy_management.device_class.irrigation_pump", |
10780 | 15 | FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL } }, |
10781 | | |
10782 | 15 | { &hf_zbee_zcl_energy_management_device_class_managed_c_i_loads, |
10783 | 15 | { "Managed Commercial & Industrial (C&I) loads", "zbee_zcl_se.energy_management.device_class.managed_c_i_loads", |
10784 | 15 | FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL } }, |
10785 | | |
10786 | 15 | { &hf_zbee_zcl_energy_management_device_class_simple_misc_loads, |
10787 | 15 | { "Simple misc. (Residential On/Off) loads", "zbee_zcl_se.energy_management.device_class.simple_misc_loads", |
10788 | 15 | FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL } }, |
10789 | | |
10790 | 15 | { &hf_zbee_zcl_energy_management_device_class_exterior_lighting, |
10791 | 15 | { "Exterior Lighting", "zbee_zcl_se.energy_management.device_class.exterior_lighting", |
10792 | 15 | FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } }, |
10793 | | |
10794 | 15 | { &hf_zbee_zcl_energy_management_device_class_interior_lighting, |
10795 | 15 | { "Interior Lighting", "zbee_zcl_se.energy_management.device_class.interior_lighting", |
10796 | 15 | FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } }, |
10797 | | |
10798 | 15 | { &hf_zbee_zcl_energy_management_device_class_electric_vehicle, |
10799 | 15 | { "Electric Vehicle", "zbee_zcl_se.energy_management.device_class.electric_vehicle", |
10800 | 15 | FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } }, |
10801 | | |
10802 | 15 | { &hf_zbee_zcl_energy_management_device_class_generation_systems, |
10803 | 15 | { "Generation Systems", "zbee_zcl_se.energy_management.device_class.generation_systems", |
10804 | 15 | FT_BOOLEAN, 16, NULL, 0x0800, NULL, HFILL } }, |
10805 | | |
10806 | 15 | { &hf_zbee_zcl_energy_management_device_class_reserved , |
10807 | 15 | { "Reserved", "zbee_zcl_se.energy_management.device_class.reserved", |
10808 | 15 | FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL } }, |
10809 | | |
10810 | 15 | { &hf_zbee_zcl_energy_management_utility_enrollment_group, |
10811 | 15 | { "Utility Enrollment Group", "zbee_zcl_se.energy_management.utility_enrollment_group", |
10812 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10813 | | |
10814 | 15 | { &hf_zbee_zcl_energy_management_action_required, |
10815 | 15 | { "Action(s) Required", "zbee_zcl_se.energy_management.action_required", |
10816 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10817 | | |
10818 | 15 | { &hf_zbee_zcl_energy_management_action_required_opt_out_of_event, |
10819 | 15 | { "Opt Out of Event", "zbee_zcl_se.energy_management.action_required.opt_out_of_event", |
10820 | 15 | FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, |
10821 | | |
10822 | 15 | { &hf_zbee_zcl_energy_management_action_required_opt_into_event, |
10823 | 15 | { "Opt Into Event", "zbee_zcl_se.energy_management.action_required.opt_into_event", |
10824 | 15 | FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL } }, |
10825 | | |
10826 | 15 | { &hf_zbee_zcl_energy_management_action_required_disable_duty_cycling, |
10827 | 15 | { "Disable Duty Cycling", "zbee_zcl_se.energy_management.action_required.disable_duty_cycling", |
10828 | 15 | FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, |
10829 | | |
10830 | 15 | { &hf_zbee_zcl_energy_management_action_required_enable_duty_cycling, |
10831 | 15 | { "Enable Duty Cycling", "zbee_zcl_se.energy_management.action_required.enable_duty_cycling", |
10832 | 15 | FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, |
10833 | | |
10834 | 15 | { &hf_zbee_zcl_energy_management_action_required_reserved, |
10835 | 15 | { "Reserved", "zbee_zcl_se.energy_management.action_required.reserved", |
10836 | 15 | FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL } }, |
10837 | | |
10838 | 15 | { &hf_zbee_zcl_energy_management_report_event_issuer_event_id, |
10839 | 15 | { "Issuer Event ID", "zbee_zcl_se.energy_management.report_event.issuer_id", |
10840 | 15 | FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10841 | | |
10842 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_status, |
10843 | 15 | { "Event Status", "zbee_zcl_se.energy_management.report_event.event_status", |
10844 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10845 | | |
10846 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_status_time, |
10847 | 15 | { "Event Status Time", "zbee_zcl_se.energy_management.report_event.event_status_time", |
10848 | 15 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0, NULL, HFILL } }, |
10849 | | |
10850 | 15 | { &hf_zbee_zcl_energy_management_report_event_criticality_level_applied , |
10851 | 15 | { "Criticality Level Applied", "zbee_zcl_se.energy_management.report_event.criticality_level_applied", |
10852 | 15 | FT_UINT8, BASE_HEX | BASE_RANGE_STRING, RVALS(zbee_zcl_energy_management_load_control_event_criticality_level), 0x0, NULL, HFILL } }, |
10853 | | |
10854 | 15 | { &hf_zbee_zcl_energy_management_report_event_cooling_temp_set_point_applied, |
10855 | 15 | { "Cooling Temperature Set Point Applied", "zbee_zcl_se.energy_management.report_event.cooling_temperature_set_point_applied", |
10856 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
10857 | | |
10858 | 15 | { &hf_zbee_zcl_energy_management_report_event_heating_temp_set_point_applied, |
10859 | 15 | { "Heating Temperature Set Point Applied", "zbee_zcl_se.energy_management.report_event.heating_temperature_set_point_applied", |
10860 | 15 | FT_INT16, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_temp_set_point), 0x0, NULL, HFILL } }, |
10861 | | |
10862 | 15 | { &hf_zbee_zcl_energy_management_report_event_average_load_adjustment_percentage , |
10863 | 15 | { "Average Load Adjustment Percentage Applied", "zbee_zcl_se.energy_management.report_event.average_load_adjustment_percentage_applied", |
10864 | 15 | FT_INT8, BASE_CUSTOM, CF_FUNC(decode_zcl_drlc_average_load_adjustment_percentage), 0x0, NULL, HFILL } }, |
10865 | | |
10866 | 15 | { &hf_zbee_zcl_energy_management_report_event_duty_cycle, |
10867 | 15 | { "Duty Cycle Applied", "zbee_zcl_se.energy_management.report_event.duty_cycle_applied", |
10868 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10869 | | |
10870 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_control, |
10871 | 15 | { "Event Control", "zbee_zcl_se.energy_management.report_event.event_control", |
10872 | 15 | FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, |
10873 | | |
10874 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_control_randomize_start_time, |
10875 | 15 | { "Randomize Start time", "zbee_zcl_se.energy_management.report_event.randomize_start_time", |
10876 | 15 | FT_BOOLEAN, 8, TFS(&zbee_zcl_drlc_randomize_start_tfs), 0x01, NULL, HFILL } }, |
10877 | | |
10878 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_control_randomize_duration_time, |
10879 | 15 | { "Randomize Duration time", "zbee_zcl_se.energy_management.report_event.randomize_duration_time", |
10880 | 15 | FT_BOOLEAN, 8, TFS(&zbee_zcl_drlc_randomize_duration_tfs), 0x02, NULL, HFILL } }, |
10881 | | |
10882 | 15 | { &hf_zbee_zcl_energy_management_report_event_event_control_reserved, |
10883 | 15 | { "Reserved", "zbee_zcl_se.energy_management.reserved", |
10884 | 15 | FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL } }, |
10885 | 15 | }; |
10886 | | |
10887 | | /* ZCL Energy_Management subtrees */ |
10888 | 15 | int *ett[] = { |
10889 | 15 | &ett_zbee_zcl_energy_management, |
10890 | 15 | &ett_zbee_zcl_energy_management_device_class, |
10891 | 15 | &ett_zbee_zcl_energy_management_actions_required, |
10892 | 15 | &ett_zbee_zcl_energy_management_report_event_event_control, |
10893 | 15 | }; |
10894 | | |
10895 | | /* Register the ZigBee ZCL Energy Management cluster protocol name and description */ |
10896 | 15 | proto_zbee_zcl_energy_management = proto_register_protocol("ZigBee ZCL Energy Management", "ZCL Energy Management", ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT); |
10897 | 15 | proto_register_field_array(proto_zbee_zcl_energy_management, hf, array_length(hf)); |
10898 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
10899 | | |
10900 | | /* Register the ZigBee ZCL Energy Management dissector. */ |
10901 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT, dissect_zbee_zcl_energy_management, proto_zbee_zcl_energy_management); |
10902 | 15 | } /*proto_register_zbee_zcl_energy_management*/ |
10903 | | |
10904 | | /** |
10905 | | *Hands off the ZCL Energy_Management dissector. |
10906 | | * |
10907 | | */ |
10908 | | void |
10909 | | proto_reg_handoff_zbee_zcl_energy_management(void) |
10910 | 15 | { |
10911 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_ENERGY_MANAGEMENT, |
10912 | 15 | proto_zbee_zcl_energy_management, |
10913 | 15 | ett_zbee_zcl_energy_management, |
10914 | 15 | ZBEE_ZCL_CID_ENERGY_MANAGEMENT, |
10915 | 15 | ZBEE_MFG_CODE_NONE, |
10916 | 15 | hf_zbee_zcl_energy_management_attr_id, |
10917 | 15 | -1, |
10918 | 15 | hf_zbee_zcl_energy_management_srv_rx_cmd_id, |
10919 | 15 | hf_zbee_zcl_energy_management_srv_tx_cmd_id, |
10920 | 15 | dissect_zcl_energy_management_attr_data |
10921 | 15 | ); |
10922 | 15 | } /*proto_reg_handoff_zbee_zcl_energy_management*/ |
10923 | | |
10924 | | |
10925 | | /* ########################################################################## */ |
10926 | | /* #### (0x0707) CALENDAR CLUSTER ########################################### */ |
10927 | | /* ########################################################################## */ |
10928 | | |
10929 | | /* Attributes */ |
10930 | | #define zbee_zcl_calendar_attr_names_VALUE_STRING_LIST(XXX) \ |
10931 | | /* Auxiliary Switch Label Attribute Set */ \ |
10932 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_1_LABEL, 0x0000, "Aux Switch 1 Label" ) \ |
10933 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_2_LABEL, 0x0001, "Aux Switch 2 Label" ) \ |
10934 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_3_LABEL, 0x0002, "Aux Switch 3 Label" ) \ |
10935 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_4_LABEL, 0x0003, "Aux Switch 4 Label" ) \ |
10936 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_5_LABEL, 0x0004, "Aux Switch 5 Label" ) \ |
10937 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_6_LABEL, 0x0005, "Aux Switch 6 Label" ) \ |
10938 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_7_LABEL, 0x0006, "Aux Switch 7 Label" ) \ |
10939 | | XXX(ZBEE_ZCL_ATTR_ID_CAL_AUX_SWITCH_8_LABEL, 0x0007, "Aux Switch 8 Label" ) \ |
10940 | | /* Smart Energy */ \ |
10941 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_CAL, 0xFFFE, "Attribute Reporting Status" ) |
10942 | | |
10943 | | VALUE_STRING_ENUM(zbee_zcl_calendar_attr_names); |
10944 | | VALUE_STRING_ARRAY(zbee_zcl_calendar_attr_names); |
10945 | | |
10946 | | /* Server Commands Received */ |
10947 | | #define zbee_zcl_calendar_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
10948 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR, 0x00, "Get Calendar" ) \ |
10949 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_DAY_PROFILES, 0x01, "Get Day Profiles" ) \ |
10950 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_WEEK_PROFILES, 0x02, "Get Week Profiles" ) \ |
10951 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_SEASONS, 0x03, "Get Seasons" ) \ |
10952 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_SPECIAL_DAYS, 0x04, "Get Special Days" ) \ |
10953 | | XXX(ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR_CANCELLATION, 0x05, "Get Calendar Cancellation" ) |
10954 | | |
10955 | | VALUE_STRING_ENUM(zbee_zcl_calendar_srv_rx_cmd_names); |
10956 | | VALUE_STRING_ARRAY(zbee_zcl_calendar_srv_rx_cmd_names); |
10957 | | |
10958 | | /* Server Commands Generated */ |
10959 | | #define zbee_zcl_calendar_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
10960 | | XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_CALENDAR, 0x00, "Publish Calendar" ) \ |
10961 | | XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_DAY_PROFILE, 0x01, "Publish Day Profile" ) \ |
10962 | | XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_WEEK_PROFILE, 0x02, "Publish Week Profile" ) \ |
10963 | | XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SEASONS, 0x03, "Publish Seasons" ) \ |
10964 | | XXX(ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SPECIAL_DAYS, 0x04, "Publish Special Days" ) \ |
10965 | | XXX(ZBEE_ZCL_CMD_ID_CAL_CANCEL_CALENDAR, 0x05, "Cancel Calendar" ) |
10966 | | |
10967 | | VALUE_STRING_ENUM(zbee_zcl_calendar_srv_tx_cmd_names); |
10968 | | VALUE_STRING_ARRAY(zbee_zcl_calendar_srv_tx_cmd_names); |
10969 | | |
10970 | | /*************************/ |
10971 | | /* Function Declarations */ |
10972 | | /*************************/ |
10973 | | void proto_register_zbee_zcl_calendar(void); |
10974 | | void proto_reg_handoff_zbee_zcl_calendar(void); |
10975 | | |
10976 | | /* Command Dissector Helpers */ |
10977 | | static void dissect_zcl_calendar_get_calendar (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10978 | | static void dissect_zcl_calendar_get_day_profiles(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10979 | | static void dissect_zcl_calendar_get_week_profiles(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10980 | | static void dissect_zcl_calendar_get_seasons(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10981 | | static void dissect_zcl_calendar_get_special_days(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10982 | | static void dissect_zcl_calendar_publish_calendar(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10983 | | static void dissect_zcl_calendar_publish_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10984 | | static void dissect_zcl_calendar_publish_week_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10985 | | static void dissect_zcl_calendar_publish_seasons(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10986 | | static void dissect_zcl_calendar_publish_special_days(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10987 | | static void dissect_zcl_calendar_cancel(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
10988 | | |
10989 | | /*************************/ |
10990 | | /* Global Variables */ |
10991 | | /*************************/ |
10992 | | |
10993 | | /* Initialize the protocol and registered fields */ |
10994 | | static int proto_zbee_zcl_calendar; |
10995 | | |
10996 | | static int hf_zbee_zcl_calendar_srv_tx_cmd_id; |
10997 | | static int hf_zbee_zcl_calendar_srv_rx_cmd_id; |
10998 | | static int hf_zbee_zcl_calendar_attr_id; |
10999 | | static int hf_zbee_zcl_calendar_attr_reporting_status; |
11000 | | static int hf_zbee_zcl_calendar_type; |
11001 | | static int hf_zbee_zcl_calendar_start_time; |
11002 | | static int hf_zbee_zcl_calendar_start_time_with_cancel; |
11003 | | static int hf_zbee_zcl_calendar_earliest_start_time; |
11004 | | static int hf_zbee_zcl_calendar_time_reference; |
11005 | | static int hf_zbee_zcl_calendar_name; |
11006 | | static int hf_zbee_zcl_calendar_command_index; |
11007 | | static int hf_zbee_zcl_calendar_date_year; |
11008 | | static int hf_zbee_zcl_calendar_date_month; |
11009 | | static int hf_zbee_zcl_calendar_date_month_day; |
11010 | | static int hf_zbee_zcl_calendar_date_week_day; |
11011 | | static int hf_zbee_zcl_calendar_provider_id; |
11012 | | static int hf_zbee_zcl_calendar_issuer_event_id; |
11013 | | static int hf_zbee_zcl_calendar_min_issuer_event_id; |
11014 | | static int hf_zbee_zcl_calendar_issuer_calendar_id; |
11015 | | static int hf_zbee_zcl_calendar_day_id; |
11016 | | static int hf_zbee_zcl_calendar_day_id_ref; |
11017 | | static int hf_zbee_zcl_calendar_day_id_ref_monday; |
11018 | | static int hf_zbee_zcl_calendar_day_id_ref_tuesday; |
11019 | | static int hf_zbee_zcl_calendar_day_id_ref_wednesday; |
11020 | | static int hf_zbee_zcl_calendar_day_id_ref_thursday; |
11021 | | static int hf_zbee_zcl_calendar_day_id_ref_friday; |
11022 | | static int hf_zbee_zcl_calendar_day_id_ref_saturday; |
11023 | | static int hf_zbee_zcl_calendar_day_id_ref_sunday; |
11024 | | static int hf_zbee_zcl_calendar_week_id; |
11025 | | static int hf_zbee_zcl_calendar_week_id_ref; |
11026 | | static int hf_zbee_zcl_calendar_start_day_id; |
11027 | | static int hf_zbee_zcl_calendar_start_week_id; |
11028 | | static int hf_zbee_zcl_calendar_number_of_calendars; |
11029 | | static int hf_zbee_zcl_calendar_number_of_events; |
11030 | | static int hf_zbee_zcl_calendar_number_of_days; |
11031 | | static int hf_zbee_zcl_calendar_number_of_weeks; |
11032 | | static int hf_zbee_zcl_calendar_number_of_seasons; |
11033 | | static int hf_zbee_zcl_calendar_number_of_day_profiles; |
11034 | | static int hf_zbee_zcl_calendar_number_of_week_profiles; |
11035 | | static int hf_zbee_zcl_calendar_total_number_of_schedule_entries; |
11036 | | static int hf_zbee_zcl_calendar_total_number_of_special_days; |
11037 | | static int hf_zbee_zcl_calendar_total_number_of_commands; |
11038 | | static int hf_zbee_zcl_calendar_schedule_entry_start_time; |
11039 | | static int hf_zbee_zcl_calendar_schedule_entry_price_tier; |
11040 | | static int hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable; |
11041 | | static int hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state; |
11042 | | |
11043 | | /* Initialize the subtree pointers */ |
11044 | | static int ett_zbee_zcl_calendar; |
11045 | | static int ett_zbee_zcl_calendar_special_day_date; |
11046 | | static int ett_zbee_zcl_calendar_season_start_date; |
11047 | | |
11048 | | #define zbee_zcl_calendar_type_names_VALUE_STRING_LIST(XXX) \ |
11049 | | XXX(ZBEE_ZCL_CALENDAR_TYPE_DELIVERED, 0x00, "Delivered Calendar" ) \ |
11050 | | XXX(ZBEE_ZCL_CALENDAR_TYPE_RECEIVED, 0x01, "Received Calendar" ) \ |
11051 | | XXX(ZBEE_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED, 0x02, "Delivered and Received Calendar" ) \ |
11052 | | XXX(ZBEE_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT, 0x03, "Friendly Credit Calendar" ) \ |
11053 | | XXX(ZBEE_ZCL_CALENDAR_TYPE_AUXILIARY_LOAD_SWITCH, 0x04, "Auxiliary Load Switch Calendar" ) |
11054 | | |
11055 | | VALUE_STRING_ENUM(zbee_zcl_calendar_type_names); |
11056 | | VALUE_STRING_ARRAY(zbee_zcl_calendar_type_names); |
11057 | | |
11058 | | #define zbee_zcl_calendar_time_reference_names_VALUE_STRING_LIST(XXX) \ |
11059 | | XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_UTC_TIME, 0x00, "UTC Time" ) \ |
11060 | | XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_STANDARD_TIME, 0x01, "Standard Time" ) \ |
11061 | | XXX(ZBEE_ZCL_CALENDAR_TIME_REFERENCE_LOCAL_TIME, 0x02, "Local Time" ) |
11062 | | |
11063 | | VALUE_STRING_ENUM(zbee_zcl_calendar_time_reference_names); |
11064 | | VALUE_STRING_ARRAY(zbee_zcl_calendar_time_reference_names); |
11065 | | |
11066 | | /*************************/ |
11067 | | /* Function Bodies */ |
11068 | | /*************************/ |
11069 | | |
11070 | | /** |
11071 | | *This function is called by ZCL foundation dissector in order to decode |
11072 | | * |
11073 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11074 | | *@param tvb pointer to buffer containing raw packet. |
11075 | | *@param offset pointer to buffer offset |
11076 | | *@param attr_id attribute identifier |
11077 | | *@param data_type attribute data type |
11078 | | *@param client_attr ZCL client |
11079 | | */ |
11080 | | static void |
11081 | | dissect_zcl_calendar_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
11082 | 100 | { |
11083 | 100 | switch (attr_id) { |
11084 | | /* applies to all SE clusters */ |
11085 | 2 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_CAL: |
11086 | 2 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
11087 | 2 | *offset += 1; |
11088 | 2 | break; |
11089 | | |
11090 | 98 | default: /* Catch all */ |
11091 | 98 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
11092 | 98 | break; |
11093 | 100 | } |
11094 | 100 | } /*dissect_zcl_calendar_attr_data*/ |
11095 | | |
11096 | | /** |
11097 | | *ZigBee ZCL Calendar cluster dissector for wireshark. |
11098 | | * |
11099 | | *@param tvb pointer to buffer containing raw packet. |
11100 | | *@param pinfo pointer to packet information fields |
11101 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11102 | | */ |
11103 | | static int |
11104 | | dissect_zbee_zcl_calendar(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
11105 | 5 | { |
11106 | 5 | proto_tree *payload_tree; |
11107 | 5 | zbee_zcl_packet *zcl; |
11108 | 5 | unsigned offset = 0; |
11109 | 5 | uint8_t cmd_id; |
11110 | 5 | int rem_len; |
11111 | | |
11112 | | /* Reject the packet if data is NULL */ |
11113 | 5 | if (data == NULL) |
11114 | 0 | return 0; |
11115 | 5 | zcl = (zbee_zcl_packet *)data; |
11116 | 5 | cmd_id = zcl->cmd_id; |
11117 | | |
11118 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
11119 | 5 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
11120 | | /* Append the command name to the info column. */ |
11121 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
11122 | 1 | val_to_str_const(cmd_id, zbee_zcl_calendar_srv_rx_cmd_names, "Unknown Command"), |
11123 | 1 | zcl->tran_seqno); |
11124 | | |
11125 | | /* Add the command ID. */ |
11126 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_calendar_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
11127 | | |
11128 | | /* Check is this command has a payload, than add the payload tree */ |
11129 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
11130 | 1 | if (rem_len > 0) { |
11131 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_calendar, NULL, "Payload"); |
11132 | | |
11133 | | /* Call the appropriate command dissector */ |
11134 | 1 | switch (cmd_id) { |
11135 | | |
11136 | 0 | case ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR: |
11137 | 0 | dissect_zcl_calendar_get_calendar(tvb, payload_tree, &offset); |
11138 | 0 | break; |
11139 | | |
11140 | 1 | case ZBEE_ZCL_CMD_ID_CAL_GET_DAY_PROFILES: |
11141 | 1 | dissect_zcl_calendar_get_day_profiles(tvb, payload_tree, &offset); |
11142 | 1 | break; |
11143 | | |
11144 | 0 | case ZBEE_ZCL_CMD_ID_CAL_GET_WEEK_PROFILES: |
11145 | 0 | dissect_zcl_calendar_get_week_profiles(tvb, payload_tree, &offset); |
11146 | 0 | break; |
11147 | | |
11148 | 0 | case ZBEE_ZCL_CMD_ID_CAL_GET_SEASONS: |
11149 | 0 | dissect_zcl_calendar_get_seasons(tvb, payload_tree, &offset); |
11150 | 0 | break; |
11151 | | |
11152 | 0 | case ZBEE_ZCL_CMD_ID_CAL_GET_SPECIAL_DAYS: |
11153 | 0 | dissect_zcl_calendar_get_special_days(tvb, payload_tree, &offset); |
11154 | 0 | break; |
11155 | | |
11156 | 0 | case ZBEE_ZCL_CMD_ID_CAL_GET_CALENDAR_CANCELLATION: |
11157 | | /* No Payload */ |
11158 | 0 | break; |
11159 | | |
11160 | 0 | default: |
11161 | 0 | break; |
11162 | 1 | } |
11163 | 1 | } |
11164 | 1 | } |
11165 | 4 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
11166 | | /* Append the command name to the info column. */ |
11167 | 4 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
11168 | 4 | val_to_str_const(cmd_id, zbee_zcl_calendar_srv_tx_cmd_names, "Unknown Command"), |
11169 | 4 | zcl->tran_seqno); |
11170 | | |
11171 | | /* Add the command ID. */ |
11172 | 4 | proto_tree_add_uint(tree, hf_zbee_zcl_calendar_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
11173 | | |
11174 | | /* Check is this command has a payload, than add the payload tree */ |
11175 | 4 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
11176 | 4 | if (rem_len > 0) { |
11177 | 4 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_calendar, NULL, "Payload"); |
11178 | | |
11179 | | /* Call the appropriate command dissector */ |
11180 | 4 | switch (cmd_id) { |
11181 | | |
11182 | 0 | case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_CALENDAR: |
11183 | 0 | dissect_zcl_calendar_publish_calendar(tvb, payload_tree, &offset); |
11184 | 0 | break; |
11185 | | |
11186 | 3 | case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_DAY_PROFILE: |
11187 | 3 | dissect_zcl_calendar_publish_day_profile(tvb, payload_tree, &offset); |
11188 | 3 | break; |
11189 | | |
11190 | 0 | case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_WEEK_PROFILE: |
11191 | 0 | dissect_zcl_calendar_publish_week_profile(tvb, payload_tree, &offset); |
11192 | 0 | break; |
11193 | | |
11194 | 0 | case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SEASONS: |
11195 | 0 | dissect_zcl_calendar_publish_seasons(tvb, payload_tree, &offset); |
11196 | 0 | break; |
11197 | | |
11198 | 0 | case ZBEE_ZCL_CMD_ID_CAL_PUBLISH_SPECIAL_DAYS: |
11199 | 0 | dissect_zcl_calendar_publish_special_days(tvb, payload_tree, &offset); |
11200 | 0 | break; |
11201 | | |
11202 | 0 | case ZBEE_ZCL_CMD_ID_CAL_CANCEL_CALENDAR: |
11203 | 0 | dissect_zcl_calendar_cancel(tvb, payload_tree, &offset); |
11204 | 0 | break; |
11205 | | |
11206 | 1 | default: |
11207 | 1 | break; |
11208 | 4 | } |
11209 | 4 | } |
11210 | 4 | } |
11211 | | |
11212 | 5 | return tvb_captured_length(tvb); |
11213 | 5 | } /*dissect_zbee_zcl_calendar*/ |
11214 | | |
11215 | | /** |
11216 | | *This function manages the Get Calendar payload |
11217 | | * |
11218 | | *@param tvb pointer to buffer containing raw packet. |
11219 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11220 | | *@param offset pointer to offset from caller |
11221 | | */ |
11222 | | static void |
11223 | | dissect_zcl_calendar_get_calendar(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11224 | 0 | { |
11225 | | /* Earliest Start Time */ |
11226 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
11227 | 0 | *offset += 4; |
11228 | | |
11229 | | /* Min Issuer Event ID */ |
11230 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11231 | 0 | *offset += 4; |
11232 | | |
11233 | | /* Number of Calendars */ |
11234 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_calendars, tvb, *offset, 1, ENC_NA); |
11235 | 0 | *offset += 1; |
11236 | | |
11237 | | /* Calendar Type */ |
11238 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA); |
11239 | 0 | *offset += 1; |
11240 | | |
11241 | | /* Provider Id */ |
11242 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11243 | 0 | *offset += 4; |
11244 | 0 | } /*dissect_zcl_calendar_get_calendar*/ |
11245 | | |
11246 | | /** |
11247 | | *This function manages the Get Day Profiles payload |
11248 | | * |
11249 | | *@param tvb pointer to buffer containing raw packet. |
11250 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11251 | | *@param offset pointer to offset from caller |
11252 | | */ |
11253 | | static void |
11254 | | dissect_zcl_calendar_get_day_profiles(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11255 | 1 | { |
11256 | | /* Provider Id */ |
11257 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11258 | 1 | *offset += 4; |
11259 | | |
11260 | | /* Issuer Calendar ID */ |
11261 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11262 | 1 | *offset += 4; |
11263 | | |
11264 | | /* Start Day Id */ |
11265 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_start_day_id, tvb, *offset, 1, ENC_NA); |
11266 | 1 | *offset += 1; |
11267 | | |
11268 | | /* Number of Days */ |
11269 | 1 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_days, tvb, *offset, 1, ENC_NA); |
11270 | 1 | *offset += 1; |
11271 | 1 | } /*dissect_zcl_calendar_get_day_profiles*/ |
11272 | | |
11273 | | /** |
11274 | | *This function manages the Get Week Profiles payload |
11275 | | * |
11276 | | *@param tvb pointer to buffer containing raw packet. |
11277 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11278 | | *@param offset pointer to offset from caller |
11279 | | */ |
11280 | | static void |
11281 | | dissect_zcl_calendar_get_week_profiles(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11282 | 0 | { |
11283 | | /* Provider Id */ |
11284 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11285 | 0 | *offset += 4; |
11286 | | |
11287 | | /* Issuer Calendar ID */ |
11288 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11289 | 0 | *offset += 4; |
11290 | | |
11291 | | /* Start Week Id */ |
11292 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_start_week_id, tvb, *offset, 1, ENC_NA); |
11293 | 0 | *offset += 1; |
11294 | | |
11295 | | /* Number of Weeks */ |
11296 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_weeks, tvb, *offset, 1, ENC_NA); |
11297 | 0 | *offset += 1; |
11298 | 0 | } /*dissect_zcl_calendar_get_week_profiles*/ |
11299 | | |
11300 | | /** |
11301 | | *This function manages the Get Seasons payload |
11302 | | * |
11303 | | *@param tvb pointer to buffer containing raw packet. |
11304 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11305 | | *@param offset pointer to offset from caller |
11306 | | */ |
11307 | | static void |
11308 | | dissect_zcl_calendar_get_seasons(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11309 | 0 | { |
11310 | | /* Provider Id */ |
11311 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11312 | 0 | *offset += 4; |
11313 | | |
11314 | | /* Issuer Calendar ID */ |
11315 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11316 | 0 | *offset += 4; |
11317 | 0 | } /*dissect_zcl_calendar_get_seasons*/ |
11318 | | |
11319 | | /** |
11320 | | *This function manages the Get Special Days payload |
11321 | | * |
11322 | | *@param tvb pointer to buffer containing raw packet. |
11323 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11324 | | *@param offset pointer to offset from caller |
11325 | | */ |
11326 | | static void |
11327 | | dissect_zcl_calendar_get_special_days(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11328 | 0 | { |
11329 | | /* Start Time */ |
11330 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
11331 | 0 | *offset += 4; |
11332 | | |
11333 | | /* Number of Events */ |
11334 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_events, tvb, *offset, 1, ENC_NA); |
11335 | 0 | *offset += 1; |
11336 | | |
11337 | | /* Calendar Type */ |
11338 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA); |
11339 | 0 | *offset += 1; |
11340 | | |
11341 | | /* Provider Id */ |
11342 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11343 | 0 | *offset += 4; |
11344 | | |
11345 | | /* Issuer Calendar ID */ |
11346 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11347 | 0 | *offset += 4; |
11348 | 0 | } /*dissect_zcl_calendar_get_special_days*/ |
11349 | | |
11350 | | /** |
11351 | | *This function manages the Publish Calendar payload |
11352 | | * |
11353 | | *@param tvb pointer to buffer containing raw packet. |
11354 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11355 | | *@param offset pointer to offset from caller |
11356 | | */ |
11357 | | static void |
11358 | | dissect_zcl_calendar_publish_calendar(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11359 | 0 | { |
11360 | 0 | int length; |
11361 | | |
11362 | | /* Provider Id */ |
11363 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11364 | 0 | *offset += 4; |
11365 | | |
11366 | | /* Issuer Event ID */ |
11367 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11368 | 0 | *offset += 4; |
11369 | | |
11370 | | /* Issuer Calendar ID */ |
11371 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11372 | 0 | *offset += 4; |
11373 | | |
11374 | | /* Start Time */ |
11375 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
11376 | 0 | *offset += 4; |
11377 | | |
11378 | | /* Calendar Type */ |
11379 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA); |
11380 | 0 | *offset += 1; |
11381 | | |
11382 | | /* Calendar Time Reference */ |
11383 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_time_reference, tvb, *offset, 1, ENC_NA); |
11384 | 0 | *offset += 1; |
11385 | | |
11386 | | /* Calendar Name */ |
11387 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_calendar_name, tvb, *offset, 1, ENC_NA|ENC_ZIGBEE, &length); |
11388 | 0 | *offset += length; |
11389 | | |
11390 | | /* Number of Seasons */ |
11391 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_seasons, tvb, *offset, 1, ENC_NA); |
11392 | 0 | *offset += 1; |
11393 | | |
11394 | | /* Number of Week Profiles */ |
11395 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_week_profiles, tvb, *offset, 1, ENC_NA); |
11396 | 0 | *offset += 1; |
11397 | | |
11398 | | /* Number of Day Profiles */ |
11399 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_number_of_day_profiles, tvb, *offset, 1, ENC_NA); |
11400 | 0 | *offset += 1; |
11401 | 0 | } /*dissect_zcl_calendar_publish_calendar*/ |
11402 | | |
11403 | | /** |
11404 | | *This function manages the Publish Day Profile payload |
11405 | | * |
11406 | | *@param tvb pointer to buffer containing raw packet. |
11407 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11408 | | *@param offset pointer to offset from caller |
11409 | | */ |
11410 | | static void |
11411 | | dissect_zcl_calendar_publish_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11412 | 3 | { |
11413 | 3 | uint8_t schedule_entries_count; |
11414 | 3 | uint8_t calendar_type; |
11415 | | |
11416 | | /* Provider Id */ |
11417 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11418 | 3 | *offset += 4; |
11419 | | |
11420 | | /* Issuer Event ID */ |
11421 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11422 | 3 | *offset += 4; |
11423 | | |
11424 | | /* Issuer Calendar ID */ |
11425 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11426 | 3 | *offset += 4; |
11427 | | |
11428 | | /* Day ID */ |
11429 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id, tvb, *offset, 1, ENC_NA); |
11430 | 3 | *offset += 1; |
11431 | | |
11432 | | /* Total Number of Schedule Entries */ |
11433 | 3 | schedule_entries_count = tvb_get_uint8(tvb, *offset); |
11434 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_total_number_of_schedule_entries, tvb, *offset, 1, ENC_NA); |
11435 | 3 | *offset += 1; |
11436 | | |
11437 | | /* Command Index */ |
11438 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_command_index, tvb, *offset, 1, ENC_NA); |
11439 | 3 | *offset += 1; |
11440 | | |
11441 | | /* Total Number of Commands */ |
11442 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
11443 | 3 | *offset += 1; |
11444 | | |
11445 | | /* Calendar Type */ |
11446 | 3 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA, &calendar_type); |
11447 | 3 | *offset += 1; |
11448 | | |
11449 | 103 | for (int i = 0; tvb_reported_length_remaining(tvb, *offset) >= 3 && i < schedule_entries_count; i++) { |
11450 | | /* Start Time */ |
11451 | 100 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_schedule_entry_start_time, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
11452 | 100 | *offset += 2; |
11453 | | |
11454 | 100 | switch (calendar_type) { |
11455 | | /* Rate Start Time */ |
11456 | 11 | case ZBEE_ZCL_CALENDAR_TYPE_DELIVERED: |
11457 | 11 | case ZBEE_ZCL_CALENDAR_TYPE_RECEIVED: |
11458 | 11 | case ZBEE_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED: |
11459 | | /* Price Tier */ |
11460 | 11 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_schedule_entry_price_tier, tvb, *offset, 1, ENC_NA); |
11461 | 11 | *offset += 1; |
11462 | 11 | break; |
11463 | | |
11464 | | /* Friendly Credit Start Time */ |
11465 | 0 | case ZBEE_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT: |
11466 | | /* Price Tier */ |
11467 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable, tvb, *offset, 1, ENC_NA); |
11468 | 0 | *offset += 1; |
11469 | 0 | break; |
11470 | | |
11471 | | /* Auxiliary Load Start Time */ |
11472 | 0 | case ZBEE_ZCL_CALENDAR_TYPE_AUXILIARY_LOAD_SWITCH: |
11473 | | /* Price Tier */ |
11474 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state, tvb, *offset, 1, ENC_NA); |
11475 | 0 | *offset += 1; |
11476 | 0 | break; |
11477 | 100 | } |
11478 | 100 | } |
11479 | 3 | } /*dissect_zcl_calendar_publish_day_profile*/ |
11480 | | |
11481 | | /** |
11482 | | *This function manages the Publish Week Profile payload |
11483 | | * |
11484 | | *@param tvb pointer to buffer containing raw packet. |
11485 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11486 | | *@param offset pointer to offset from caller |
11487 | | */ |
11488 | | static void |
11489 | | dissect_zcl_calendar_publish_week_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11490 | 0 | { |
11491 | | /* Provider Id */ |
11492 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11493 | 0 | *offset += 4; |
11494 | | |
11495 | | /* Issuer Event ID */ |
11496 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11497 | 0 | *offset += 4; |
11498 | | |
11499 | | /* Issuer Calendar ID */ |
11500 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11501 | 0 | *offset += 4; |
11502 | | |
11503 | | /* Week ID */ |
11504 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_week_id, tvb, *offset, 1, ENC_NA); |
11505 | 0 | *offset += 1; |
11506 | | |
11507 | | /* Day ID Ref Monday */ |
11508 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_monday, tvb, *offset, 1, ENC_NA); |
11509 | 0 | *offset += 1; |
11510 | | |
11511 | | /* Day ID Ref Tuesday */ |
11512 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_tuesday, tvb, *offset, 1, ENC_NA); |
11513 | 0 | *offset += 1; |
11514 | | |
11515 | | /* Day ID Ref Wednesday */ |
11516 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_wednesday, tvb, *offset, 1, ENC_NA); |
11517 | 0 | *offset += 1; |
11518 | | |
11519 | | /* Day ID Ref Thursday */ |
11520 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_thursday, tvb, *offset, 1, ENC_NA); |
11521 | 0 | *offset += 1; |
11522 | | |
11523 | | /* Day ID Ref Friday */ |
11524 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_friday, tvb, *offset, 1, ENC_NA); |
11525 | 0 | *offset += 1; |
11526 | | |
11527 | | /* Day ID Ref Saturday */ |
11528 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_saturday, tvb, *offset, 1, ENC_NA); |
11529 | 0 | *offset += 1; |
11530 | | |
11531 | | /* Day ID Ref Sunday */ |
11532 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref_sunday, tvb, *offset, 1, ENC_NA); |
11533 | 0 | *offset += 1; |
11534 | 0 | } /*dissect_zcl_calendar_publish_week_profile*/ |
11535 | | |
11536 | | /** |
11537 | | *This function manages the Publish Season Profile payload |
11538 | | * |
11539 | | *@param tvb pointer to buffer containing raw packet. |
11540 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11541 | | *@param offset pointer to offset from caller |
11542 | | */ |
11543 | | static void |
11544 | | dissect_zcl_calendar_publish_seasons(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11545 | 0 | { |
11546 | | /* Provider Id */ |
11547 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11548 | 0 | *offset += 4; |
11549 | | |
11550 | | /* Issuer Event ID */ |
11551 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11552 | 0 | *offset += 4; |
11553 | | |
11554 | | /* Issuer Calendar ID */ |
11555 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11556 | 0 | *offset += 4; |
11557 | | |
11558 | | /* Command Index */ |
11559 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_command_index, tvb, *offset, 1, ENC_NA); |
11560 | 0 | *offset += 1; |
11561 | | |
11562 | | /* Total Number of Commands */ |
11563 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
11564 | 0 | *offset += 1; |
11565 | |
|
11566 | 0 | while (tvb_reported_length_remaining(tvb, *offset) >= 5) { |
11567 | | /* Season Start Date */ |
11568 | 0 | 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); |
11569 | | |
11570 | | /* Week ID Ref */ |
11571 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_week_id_ref, tvb, *offset, 1, ENC_NA); |
11572 | 0 | *offset += 1; |
11573 | 0 | } |
11574 | 0 | } /*dissect_zcl_calendar_publish_seasons*/ |
11575 | | |
11576 | | /** |
11577 | | *This function manages the Publish Special Days payload |
11578 | | * |
11579 | | *@param tvb pointer to buffer containing raw packet. |
11580 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11581 | | *@param offset pointer to offset from caller |
11582 | | */ |
11583 | | static void |
11584 | | dissect_zcl_calendar_publish_special_days(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11585 | 0 | { |
11586 | 0 | uint8_t total_special_days_count; |
11587 | | |
11588 | | /* Provider Id */ |
11589 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11590 | 0 | *offset += 4; |
11591 | | |
11592 | | /* Issuer Event ID */ |
11593 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11594 | 0 | *offset += 4; |
11595 | | |
11596 | | /* Issuer Calendar ID */ |
11597 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11598 | 0 | *offset += 4; |
11599 | | |
11600 | | /* Start Time */ |
11601 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_start_time_with_cancel, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
11602 | 0 | *offset += 4; |
11603 | | |
11604 | | /* Calendar Type */ |
11605 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA); |
11606 | 0 | *offset += 1; |
11607 | | |
11608 | | /* Total Number of Special Days */ |
11609 | 0 | total_special_days_count = tvb_get_uint8(tvb, *offset); |
11610 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_total_number_of_special_days, tvb, *offset, 1, ENC_NA); |
11611 | 0 | *offset += 1; |
11612 | | |
11613 | | /* Command Index */ |
11614 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_command_index, tvb, *offset, 1, ENC_NA); |
11615 | 0 | *offset += 1; |
11616 | | |
11617 | | /* Total Number of Commands */ |
11618 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_total_number_of_commands, tvb, *offset, 1, ENC_NA); |
11619 | 0 | *offset += 1; |
11620 | |
|
11621 | 0 | for (int i = 0; tvb_reported_length_remaining(tvb, *offset) >= 5 && i < total_special_days_count; i++) { |
11622 | | /* Special Day Date */ |
11623 | 0 | 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); |
11624 | | |
11625 | | /* Day ID Ref */ |
11626 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_day_id_ref, tvb, *offset, 1, ENC_NA); |
11627 | 0 | *offset += 1; |
11628 | 0 | } |
11629 | 0 | } /*dissect_zcl_calendar_publish_special_days*/ |
11630 | | |
11631 | | /** |
11632 | | *This function manages the Cancel Calendar payload |
11633 | | * |
11634 | | *@param tvb pointer to buffer containing raw packet. |
11635 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11636 | | *@param offset pointer to offset from caller |
11637 | | */ |
11638 | | static void |
11639 | | dissect_zcl_calendar_cancel(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
11640 | 0 | { |
11641 | | /* Provider Id */ |
11642 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11643 | 0 | *offset += 4; |
11644 | | |
11645 | | /* Issuer Calendar ID */ |
11646 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_issuer_calendar_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
11647 | 0 | *offset += 4; |
11648 | | |
11649 | | /* Calendar Type */ |
11650 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_calendar_type, tvb, *offset, 1, ENC_NA); |
11651 | 0 | *offset += 1; |
11652 | 0 | } /*dissect_zcl_calendar_cancel*/ |
11653 | | |
11654 | | /** |
11655 | | *This function registers the ZCL Calendar dissector |
11656 | | * |
11657 | | */ |
11658 | | void |
11659 | | proto_register_zbee_zcl_calendar(void) |
11660 | 15 | { |
11661 | 15 | static hf_register_info hf[] = { |
11662 | | |
11663 | 15 | { &hf_zbee_zcl_calendar_attr_id, |
11664 | 15 | { "Attribute", "zbee_zcl_se.calendar.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_calendar_attr_names), |
11665 | 15 | 0x0, NULL, HFILL } }, |
11666 | | |
11667 | 15 | { &hf_zbee_zcl_calendar_attr_reporting_status, /* common to all SE clusters */ |
11668 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.calendar.attr.attr_reporting_status", |
11669 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
11670 | | |
11671 | 15 | { &hf_zbee_zcl_calendar_srv_tx_cmd_id, |
11672 | 15 | { "Command", "zbee_zcl_se.calendar.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_calendar_srv_tx_cmd_names), |
11673 | 15 | 0x00, NULL, HFILL } }, |
11674 | | |
11675 | 15 | { &hf_zbee_zcl_calendar_srv_rx_cmd_id, |
11676 | 15 | { "Command", "zbee_zcl_se.calendar.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_calendar_srv_rx_cmd_names), |
11677 | 15 | 0x00, NULL, HFILL } }, |
11678 | | |
11679 | 15 | { &hf_zbee_zcl_calendar_type, |
11680 | 15 | { "Calendar Type", "zbee_zcl_se.calendar.type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_calendar_type_names), |
11681 | 15 | 0x00, NULL, HFILL } }, |
11682 | | |
11683 | 15 | { &hf_zbee_zcl_calendar_start_time, |
11684 | 15 | { "Start Time", "zbee_zcl_se.calendar.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_strings), |
11685 | 15 | 0x00, NULL, HFILL } }, |
11686 | | |
11687 | 15 | { &hf_zbee_zcl_calendar_start_time_with_cancel, |
11688 | 15 | { "Start Time", "zbee_zcl_se.calendar.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
11689 | 15 | 0x00, NULL, HFILL } }, |
11690 | | |
11691 | 15 | { &hf_zbee_zcl_calendar_earliest_start_time, |
11692 | 15 | { "Earliest Start Time", "zbee_zcl_se.calendar.earliest_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
11693 | 15 | 0x00, NULL, HFILL } }, |
11694 | | |
11695 | 15 | { &hf_zbee_zcl_calendar_time_reference, |
11696 | 15 | { "Calendar Time Reference", "zbee_zcl_se.calendar.time_reference", FT_UINT8, BASE_HEX, VALS(zbee_zcl_calendar_time_reference_names), |
11697 | 15 | 0x00, NULL, HFILL } }, |
11698 | | |
11699 | 15 | { &hf_zbee_zcl_calendar_name, |
11700 | 15 | { "Calendar Name", "zbee_zcl_se.calendar.name", FT_UINT_STRING, BASE_NONE, NULL, |
11701 | 15 | 0x00, NULL, HFILL } }, |
11702 | | |
11703 | 15 | { &hf_zbee_zcl_calendar_command_index, |
11704 | 15 | { "Command Index", "zbee_zcl_se.calendar.command_index", FT_UINT8, BASE_DEC, NULL, |
11705 | 15 | 0x00, NULL, HFILL } }, |
11706 | | |
11707 | 15 | { &hf_zbee_zcl_calendar_date_year, |
11708 | 15 | { "Year", "zbee_zcl_se.calendar.date.year", FT_UINT8, BASE_DEC, NULL, |
11709 | 15 | 0x00, NULL, HFILL } }, |
11710 | | |
11711 | 15 | { &hf_zbee_zcl_calendar_date_month, |
11712 | 15 | { "Month", "zbee_zcl_se.calendar.date.month", FT_UINT8, BASE_DEC, NULL, |
11713 | 15 | 0x00, NULL, HFILL } }, |
11714 | | |
11715 | 15 | { &hf_zbee_zcl_calendar_date_month_day, |
11716 | 15 | { "Month Day", "zbee_zcl_se.calendar.date.month_day", FT_UINT8, BASE_DEC, NULL, |
11717 | 15 | 0x00, NULL, HFILL } }, |
11718 | | |
11719 | 15 | { &hf_zbee_zcl_calendar_date_week_day, |
11720 | 15 | { "Week Day", "zbee_zcl_se.calendar.date.week_day", FT_UINT8, BASE_DEC, NULL, |
11721 | 15 | 0x00, NULL, HFILL } }, |
11722 | | |
11723 | 15 | { &hf_zbee_zcl_calendar_provider_id, |
11724 | 15 | { "Provider ID", "zbee_zcl_se.calendar.provider_id", FT_UINT32, BASE_DEC, NULL, |
11725 | 15 | 0x00, NULL, HFILL } }, |
11726 | | |
11727 | 15 | { &hf_zbee_zcl_calendar_issuer_event_id, |
11728 | 15 | { "Issuer Event ID", "zbee_zcl_se.calendar.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
11729 | 15 | 0x00, NULL, HFILL } }, |
11730 | | |
11731 | 15 | { &hf_zbee_zcl_calendar_min_issuer_event_id, |
11732 | 15 | { "Min. Issuer Event ID", "zbee_zcl_se.calendar.min_issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
11733 | 15 | 0x00, NULL, HFILL } }, |
11734 | | |
11735 | 15 | { &hf_zbee_zcl_calendar_issuer_calendar_id, |
11736 | 15 | { "Issuer Calendar ID", "zbee_zcl_se.calendar.issuer_calendar_id", FT_UINT32, BASE_DEC, NULL, |
11737 | 15 | 0x00, NULL, HFILL } }, |
11738 | | |
11739 | 15 | { &hf_zbee_zcl_calendar_day_id, |
11740 | 15 | { "Day ID", "zbee_zcl_se.calendar.day_id", FT_UINT8, BASE_DEC, NULL, |
11741 | 15 | 0x00, NULL, HFILL } }, |
11742 | | |
11743 | 15 | { &hf_zbee_zcl_calendar_day_id_ref, |
11744 | 15 | { "Day ID Ref", "zbee_zcl_se.calendar.day_id_ref", FT_UINT8, BASE_DEC, NULL, |
11745 | 15 | 0x00, NULL, HFILL } }, |
11746 | | |
11747 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_monday, |
11748 | 15 | { "Day ID Ref Monday", "zbee_zcl_se.calendar.day_id_ref_monday", FT_UINT8, BASE_DEC, NULL, |
11749 | 15 | 0x00, NULL, HFILL } }, |
11750 | | |
11751 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_tuesday, |
11752 | 15 | { "Day ID Ref Tuesday", "zbee_zcl_se.calendar.day_id_ref_tuesday", FT_UINT8, BASE_DEC, NULL, |
11753 | 15 | 0x00, NULL, HFILL } }, |
11754 | | |
11755 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_wednesday, |
11756 | 15 | { "Day ID Ref Wednesday", "zbee_zcl_se.calendar.day_id_ref_wednesday", FT_UINT8, BASE_DEC, NULL, |
11757 | 15 | 0x00, NULL, HFILL } }, |
11758 | | |
11759 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_thursday, |
11760 | 15 | { "Day ID Ref Thursday", "zbee_zcl_se.calendar.day_id_ref_thursday", FT_UINT8, BASE_DEC, NULL, |
11761 | 15 | 0x00, NULL, HFILL } }, |
11762 | | |
11763 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_friday, |
11764 | 15 | { "Day ID Ref Friday", "zbee_zcl_se.calendar.day_id_ref_friday", FT_UINT8, BASE_DEC, NULL, |
11765 | 15 | 0x00, NULL, HFILL } }, |
11766 | | |
11767 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_saturday, |
11768 | 15 | { "Day ID Ref Saturday", "zbee_zcl_se.calendar.day_id_ref_saturday", FT_UINT8, BASE_DEC, NULL, |
11769 | 15 | 0x00, NULL, HFILL } }, |
11770 | | |
11771 | 15 | { &hf_zbee_zcl_calendar_day_id_ref_sunday, |
11772 | 15 | { "Day ID Ref Sunday", "zbee_zcl_se.calendar.day_id_ref_sunday", FT_UINT8, BASE_DEC, NULL, |
11773 | 15 | 0x00, NULL, HFILL } }, |
11774 | | |
11775 | 15 | { &hf_zbee_zcl_calendar_week_id, |
11776 | 15 | { "Week ID", "zbee_zcl_se.calendar.week_id", FT_UINT8, BASE_DEC, NULL, |
11777 | 15 | 0x00, NULL, HFILL } }, |
11778 | | |
11779 | 15 | { &hf_zbee_zcl_calendar_week_id_ref, |
11780 | 15 | { "Week ID Ref", "zbee_zcl_se.calendar.week_id_ref", FT_UINT8, BASE_DEC, NULL, |
11781 | 15 | 0x00, NULL, HFILL } }, |
11782 | | |
11783 | 15 | { &hf_zbee_zcl_calendar_start_day_id, |
11784 | 15 | { "Start Day ID", "zbee_zcl_se.calendar.start_day_id", FT_UINT8, BASE_DEC, NULL, |
11785 | 15 | 0x00, NULL, HFILL } }, |
11786 | | |
11787 | 15 | { &hf_zbee_zcl_calendar_start_week_id, |
11788 | 15 | { "Start Week ID", "zbee_zcl_se.calendar.start_week_id", FT_UINT8, BASE_DEC, NULL, |
11789 | 15 | 0x00, NULL, HFILL } }, |
11790 | | |
11791 | 15 | { &hf_zbee_zcl_calendar_number_of_calendars, |
11792 | 15 | { "Number of Calendars", "zbee_zcl_se.calendar.number_of_calendars", FT_UINT8, BASE_DEC, NULL, |
11793 | 15 | 0x00, NULL, HFILL } }, |
11794 | | |
11795 | 15 | { &hf_zbee_zcl_calendar_number_of_events, |
11796 | 15 | { "Number of Events", "zbee_zcl_se.calendar.number_of_events", FT_UINT8, BASE_DEC, NULL, |
11797 | 15 | 0x00, NULL, HFILL } }, |
11798 | | |
11799 | 15 | { &hf_zbee_zcl_calendar_number_of_days, |
11800 | 15 | { "Number of Days", "zbee_zcl_se.calendar.number_of_days", FT_UINT8, BASE_DEC, NULL, |
11801 | 15 | 0x00, NULL, HFILL } }, |
11802 | | |
11803 | 15 | { &hf_zbee_zcl_calendar_number_of_weeks, |
11804 | 15 | { "Number of Weeks", "zbee_zcl_se.calendar.number_of_weeks", FT_UINT8, BASE_DEC, NULL, |
11805 | 15 | 0x00, NULL, HFILL } }, |
11806 | | |
11807 | 15 | { &hf_zbee_zcl_calendar_number_of_seasons, |
11808 | 15 | { "Number of Seasons", "zbee_zcl_se.calendar.number_of_seasons", FT_UINT8, BASE_DEC, NULL, |
11809 | 15 | 0x00, NULL, HFILL } }, |
11810 | | |
11811 | 15 | { &hf_zbee_zcl_calendar_number_of_day_profiles, |
11812 | 15 | { "Number of Day Profiles", "zbee_zcl_se.calendar.number_of_day_profiles", FT_UINT8, BASE_DEC, NULL, |
11813 | 15 | 0x00, NULL, HFILL } }, |
11814 | | |
11815 | 15 | { &hf_zbee_zcl_calendar_number_of_week_profiles, |
11816 | 15 | { "Number of Week Profiles", "zbee_zcl_se.calendar.number_of_week_profiles", FT_UINT8, BASE_DEC, NULL, |
11817 | 15 | 0x00, NULL, HFILL } }, |
11818 | | |
11819 | 15 | { &hf_zbee_zcl_calendar_total_number_of_schedule_entries, |
11820 | 15 | { "Total Number of Schedule Entries", "zbee_zcl_se.calendar.total_number_of_schedule_entries", FT_UINT8, BASE_DEC, NULL, |
11821 | 15 | 0x00, NULL, HFILL } }, |
11822 | | |
11823 | 15 | { &hf_zbee_zcl_calendar_total_number_of_special_days, |
11824 | 15 | { "Total Number of Special Days", "zbee_zcl_se.calendar.total_number_of_special_days", FT_UINT8, BASE_DEC, NULL, |
11825 | 15 | 0x00, NULL, HFILL } }, |
11826 | | |
11827 | 15 | { &hf_zbee_zcl_calendar_total_number_of_commands, |
11828 | 15 | { "Total Number of Commands", "zbee_zcl_se.calendar.total_number_of_commands", FT_UINT8, BASE_DEC, NULL, |
11829 | 15 | 0x00, NULL, HFILL } }, |
11830 | | |
11831 | 15 | { &hf_zbee_zcl_calendar_schedule_entry_start_time, |
11832 | 15 | { "Start Time", "zbee_zcl_se.calendar.schedule_entry.start_time", FT_UINT16, BASE_DEC, NULL, |
11833 | 15 | 0x00, NULL, HFILL } }, |
11834 | | |
11835 | 15 | { &hf_zbee_zcl_calendar_schedule_entry_price_tier, |
11836 | 15 | { "Price Tier", "zbee_zcl_se.calendar.schedule_entry.price_tier", FT_UINT8, BASE_DEC, NULL, |
11837 | 15 | 0x00, NULL, HFILL } }, |
11838 | | |
11839 | 15 | { &hf_zbee_zcl_calendar_schedule_entry_friendly_credit_enable, |
11840 | 15 | { "Friendly Credit Enable", "zbee_zcl_se.calendar.schedule_entry.friendly_credit_enable", FT_BOOLEAN, BASE_NONE, TFS(&tfs_enabled_disabled), |
11841 | 15 | 0x00, NULL, HFILL } }, |
11842 | | |
11843 | 15 | { &hf_zbee_zcl_calendar_schedule_entry_auxiliary_load_switch_state, |
11844 | 15 | { "Auxiliary Load Switch State", "zbee_zcl_se.calendar.schedule_entry.auxiliary_load_switch_state", FT_UINT8, BASE_HEX, NULL, |
11845 | 15 | 0x00, NULL, HFILL } }, |
11846 | | |
11847 | 15 | }; |
11848 | | |
11849 | | /* ZCL Calendar subtrees */ |
11850 | 15 | int *ett[] = { |
11851 | 15 | &ett_zbee_zcl_calendar, |
11852 | 15 | &ett_zbee_zcl_calendar_special_day_date, |
11853 | 15 | &ett_zbee_zcl_calendar_season_start_date, |
11854 | 15 | }; |
11855 | | |
11856 | | /* Register the ZigBee ZCL Calendar cluster protocol name and description */ |
11857 | 15 | proto_zbee_zcl_calendar = proto_register_protocol("ZigBee ZCL Calendar", "ZCL Calendar", ZBEE_PROTOABBREV_ZCL_CALENDAR); |
11858 | 15 | proto_register_field_array(proto_zbee_zcl_calendar, hf, array_length(hf)); |
11859 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
11860 | | |
11861 | | /* Register the ZigBee ZCL Calendar dissector. */ |
11862 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_CALENDAR, dissect_zbee_zcl_calendar, proto_zbee_zcl_calendar); |
11863 | 15 | } /*proto_register_zbee_zcl_calendar*/ |
11864 | | |
11865 | | /** |
11866 | | *Hands off the ZCL Calendar dissector. |
11867 | | * |
11868 | | */ |
11869 | | void |
11870 | | proto_reg_handoff_zbee_zcl_calendar(void) |
11871 | 15 | { |
11872 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_CALENDAR, |
11873 | 15 | proto_zbee_zcl_calendar, |
11874 | 15 | ett_zbee_zcl_calendar, |
11875 | 15 | ZBEE_ZCL_CID_CALENDAR, |
11876 | 15 | ZBEE_MFG_CODE_NONE, |
11877 | 15 | hf_zbee_zcl_calendar_attr_id, |
11878 | 15 | -1, |
11879 | 15 | hf_zbee_zcl_calendar_srv_rx_cmd_id, |
11880 | 15 | hf_zbee_zcl_calendar_srv_tx_cmd_id, |
11881 | 15 | dissect_zcl_calendar_attr_data |
11882 | 15 | ); |
11883 | 15 | } /*proto_reg_handoff_zbee_zcl_calendar*/ |
11884 | | |
11885 | | /* ----------------------- Daily Schedule cluster ---------------------- */ |
11886 | | /* Attributes */ |
11887 | | #define zbee_zcl_daily_schedule_attr_names_VALUE_STRING_LIST(XXX) \ |
11888 | | /* Auxiliary Switch Label Attribute Set */ \ |
11889 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_1_LABEL, 0x0000, "Aux Switch 1 Label" ) \ |
11890 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_2_LABEL, 0x0001, "Aux Switch 2 Label" ) \ |
11891 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_3_LABEL, 0x0002, "Aux Switch 3 Label" ) \ |
11892 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_4_LABEL, 0x0003, "Aux Switch 4 Label" ) \ |
11893 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_5_LABEL, 0x0004, "Aux Switch 5 Label" ) \ |
11894 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_6_LABEL, 0x0005, "Aux Switch 6 Label" ) \ |
11895 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_7_LABEL, 0x0006, "Aux Switch 7 Label" ) \ |
11896 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_AUX_SWITCH_8_LABEL, 0x0007, "Aux Switch 8 Label" ) \ |
11897 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_AUX_LOAD_SWITCH_STATE, 0x0100, "Current Auxiliary Load Switch State" ) \ |
11898 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_DELIVERED_TIER, 0x0101, "Current Delivered Tier" ) \ |
11899 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_TIER_LABEL, 0x0102, "Current Tier Label" ) \ |
11900 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_LINKY_PEAK_PERIOD_STATUS, 0x0103, "Linky Peak Period Status" ) \ |
11901 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_PEAK_START_TIME, 0x0104, "Peak Start Time" ) \ |
11902 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_PEAK_END_TIME, 0x0105, "Peak End Time" ) \ |
11903 | | XXX(ZBEE_ZCL_ATTR_ID_DSH_CURRENT_TARIFF_LABEL, 0x0106, "Current Tariff Label" ) \ |
11904 | | |
11905 | | VALUE_STRING_ENUM(zbee_zcl_daily_schedule_attr_names); |
11906 | | VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_attr_names); |
11907 | | |
11908 | | /* Server Commands Received */ |
11909 | | #define zbee_zcl_daily_schedule_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
11910 | | XXX(ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE, 0x00, "Get Schedule" ) \ |
11911 | | XXX(ZBEE_ZCL_CMD_ID_DSH_GET_DAY_PROFILE, 0x01, "Get Day Profile" ) \ |
11912 | | XXX(ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE_CANCELLATION, 0x05, "Get Schedule Cancellation" ) \ |
11913 | | |
11914 | | VALUE_STRING_ENUM(zbee_zcl_daily_schedule_srv_rx_cmd_names); |
11915 | | VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_srv_rx_cmd_names); |
11916 | | |
11917 | | /* Server Commands Generated */ |
11918 | | #define zbee_zcl_daily_schedule_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
11919 | | XXX(ZBEE_ZCL_CMD_ID_DSH_PUBLISH_SCHEDULE, 0x00, "Publish Schedule" ) \ |
11920 | | XXX(ZBEE_ZCL_CMD_ID_DSH_PUBLISH_DAY_PROFILE, 0x01, "Publish Day Profile" ) \ |
11921 | | XXX(ZBEE_ZCL_CMD_ID_DSH_CANCEL_SCHEDULE, 0x05, "Cancel Schedule" ) \ |
11922 | | |
11923 | | VALUE_STRING_ENUM(zbee_zcl_daily_schedule_srv_tx_cmd_names); |
11924 | | VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_srv_tx_cmd_names); |
11925 | | |
11926 | | /*************************/ |
11927 | | /* Function Declarations */ |
11928 | | /*************************/ |
11929 | | void proto_register_zbee_zcl_daily_schedule(void); |
11930 | | void proto_reg_handoff_zbee_zcl_daily_schedule(void); |
11931 | | |
11932 | | /* Command Dissector Helpers */ |
11933 | | static void dissect_zcl_daily_schedule_get_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
11934 | | static void dissect_zcl_daily_schedule_get_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
11935 | | static void dissect_zcl_daily_schedule_publish_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
11936 | | static void dissect_zcl_daily_schedule_publish_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
11937 | | static void dissect_zcl_daily_schedule_cancel_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
11938 | | |
11939 | | /*************************/ |
11940 | | /* Global Variables */ |
11941 | | /*************************/ |
11942 | | |
11943 | | /* Initialize the protocol and registered fields */ |
11944 | | static int proto_zbee_zcl_daily_schedule; |
11945 | | |
11946 | | static int hf_zbee_zcl_daily_schedule_srv_tx_cmd_id; |
11947 | | static int hf_zbee_zcl_daily_schedule_srv_rx_cmd_id; |
11948 | | static int hf_zbee_zcl_daily_schedule_attr_server_id; |
11949 | | /* Get Schedule cmd */ |
11950 | | static int hf_zbee_zcl_daily_schedule_type; |
11951 | | static int hf_zbee_zcl_daily_schedule_name; |
11952 | | static int hf_zbee_zcl_daily_schedule_start_time; |
11953 | | static int hf_zbee_zcl_daily_schedule_earliest_start_time; |
11954 | | static int hf_zbee_zcl_daily_schedule_command_index; |
11955 | | static int hf_zbee_zcl_daily_schedule_id; |
11956 | | static int hf_zbee_zcl_daily_schedule_time_reference; |
11957 | | static int hf_zbee_zcl_daily_schedule_provider_id; |
11958 | | static int hf_zbee_zcl_daily_schedule_issuer_event_id; |
11959 | | static int hf_zbee_zcl_daily_schedule_min_issuer_event_id; |
11960 | | static int hf_zbee_zcl_daily_schedule_number_of_schedules; |
11961 | | static int hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries; |
11962 | | static int hf_zbee_zcl_daily_schedule_schedule_entry_start_time; |
11963 | | static int hf_zbee_zcl_daily_schedule_schedule_entry_price_tier; |
11964 | | static int hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state; |
11965 | | |
11966 | | /* Initialize the subtree pointers */ |
11967 | | static int ett_zbee_zcl_daily_schedule; |
11968 | | |
11969 | | #define zbee_zcl_daily_schedule_type_names_VALUE_STRING_LIST(XXX) \ |
11970 | | XXX(ZBEE_ZCL_SCHEDULE_TYPE_LINKY_SCHEDULE, 0x00, "Linky Schedule" ) \ |
11971 | | |
11972 | | VALUE_STRING_ENUM(zbee_zcl_daily_schedule_type_names); |
11973 | | VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_type_names); |
11974 | | |
11975 | | #define zbee_zcl_daily_schedule_time_reference_names_VALUE_STRING_LIST(XXX) \ |
11976 | | XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_UTC_TIME, 0x00, "UTC Time" ) \ |
11977 | | XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_STANDARD_TIME, 0x01, "Standard Time" ) \ |
11978 | | XXX(ZBEE_ZCL_SCHEDULE_TIME_REFERENCE_LOCAL_TIME, 0x02, "Local Time" ) |
11979 | | |
11980 | | VALUE_STRING_ENUM(zbee_zcl_daily_schedule_time_reference_names); |
11981 | | VALUE_STRING_ARRAY(zbee_zcl_daily_schedule_time_reference_names); |
11982 | | |
11983 | | /** |
11984 | | *ZigBee ZCL Daily Schedule cluster dissector for wireshark. |
11985 | | * |
11986 | | *@param tvb pointer to buffer containing raw packet. |
11987 | | *@param pinfo pointer to packet information fields |
11988 | | *@param tree pointer to data tree Wireshark uses to display packet. |
11989 | | */ |
11990 | | static int |
11991 | | dissect_zbee_zcl_daily_schedule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
11992 | 1 | { |
11993 | 1 | proto_tree *payload_tree; |
11994 | 1 | zbee_zcl_packet *zcl; |
11995 | 1 | unsigned offset = 0; |
11996 | 1 | uint8_t cmd_id; |
11997 | 1 | int rem_len; |
11998 | | |
11999 | | /* Reject the packet if data is NULL */ |
12000 | 1 | if (data == NULL) |
12001 | 0 | return 0; |
12002 | 1 | zcl = (zbee_zcl_packet *)data; |
12003 | 1 | cmd_id = zcl->cmd_id; |
12004 | | |
12005 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
12006 | 1 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
12007 | | /* Append the command name to the info column. */ |
12008 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
12009 | 1 | val_to_str_const(cmd_id, zbee_zcl_calendar_srv_rx_cmd_names, "Unknown Command"), |
12010 | 1 | zcl->tran_seqno); |
12011 | | |
12012 | | /* Add the command ID. */ |
12013 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_daily_schedule_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
12014 | | |
12015 | | /* Check is this command has a payload, than add the payload tree */ |
12016 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
12017 | 1 | if (rem_len > 0) { |
12018 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_daily_schedule, NULL, "Payload"); |
12019 | | |
12020 | | /* Call the appropriate command dissector */ |
12021 | 1 | switch (cmd_id) { |
12022 | | |
12023 | 0 | case ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE: |
12024 | 0 | dissect_zcl_daily_schedule_get_schedule(tvb, payload_tree, &offset); |
12025 | 0 | break; |
12026 | | |
12027 | 0 | case ZBEE_ZCL_CMD_ID_DSH_GET_DAY_PROFILE: |
12028 | 0 | dissect_zcl_daily_schedule_get_day_profile(tvb, payload_tree, &offset); |
12029 | 0 | break; |
12030 | | |
12031 | 0 | case ZBEE_ZCL_CMD_ID_DSH_GET_SCHEDULE_CANCELLATION: |
12032 | | /* No Payload */ |
12033 | 0 | break; |
12034 | | |
12035 | 1 | default: |
12036 | 1 | break; |
12037 | 1 | } |
12038 | 1 | } |
12039 | 1 | } |
12040 | 0 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
12041 | | /* Append the command name to the info column. */ |
12042 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
12043 | 0 | val_to_str_const(cmd_id, zbee_zcl_daily_schedule_srv_tx_cmd_names, "Unknown Command"), |
12044 | 0 | zcl->tran_seqno); |
12045 | | |
12046 | | /* Add the command ID. */ |
12047 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_daily_schedule_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
12048 | | |
12049 | | /* Check is this command has a payload, than add the payload tree */ |
12050 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
12051 | 0 | if (rem_len > 0) { |
12052 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_daily_schedule, NULL, "Payload"); |
12053 | | |
12054 | | /* Call the appropriate command dissector */ |
12055 | 0 | switch (cmd_id) { |
12056 | | |
12057 | 0 | case ZBEE_ZCL_CMD_ID_DSH_PUBLISH_SCHEDULE: |
12058 | 0 | dissect_zcl_daily_schedule_publish_schedule(tvb, payload_tree, &offset); |
12059 | 0 | break; |
12060 | | |
12061 | 0 | case ZBEE_ZCL_CMD_ID_DSH_PUBLISH_DAY_PROFILE: |
12062 | 0 | dissect_zcl_daily_schedule_publish_day_profile(tvb, payload_tree, &offset); |
12063 | 0 | break; |
12064 | | |
12065 | 0 | case ZBEE_ZCL_CMD_ID_DSH_CANCEL_SCHEDULE: |
12066 | 0 | dissect_zcl_daily_schedule_cancel_schedule(tvb, payload_tree, &offset); |
12067 | 0 | break; |
12068 | | |
12069 | 0 | default: |
12070 | 0 | break; |
12071 | 0 | } |
12072 | 0 | } |
12073 | 0 | } |
12074 | | |
12075 | 1 | return tvb_captured_length(tvb); |
12076 | 1 | } /*dissect_zbee_zcl_daily_schedule*/ |
12077 | | |
12078 | | /** |
12079 | | *This function manages the Publish Calendar payload |
12080 | | * |
12081 | | *@param tvb pointer to buffer containing raw packet. |
12082 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12083 | | *@param offset pointer to offset from caller |
12084 | | */ |
12085 | | static void |
12086 | | dissect_zcl_daily_schedule_publish_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
12087 | 0 | { |
12088 | 0 | int length; |
12089 | | |
12090 | | /* Provider Id */ |
12091 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12092 | 0 | *offset += 4; |
12093 | | |
12094 | | /* Issuer Event ID */ |
12095 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12096 | 0 | *offset += 4; |
12097 | | |
12098 | | /* Schedule ID */ |
12099 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12100 | 0 | *offset += 4; |
12101 | | |
12102 | | /* Start Time */ |
12103 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
12104 | 0 | *offset += 4; |
12105 | | |
12106 | | /* Schedule Type */ |
12107 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_type, tvb, *offset, 1, ENC_NA); |
12108 | 0 | *offset += 1; |
12109 | | |
12110 | | /* Schedule Time Reference */ |
12111 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_time_reference, tvb, *offset, 1, ENC_NA); |
12112 | 0 | *offset += 1; |
12113 | | |
12114 | | /* Schedule Name */ |
12115 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_daily_schedule_name, tvb, *offset, 1, ENC_NA | ENC_ZIGBEE, &length); |
12116 | 0 | *offset += length; |
12117 | 0 | } /*dissect_zcl_daily_schedule_publish_schedule*/ |
12118 | | |
12119 | | /** |
12120 | | *This function manages the Publish Day Profile payload |
12121 | | * |
12122 | | *@param tvb pointer to buffer containing raw packet. |
12123 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12124 | | *@param offset pointer to offset from caller |
12125 | | */ |
12126 | | static void |
12127 | | dissect_zcl_daily_schedule_publish_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
12128 | 0 | { |
12129 | 0 | uint8_t schedule_entries_count; |
12130 | 0 | uint8_t calendar_type; |
12131 | | |
12132 | | /* Provider Id */ |
12133 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12134 | 0 | *offset += 4; |
12135 | | |
12136 | | /* Issuer Event ID */ |
12137 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12138 | 0 | *offset += 4; |
12139 | | |
12140 | | /* Issuer Calendar ID */ |
12141 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12142 | 0 | *offset += 4; |
12143 | | |
12144 | | /* Total Number of Schedule Entries */ |
12145 | 0 | schedule_entries_count = tvb_get_uint8(tvb, *offset); |
12146 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries, tvb, *offset, 1, ENC_NA); |
12147 | 0 | *offset += 1; |
12148 | | |
12149 | | /* Command Index */ |
12150 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_command_index, tvb, *offset, 1, ENC_NA); |
12151 | 0 | *offset += 1; |
12152 | | |
12153 | | /* Number of Schedules */ |
12154 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_number_of_schedules, tvb, *offset, 1, ENC_NA); |
12155 | 0 | *offset += 1; |
12156 | | |
12157 | | /* Calendar Type */ |
12158 | 0 | calendar_type = tvb_get_uint8(tvb, *offset); |
12159 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_type, tvb, *offset, 1, ENC_NA); |
12160 | 0 | *offset += 1; |
12161 | |
|
12162 | 0 | for (int i = 0; tvb_reported_length_remaining(tvb, *offset) >= 4 && i < schedule_entries_count; i++) { |
12163 | | /* Start Time */ |
12164 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_schedule_entry_start_time, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
12165 | 0 | *offset += 2; |
12166 | |
|
12167 | 0 | switch (calendar_type) { |
12168 | | /* Rate Start Time */ |
12169 | 0 | case ZBEE_ZCL_SCHEDULE_TYPE_LINKY_SCHEDULE: |
12170 | | /* Price Tier */ |
12171 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_schedule_entry_price_tier, tvb, *offset, 1, ENC_NA); |
12172 | 0 | *offset += 1; |
12173 | | /* Auxiliary Load Switch State */ |
12174 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state, tvb, *offset, 1, ENC_NA); |
12175 | 0 | *offset += 1; |
12176 | 0 | break; |
12177 | 0 | } |
12178 | 0 | } |
12179 | 0 | } /*dissect_zcl_daily_schedule_publish_day_profile*/ |
12180 | | |
12181 | | /** |
12182 | | *This function manages the Cancel Calendar payload |
12183 | | * |
12184 | | *@param tvb pointer to buffer containing raw packet. |
12185 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12186 | | *@param offset pointer to offset from caller |
12187 | | */ |
12188 | | static void |
12189 | | dissect_zcl_daily_schedule_cancel_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
12190 | 0 | { |
12191 | | /* Provider Id */ |
12192 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12193 | 0 | *offset += 4; |
12194 | | |
12195 | | /* Issuer Calendar ID */ |
12196 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12197 | 0 | *offset += 4; |
12198 | | |
12199 | | /* Schedule Type */ |
12200 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_type, tvb, *offset, 1, ENC_NA); |
12201 | 0 | *offset += 1; |
12202 | 0 | } /*dissect_zcl_calendar_cancel*/ |
12203 | | |
12204 | | /** |
12205 | | *This function manages the Get Calendar payload |
12206 | | * |
12207 | | *@param tvb pointer to buffer containing raw packet. |
12208 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12209 | | *@param offset pointer to offset from caller |
12210 | | */ |
12211 | | static void |
12212 | | dissect_zcl_daily_schedule_get_schedule(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
12213 | 0 | { |
12214 | | /* Provider Id */ |
12215 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12216 | 0 | *offset += 4; |
12217 | | |
12218 | | /* Earliest Start Time */ |
12219 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_earliest_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
12220 | 0 | *offset += 4; |
12221 | | |
12222 | | /* Min Issuer Event ID */ |
12223 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_min_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12224 | 0 | *offset += 4; |
12225 | | |
12226 | | /* Number of Schedules */ |
12227 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_number_of_schedules, tvb, *offset, 1, ENC_NA); |
12228 | 0 | *offset += 1; |
12229 | | |
12230 | | /* Schedule Type */ |
12231 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_type, tvb, *offset, 1, ENC_NA); |
12232 | 0 | *offset += 1; |
12233 | 0 | } /*dissect_zcl_daily_schedule_get_schedule*/ |
12234 | | |
12235 | | /** |
12236 | | *This function manages the Get Day Profiles payload |
12237 | | * |
12238 | | *@param tvb pointer to buffer containing raw packet. |
12239 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12240 | | *@param offset pointer to offset from caller |
12241 | | */ |
12242 | | static void |
12243 | | dissect_zcl_daily_schedule_get_day_profile(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
12244 | 0 | { |
12245 | | /* Provider Id */ |
12246 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12247 | 0 | *offset += 4; |
12248 | | |
12249 | | /* Schedule ID */ |
12250 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_daily_schedule_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
12251 | 0 | *offset += 4; |
12252 | 0 | } /*dissect_zcl_daily_schedule_get_day_profile*/ |
12253 | | |
12254 | | /** |
12255 | | *This function is called by ZCL foundation dissector in order to decode |
12256 | | * |
12257 | | *@param tree pointer to data tree Wireshark uses to display packet. |
12258 | | *@param tvb pointer to buffer containing raw packet. |
12259 | | *@param offset pointer to buffer offset |
12260 | | *@param attr_id attribute identifier |
12261 | | *@param data_type attribute data type |
12262 | | */ |
12263 | | static void |
12264 | | dissect_zcl_daily_schedule_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
12265 | 72 | { |
12266 | 72 | (void)attr_id; |
12267 | | /* Catch all */ |
12268 | 72 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
12269 | 72 | } /*dissect_zcl_daily_schedule_attr_data*/ |
12270 | | |
12271 | | /** |
12272 | | *This function registers the ZCL Calendar dissector |
12273 | | * |
12274 | | */ |
12275 | | void |
12276 | | proto_register_zbee_zcl_daily_schedule(void) |
12277 | 15 | { |
12278 | 15 | static hf_register_info hf[] = { |
12279 | | |
12280 | 15 | { &hf_zbee_zcl_daily_schedule_attr_server_id, |
12281 | 15 | { "Attribute", "zbee_zcl_se.daily_schedule.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_daily_schedule_attr_names), |
12282 | 15 | 0x0, NULL, HFILL } }, |
12283 | | |
12284 | 15 | { &hf_zbee_zcl_daily_schedule_srv_tx_cmd_id, |
12285 | 15 | { "Command", "zbee_zcl_se.daily_schedule.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_daily_schedule_srv_tx_cmd_names), |
12286 | 15 | 0x00, NULL, HFILL } }, |
12287 | | |
12288 | 15 | { &hf_zbee_zcl_daily_schedule_srv_rx_cmd_id, |
12289 | 15 | { "Command", "zbee_zcl_se.daily_schedule.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_daily_schedule_srv_rx_cmd_names), |
12290 | 15 | 0x00, NULL, HFILL } }, |
12291 | | |
12292 | 15 | { &hf_zbee_zcl_daily_schedule_type, |
12293 | 15 | { "Schedule Type", "zbee_zcl_se.daily_schedule.type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_daily_schedule_type_names), |
12294 | 15 | 0x00, NULL, HFILL } }, |
12295 | | |
12296 | 15 | { &hf_zbee_zcl_daily_schedule_start_time, |
12297 | 15 | { "Start Time", "zbee_zcl_se.daily_schedule.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
12298 | 15 | 0x00, NULL, HFILL } }, |
12299 | | |
12300 | 15 | { &hf_zbee_zcl_daily_schedule_earliest_start_time, |
12301 | 15 | { "Earliest Start Time", "zbee_zcl_se.daily_schedule.earliest_start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
12302 | 15 | 0x00, NULL, HFILL } }, |
12303 | | |
12304 | 15 | { &hf_zbee_zcl_daily_schedule_time_reference, |
12305 | 15 | { "Schedule Time Reference", "zbee_zcl_se.daily_schedule.time_reference", FT_UINT8, BASE_HEX, VALS(zbee_zcl_daily_schedule_time_reference_names), |
12306 | 15 | 0x00, NULL, HFILL } }, |
12307 | | |
12308 | 15 | { &hf_zbee_zcl_daily_schedule_name, |
12309 | 15 | { "Schedule Name", "zbee_zcl_se.daily_schedule.name", FT_UINT_STRING, BASE_NONE, NULL, |
12310 | 15 | 0x00, NULL, HFILL } }, |
12311 | | |
12312 | 15 | { &hf_zbee_zcl_daily_schedule_command_index, |
12313 | 15 | { "Command Index", "zbee_zcl_se.daily_schedule.command_index", FT_UINT8, BASE_DEC, NULL, |
12314 | 15 | 0x00, NULL, HFILL } }, |
12315 | | |
12316 | 15 | { &hf_zbee_zcl_daily_schedule_provider_id, |
12317 | 15 | { "Provider ID", "zbee_zcl_se.daily_schedule.provider_id", FT_UINT32, BASE_DEC, NULL, |
12318 | 15 | 0x00, NULL, HFILL } }, |
12319 | | |
12320 | 15 | { &hf_zbee_zcl_daily_schedule_issuer_event_id, |
12321 | 15 | { "Issuer Event ID", "zbee_zcl_se.daily_schedule.issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
12322 | 15 | 0x00, NULL, HFILL } }, |
12323 | | |
12324 | 15 | { &hf_zbee_zcl_daily_schedule_min_issuer_event_id, |
12325 | 15 | { "Min. Issuer Event ID", "zbee_zcl_se.daily_schedule.min_issuer_event_id", FT_UINT32, BASE_DEC, NULL, |
12326 | 15 | 0x00, NULL, HFILL } }, |
12327 | | |
12328 | 15 | { &hf_zbee_zcl_daily_schedule_id, |
12329 | 15 | { "Schedule ID", "zbee_zcl_se.daily_schedule.id", FT_UINT32, BASE_DEC, NULL, |
12330 | 15 | 0x00, NULL, HFILL } }, |
12331 | | |
12332 | 15 | { &hf_zbee_zcl_daily_schedule_total_number_of_schedule_entries, |
12333 | 15 | { "Total Number of Schedule Entries", "zbee_zcl_se.daily_schedule.total_number_of_schedule_entries", FT_UINT8, BASE_DEC, NULL, |
12334 | 15 | 0x00, NULL, HFILL } }, |
12335 | | |
12336 | 15 | { &hf_zbee_zcl_daily_schedule_number_of_schedules, |
12337 | 15 | { "Number of Schedules", "zbee_zcl_se.daily_schedule.number_of_schedules", FT_UINT8, BASE_DEC, NULL, |
12338 | 15 | 0x00, NULL, HFILL } }, |
12339 | | |
12340 | 15 | { &hf_zbee_zcl_daily_schedule_schedule_entry_start_time, |
12341 | 15 | { "Start Time", "zbee_zcl_se.daily_schedule.schedule_entry.start_time", FT_UINT16, BASE_DEC, NULL, |
12342 | 15 | 0x00, NULL, HFILL } }, |
12343 | | |
12344 | 15 | { &hf_zbee_zcl_daily_schedule_schedule_entry_price_tier, |
12345 | 15 | { "Price Tier", "zbee_zcl_se.daily_schedule.schedule_entry.price_tier", FT_UINT8, BASE_DEC, NULL, |
12346 | 15 | 0x00, NULL, HFILL } }, |
12347 | | |
12348 | 15 | { &hf_zbee_zcl_daily_schedule_schedule_entry_auxiliary_load_switch_state, |
12349 | 15 | { "Auxiliary Load Switch State", "zbee_zcl_se.daily_schedule.schedule_entry.auxiliary_load_switch_state", FT_UINT8, BASE_HEX, NULL, |
12350 | 15 | 0x00, NULL, HFILL } }, |
12351 | | |
12352 | 15 | }; |
12353 | | |
12354 | | /* ZCL Daily Schedule subtrees */ |
12355 | 15 | int *ett[] = { |
12356 | 15 | &ett_zbee_zcl_daily_schedule, |
12357 | 15 | }; |
12358 | | |
12359 | | /* Register the ZigBee ZCL Calendar cluster protocol name and description */ |
12360 | 15 | proto_zbee_zcl_daily_schedule = proto_register_protocol("ZigBee ZCL Daily Schedule", "ZCL Daily Schedule", ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE); |
12361 | 15 | proto_register_field_array(proto_zbee_zcl_daily_schedule, hf, array_length(hf)); |
12362 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
12363 | | |
12364 | | /* Register the ZigBee ZCL Daily Schedule dissector. */ |
12365 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE, dissect_zbee_zcl_daily_schedule, proto_zbee_zcl_daily_schedule); |
12366 | 15 | } /*proto_register_zbee_zcl_calendar*/ |
12367 | | |
12368 | | void |
12369 | | proto_reg_handoff_zbee_zcl_daily_schedule(void) |
12370 | 15 | { |
12371 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DAILY_SCHEDULE, |
12372 | 15 | proto_zbee_zcl_daily_schedule, |
12373 | 15 | ett_zbee_zcl_daily_schedule, |
12374 | 15 | ZBEE_ZCL_CID_DAILY_SCHEDULE, |
12375 | 15 | ZBEE_MFG_CODE_NONE, |
12376 | 15 | hf_zbee_zcl_daily_schedule_attr_server_id, |
12377 | 15 | -1, |
12378 | 15 | hf_zbee_zcl_daily_schedule_srv_rx_cmd_id, |
12379 | 15 | hf_zbee_zcl_daily_schedule_srv_tx_cmd_id, |
12380 | 15 | dissect_zcl_daily_schedule_attr_data |
12381 | 15 | ); |
12382 | 15 | } /*proto_reg_handoff_zbee_zcl_daily_schedule*/ |
12383 | | |
12384 | | |
12385 | | /* ########################################################################## */ |
12386 | | /* #### (0x0708) DEVICE_MANAGEMENT CLUSTER ############################################## */ |
12387 | | /* ########################################################################## */ |
12388 | | |
12389 | | /* Attributes */ |
12390 | | #define zbee_zcl_device_management_attr_server_names_VALUE_STRING_LIST(XXX) \ |
12391 | | /* Supplier Control Attribute Set */ \ |
12392 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_ID, 0x0100, "Provider ID" ) \ |
12393 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_NAME, 0x0101, "Provider Name" ) \ |
12394 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROVIDER_CONTACT_DETAILS, 0x0102, "Provider Contact Details" ) \ |
12395 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_ID, 0x0110, "Proposed Provider ID" ) \ |
12396 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_NAME, 0x0111, "Proposed Provider Name" ) \ |
12397 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CHANGE_DATE_TIME, 0x0112, "Proposed Provider Change Date/Time" ) \ |
12398 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CHANGE_CONTROL, 0x0113, "Proposed Provider Change Control" ) \ |
12399 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_PROVIDER_CONTACT_DETAILS, 0x0114, "Proposed Provider Contact Details" ) \ |
12400 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_ID, 0x0120, "Received Provider ID" ) \ |
12401 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_NAME, 0x0121, "Received Provider Name" ) \ |
12402 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROVIDER_CONTACT_DETAILS, 0x0122, "Received Provider Contact Details" ) \ |
12403 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_ID, 0x0130, "Received Proposed Provider ID" ) \ |
12404 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_NAME, 0x0131, "Received Proposed Provider Name" ) \ |
12405 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CHANGE_DATE_TIME, 0x0132, "Received Proposed Provider Change Date/Time" ) \ |
12406 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CHANGE_CONTROL, 0x0133, "Received Proposed Provider Change Control" ) \ |
12407 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_RECEIVED_PROPOSED_PROVIDER_CONTACT_DETAILS, 0x0134, "Received Proposed Provider Contact Details" ) \ |
12408 | | /* Tenancy Control Attribute Set */ \ |
12409 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CHANGE_OF_TENANCY_UPDATE_DATE_TIME, 0x0200, "Change of Tenancy Update Date/Time" ) \ |
12410 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_PROPOSED_TENANCY_CHANGE_CONTROL, 0x0201, "Proposed Tenancy Change control" ) \ |
12411 | | /* Backhaul Control Attribute Set */ \ |
12412 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_WAN_STATUS, 0x0300, "WAN Status" ) \ |
12413 | | /* HAN Control Attribute Set */ \ |
12414 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_LOW_MEDIUM_THRESHOLD, 0x0400, "Low Medium Threshold" ) \ |
12415 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_MEDIUM_HIGH_THRESHOLD, 0x0401, "Medium High Threshold" ) \ |
12416 | | /* Add client attribute sets */ \ |
12417 | | /* Smart Energy */ \ |
12418 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT, 0xFFFE, "Attribute Reporting Status" ) |
12419 | | |
12420 | | VALUE_STRING_ENUM(zbee_zcl_device_management_attr_server_names); |
12421 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_attr_server_names); |
12422 | | |
12423 | | #define zbee_zcl_device_management_attr_client_names_VALUE_STRING_LIST(XXX) \ |
12424 | | /* Supplier Attribute Set */ \ |
12425 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROVIDER_ID, 0x0000, "Provider ID" ) \ |
12426 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RECEIVED_PROVIDER_ID, 0x0010, "Received Provider ID" ) \ |
12427 | | /* Price Event Configuration Attribute Set */ \ |
12428 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOU_TARIFF_ACTIVATION, 0x0100, "TOU Tariff Activation" ) \ |
12429 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BLOCK_TARIFF_ACTIVATED, 0x0101, "Block Tariff Activated" ) \ |
12430 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BLOCK_TOU_TARIFF_ACTIVATED, 0x0102, "Block TOU Tariff Activated" ) \ |
12431 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SINGLE_TARIFF_RATE_ACTIVATED, 0x0103, "Single Tariff Rate Activated" ) \ |
12432 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ASYNCHRONOUS_BILLING_OCCURRED, 0x0104, "Asynchronous Billing Occurred" ) \ |
12433 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SYNCHRONOUS_BILLING_OCCURRED, 0x0105, "Synchronous Billing Occurred" ) \ |
12434 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_NOT_SUPPORTED, 0x0106, "Tariff Not Supported" ) \ |
12435 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_CLUSTER_NOT_FOUND, 0x0107, "Price Cluster Not Found" ) \ |
12436 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENCY_CHANGE_PASSIVE_ACTIVATED, 0x0108, "Currency Change Passive Activated" ) \ |
12437 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENCY_CHANGE_PASSIVE_UPDATED, 0x0109, "Currency Change Passive Updated" ) \ |
12438 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_MATRIX_PASSIVE_ACTIVATED, 0x010A, "Price Matrix Passive Activated" ) \ |
12439 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRICE_MATRIX_PASSIVE_UPDATED, 0x010B, "Price Matrix Passive Updated" ) \ |
12440 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_CHANGE_PASSIVE_ACTIVATED, 0x010C, "Tariff Change Passive Activated" ) \ |
12441 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TARIFF_CHANGED_PASSIVE_UPDATED, 0x010D, "Tariff Changed Passive Updated" ) \ |
12442 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_RECEIVED, 0x01B0, "Publish Price Received" ) \ |
12443 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_ACTIONED, 0x01B1, "Publish Price Actioned" ) \ |
12444 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_CANCELLED, 0x01B2, "Publish Price Cancelled" ) \ |
12445 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_REJECTED, 0x01B3, "Publish Price Rejected" ) \ |
12446 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_RECEIVED, 0x01B4, "Publish Tariff Information Received" ) \ |
12447 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_ACTIONED, 0x01B5, "Publish Tariff Information Actioned" ) \ |
12448 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_CANCELLED, 0x01B6, "Publish Tariff Information Cancelled" ) \ |
12449 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TARIFF_INFORMATION_REJECTED, 0x01B7, "Publish Tariff Information Rejected" ) \ |
12450 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_RECEIVED, 0x01B8, "Publish Price Matrix Received" ) \ |
12451 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_ACTIONED, 0x01B9, "Publish Price Matrix Actioned" ) \ |
12452 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_CANCELLED, 0x01BA, "Publish Price Matrix Cancelled" ) \ |
12453 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_PRICE_MATRIX_REJECTED, 0x01BB, "Publish Price Matrix Rejected" ) \ |
12454 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_RECEIVED, 0x01BC, "Publish Block Thresholds Received" ) \ |
12455 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_ACTIONED, 0x01BD, "Publish Block Thresholds Actioned" ) \ |
12456 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_CANCELLED, 0x01BE, "Publish Block Thresholds Cancelled" ) \ |
12457 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_THRESHOLDS_REJECTED, 0x01BF, "Publish Block Thresholds Rejected" ) \ |
12458 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_RECEIVED, 0x01C0, "Publish Calorific Value Received" ) \ |
12459 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_ACTIONED, 0x01C1, "Publish Calorific Value Actioned" ) \ |
12460 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_CANCELLED, 0x01C2, "Publish Calorific Value Cancelled" ) \ |
12461 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALORIFIC_VALUE_REJECTED, 0x01C3, "Publish Calorific Value Rejected" ) \ |
12462 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_RECEIVED, 0x01C4, "Publish Conversion Factor Received" ) \ |
12463 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_ACTIONED, 0x01C5, "Publish Conversion Factor Actioned" ) \ |
12464 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_CANCELLED, 0x01C6, "Publish Conversion Factor Cancelled" ) \ |
12465 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONVERSION_FACTOR_REJECTED, 0x01C7, "Publish Conversion Factor Rejected" ) \ |
12466 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_RECEIVED, 0x01C8, "Publish CO2 Value Received" ) \ |
12467 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_ACTIONED, 0x01C9, "Publish CO2 Value Actioned" ) \ |
12468 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_CANCELLED, 0x01CA, "Publish CO2 Value Cancelled" ) \ |
12469 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CO2_VALUE_REJECTED, 0x01CB, "Publish CO2 Value Rejected" ) \ |
12470 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_RECEIVED, 0x01CC, "Publish CPP event Received" ) \ |
12471 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_ACTIONED, 0x01CD, "Publish CPP event Actioned" ) \ |
12472 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_CANCELLED, 0x01CE, "Publish CPP event Cancelled" ) \ |
12473 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CPP_EVENT_REJECTED, 0x01CF, "Publish CPP event Rejected" ) \ |
12474 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_RECEIVED, 0x01D0, "Publish Tier Labels Received" ) \ |
12475 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_ACTIONED, 0x01D1, "Publish Tier Labels Actioned" ) \ |
12476 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_CANCELLED, 0x01D2, "Publish Tier Labels Cancelled" ) \ |
12477 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_TIER_LABELS_REJECTED, 0x01D3, "Publish Tier Labels Rejected" ) \ |
12478 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_RECEIVED, 0x01D4, "Publish Billing Period Received" ) \ |
12479 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_ACTIONED, 0x01D5, "Publish Billing Period Actioned" ) \ |
12480 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_CANCELLED, 0x01D6, "Publish Billing Period Cancelled" ) \ |
12481 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BILLING_PERIOD_REJECTED, 0x01D7, "Publish Billing Period Rejected" ) \ |
12482 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_RECEIVED, 0x01D8, "Publish Consolidated Bill Received" ) \ |
12483 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_ACTIONED, 0x01D9, "Publish Consolidated Bill Actioned" ) \ |
12484 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_CANCELLED, 0x01DA, "Publish Consolidated Bill Cancelled" ) \ |
12485 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CONSOLIDATED_BILL_REJECTED, 0x01DB, "Publish Consolidated Bill Rejected" ) \ |
12486 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_RECEIVED, 0x01DC, "Publish Block Period Received" ) \ |
12487 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_ACTIONED, 0x01DD, "Publish Block Period Actioned" ) \ |
12488 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_CANCELLED, 0x01DE, "Publish Block Period Cancelled" ) \ |
12489 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_BLOCK_PERIOD_REJECTED, 0x01DF, "Publish Block Period Rejected" ) \ |
12490 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_RECEIVED, 0x01E0, "Publish Credit Payment Info Received" ) \ |
12491 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_ACTIONED, 0x01E1, "Publish Credit Payment Info Actioned" ) \ |
12492 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_CANCELLED, 0x01E2, "Publish Credit Payment Info Cancelled" ) \ |
12493 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CREDIT_PAYMENT_INFO_REJECTED, 0x01E3, "Publish Credit Payment Info Rejected" ) \ |
12494 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_RECEIVED, 0x01E4, "Publish Currency Conversion Received" ) \ |
12495 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_ACTIONED, 0x01E5, "Publish Currency Conversion Actioned" ) \ |
12496 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_CANCELLED, 0x01E6, "Publish Currency Conversion Cancelled" ) \ |
12497 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CURRENCY_CONVERSION_REJECTED, 0x01E7, "Publish Currency Conversion Rejected" ) \ |
12498 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_PRICE_CLUSTER_GROUP_ID, 0x01FF, "Reserved for Price Cluster Group ID" ) \ |
12499 | | /* Metering Event Configuration Attribute Set */ \ |
12500 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHECK_METER, 0x0200, "Check Meter" ) \ |
12501 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_BATTERY, 0x0201, "Low Battery" ) \ |
12502 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAMPER_DETECT, 0x0202, "Tamper Detect" ) \ |
12503 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_STATUS, 0x0203, "Supply Status" ) \ |
12504 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_QUALITY, 0x0204, "Supply Quality" ) \ |
12505 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LEAK_DETECT, 0x0205, "Leak Detect" ) \ |
12506 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SERVICE_DISCONNECT, 0x0206, "Service Disconnect" ) \ |
12507 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METERING_REVERSE_FLOW_GAS_WATER_HEAT, 0x0207, "Reverse Flow (Gas, Water, Heat/Cooling)" ) \ |
12508 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_COVER_REMOVED, 0x0208, "Meter Cover Removed" ) \ |
12509 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_COVER_CLOSED, 0x0209, "Meter Cover Closed" ) \ |
12510 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STRONG_MAGNETIC_FIELD, 0x020A, "Strong Magnetic Field" ) \ |
12511 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_STRONG_MAGNETIC_FIELD, 0x020B, "No Strong Magnetic Field" ) \ |
12512 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_FAILURE, 0x020C, "Battery Failure" ) \ |
12513 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROGRAM_MEMORY_ERROR, 0x020D, "Program Memory Error" ) \ |
12514 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RAM_ERROR, 0x020E, "RAM Error" ) \ |
12515 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NV_MEMORY_ERROR, 0x020F, "NV Memory Error" ) \ |
12516 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L1, 0x0210, "Low Voltage L1" ) \ |
12517 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L1, 0x0211, "High Voltage L1" ) \ |
12518 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L2, 0x0212, "Low Voltage L2" ) \ |
12519 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L2, 0x0213, "High Voltage L2" ) \ |
12520 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_VOLTAGE_L3, 0x0214, "Low Voltage L3" ) \ |
12521 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_HIGH_VOLTAGE_L3, 0x0215, "High Voltage L3" ) \ |
12522 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L1, 0x0216, "Over Current L1" ) \ |
12523 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L2, 0x0217, "Over Current L2" ) \ |
12524 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_CURRENT_L3, 0x0218, "Over Current L3" ) \ |
12525 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L1, 0x0219, "Frequency too Low L1" ) \ |
12526 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L1, 0x021A, "Frequency too High L1" ) \ |
12527 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L2, 0x021B, "Frequency too Low L2" ) \ |
12528 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L2, 0x021C, "Frequency too High L2" ) \ |
12529 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_LOW_L3, 0x021D, "Frequency too Low L3" ) \ |
12530 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FREQUENCY_TOO_HIGH_L3, 0x021E, "Frequency too High L3" ) \ |
12531 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GROUND_FAULT, 0x021F, "Ground Fault" ) \ |
12532 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ELECTRIC_TAMPER_DETECT, 0x0220, "Electric Tamper Detect" ) \ |
12533 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INCORRECT_POLARITY, 0x0221, "Incorrect Polarity" ) \ |
12534 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CURRENT_NO_VOLTAGE, 0x0222, "Current No Voltage" ) \ |
12535 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNDER_VOLTAGE, 0x0223, "Under Voltage" ) \ |
12536 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OVER_VOLTAGE, 0x0224, "Over Voltage" ) \ |
12537 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NORMAL_VOLTAGE, 0x0225, "Normal Voltage" ) \ |
12538 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PF_BELOW_THRESHOLD, 0x0226, "PF Below Threshold" ) \ |
12539 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PF_ABOVE_THRESHOLD, 0x0227, "PF Above Threshold" ) \ |
12540 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TERMINAL_COVER_REMOVED, 0x0228, "Terminal Cover Removed" ) \ |
12541 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TERMINAL_COVER_CLOSED, 0x0229, "Terminal Cover Closed" ) \ |
12542 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BURST_DETECT, 0x0230, "Burst Detect" ) \ |
12543 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRESSURE_TOO_LOW, 0x0231, "Pressure too Low" ) \ |
12544 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PRESSURE_TOO_HIGH, 0x0232, "Pressure too High" ) \ |
12545 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_COMMUNICATION_ERROR, 0x0233, "Flow Sensor Communication Error" ) \ |
12546 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_MEASUREMENT_FAULT, 0x0234, "Flow Sensor Measurement Fault" ) \ |
12547 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_REVERSE_FLOW, 0x0235, "Flow Sensor Reverse Flow" ) \ |
12548 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FLOW_SENSOR_AIR_DETECT, 0x0236, "Flow Sensor Air Detect" ) \ |
12549 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PIPE_EMPTY, 0x0237, "Pipe Empty" ) \ |
12550 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INLET_TEMPERATURE_SENSOR_FAULT, 0x0250, "Inlet Temperature Sensor Fault" ) \ |
12551 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_OUTLET_TEMPERATURE_SENSOR_FAULT, 0x0251, "Outlet Temperature Sensor Fault" ) \ |
12552 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REVERSE_FLOW, 0x0260, "Reverse Flow" ) \ |
12553 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TILT_TAMPER, 0x0261, "Tilt Tamper" ) \ |
12554 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_COVER_REMOVED, 0x0262, "Battery Cover Removed" ) \ |
12555 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_COVER_CLOSED, 0x0263, "Battery Cover Closed" ) \ |
12556 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EXCESS_FLOW, 0x0264, "Excess Flow" ) \ |
12557 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TILT_TAMPER_ENDED, 0x0265, "Tilt Tamper Ended" ) \ |
12558 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MEASUREMENT_SYSTEM_ERROR, 0x0270, "Measurement System Error" ) \ |
12559 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_WATCHDOG_ERROR, 0x0271, "Watchdog Error" ) \ |
12560 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_DISCONNECT_FAILURE, 0x0272, "Supply Disconnect Failure" ) \ |
12561 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_CONNECT_FAILURE, 0x0273, "Supply Connect Failure" ) \ |
12562 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MEASUREMENT_SOFTWARE_CHANGED, 0x0274, "Measurement Software Changed" ) \ |
12563 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DST_ENABLED, 0x0275, "DST Enabled" ) \ |
12564 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DST_DISABLED, 0x0276, "DST Disabled" ) \ |
12565 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_ADJUST_BACKWARD, 0x0277, "Clock Adjust Backward" ) \ |
12566 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_ADJUST_FORWARD, 0x0278, "Clock Adjust Forward" ) \ |
12567 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOCK_INVALID, 0x0279, "Clock Invalid" ) \ |
12568 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMUNICATION_ERROR_HAN, 0x027A, "Communication Error HAN" ) \ |
12569 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMUNICATION_OK_HAN, 0x027B, "Communication OK HAN" ) \ |
12570 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_FRAUD_ATTEMPT, 0x027C, "Meter Fraud Attempt" ) \ |
12571 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_POWER_LOSS, 0x027D, "Power Loss" ) \ |
12572 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNUSUAL_HAN_TRAFFIC, 0x027E, "Unusual HAN Traffic" ) \ |
12573 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_CLOCK_CHANGE, 0x027F, "Unexpected Clock Change" ) \ |
12574 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_COMMS_USING_UNAUTHENTICATED_COMPONENT, 0x0280, "Comms Using Unauthenticated Component" ) \ |
12575 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MET_ERROR_REGISTER_CLEAR, 0x0281, "Metering Error Register Clear" ) \ |
12576 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MET_ALARM_REGISTER_CLEAR, 0x0282, "Metering Alarm Register Clear" ) \ |
12577 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_HW_RESET, 0x0283, "Unexpected HW Reset" ) \ |
12578 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNEXPECTED_PROGRAM_EXECUTION, 0x0284, "Unexpected Program Execution" ) \ |
12579 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_EXCEEDED, 0x0285, "Limit Threshold Exceeded" ) \ |
12580 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_OK, 0x0286, "Limit Threshold OK" ) \ |
12581 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LIMIT_THRESHOLD_CHANGED, 0x0287, "Limit Threshold Changed" ) \ |
12582 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MAXIMUM_DEMAND_EXCEEDED, 0x0288, "Maximum Demand Exceeded" ) \ |
12583 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PROFILE_CLEARED, 0x0289, "Profile Cleared" ) \ |
12584 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOAD_PROFILE_CLEARED, 0x028A, "Load Profile Cleared" ) \ |
12585 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_BATTERY_WARNING, 0x028B, "Battery Warning" ) \ |
12586 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_WRONG_SIGNATURE, 0x028C, "Wrong Signature" ) \ |
12587 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_SIGNATURE, 0x028D, "No Signature" ) \ |
12588 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SIGNATURE_NOT_VALID, 0x028E, "Signature Not Valid" ) \ |
12589 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNAUTHORISED_ACTION_FROM_HAN, 0x028F, "Unauthorized Action From HAN" ) \ |
12590 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FAST_POLLING_START, 0x0290, "Fast Polling Start" ) \ |
12591 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FAST_POLLING_END, 0x0291, "Fast Polling End" ) \ |
12592 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_REPORTING_INTERVAL_CHANGED, 0x0292, "Meter Reporting Interval Changed" ) \ |
12593 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCONNECT_TO_LOAD_LIMIT, 0x0293, "Disconnect to Load Limit" ) \ |
12594 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_SUPPLY_STATUS_REGISTER_CHANGED, 0x0294, "Meter Supply Status Register Changed" ) \ |
12595 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_METER_ALARM_STATUS_REGISTER_CHANGED, 0x0295, "Meter Alarm Status Register Changed" ) \ |
12596 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EXTENDED_METER_ALARM_STATUS_REG_CHANGED,0x0296, "Extended Meter Alarm Status Register Changed." ) \ |
12597 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DATA_ACCESS_VIA_LOCAL_PORT, 0x0297, "Data Access Via Local Port" ) \ |
12598 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_MIRROR_SUCCESS, 0x0298, "Configure Mirror Success" ) \ |
12599 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_MIRROR_FAILURE, 0x0299, "Configure Mirror Failure" ) \ |
12600 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAG_SCHEME_SUCC,0x029A, "Configure Notification Flag Scheme Success" ) \ |
12601 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAG_SCHEME_FAIL,0x029B, "Configure Notification Flag Scheme Failure" ) \ |
12602 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAGS_SUCCESS, 0x029C, "Configure Notification Flags Success" ) \ |
12603 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONFIGURE_NOTIFICATION_FLAGS_FAILURE, 0x029D, "Configure Notification Flags Failure" ) \ |
12604 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STAY_AWAKE_REQUEST_HAN, 0x029E, "Stay Awake Request HAN" ) \ |
12605 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_STAY_AWAKE_REQUEST_WAN, 0x029F, "Stay Awake Request WAN" ) \ |
12606 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_A, 0x02B0, "Manufacturer Specific A" ) \ |
12607 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_B, 0x02B1, "Manufacturer Specific B" ) \ |
12608 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_C, 0x02B2, "Manufacturer Specific C" ) \ |
12609 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_D, 0x02B3, "Manufacturer Specific D" ) \ |
12610 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_E, 0x02B4, "Manufacturer Specific E" ) \ |
12611 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_F, 0x02B5, "Manufacturer Specific F" ) \ |
12612 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_G, 0x02B6, "Manufacturer Specific G" ) \ |
12613 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_H, 0x02B7, "Manufacturer Specific H" ) \ |
12614 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUFACTURER_SPECIFIC_I, 0x02B8, "Manufacturer Specific I" ) \ |
12615 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_RECEIVED, 0x02C0, "Get Profile Command Received" ) \ |
12616 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_ACTIONED, 0x02C1, "Get Profile Command Actioned" ) \ |
12617 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_CANCELLED, 0x02C2, "Get Profile Command Cancelled" ) \ |
12618 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PROFILE_COMMAND_REJECTED, 0x02C3, "Get Profile Command Rejected" ) \ |
12619 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_RECV, 0x02C4, "Request Mirror Response Command Received" ) \ |
12620 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_ACTION, 0x02C5, "Request Mirror Response Command Actioned" ) \ |
12621 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_CANCEL, 0x02C6, "Request Mirror Response Command Cancelled" ) \ |
12622 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_MIRROR_RESPONSE_COMMAND_REJECT, 0x02C7, "Request Mirror Response Command Rejected" ) \ |
12623 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_RECEIVED, 0x02C8, "Mirror Removed Command Received" ) \ |
12624 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_ACTIONED, 0x02C9, "Mirror Removed Command Actioned" ) \ |
12625 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_CANCELLED, 0x02CA, "Mirror Removed Command Cancelled" ) \ |
12626 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REMOVED_COMMAND_REJECTED, 0x02CB, "Mirror Removed Command Rejected" ) \ |
12627 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_RECEIVED, 0x02CC, "Get Snapshot Command Received" ) \ |
12628 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_ACTIONED, 0x02CD, "Get Snapshot Command Actioned" ) \ |
12629 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_CANCELLED, 0x02CE, "Get Snapshot Command Cancelled" ) \ |
12630 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SNAPSHOT_COMMAND_REJECTED, 0x02CF, "Get Snapshot Command Rejected" ) \ |
12631 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_RECEIVED, 0x02D0, "Take Snapshot Command Received" ) \ |
12632 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_ACTIONED, 0x02D1, "Take Snapshot Command Actioned" ) \ |
12633 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_CANCELLED, 0x02D2, "Take Snapshot Command Cancelled" ) \ |
12634 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TAKE_SNAPSHOT_COMMAND_REJECTED, 0x02D3, "Take Snapshot Command Rejected" ) \ |
12635 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_RECV, 0x02D4, "Mirror Report Attribute Response Command Received" ) \ |
12636 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_ACTION, 0x02D5, "Mirror Report Attribute Response Command Actioned" ) \ |
12637 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_CANCEL, 0x02D6, "Mirror Report Attribute Response Command Cancelled" ) \ |
12638 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MIRROR_REPORT_ATTRIBUTE_RSP_CMD_REJECT, 0x02D7, "Mirror Report Attribute Response Command Rejected" ) \ |
12639 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_RECEIVED, 0x02D8, "Schedule Snapshot Command Received" ) \ |
12640 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_ACTIONED, 0x02D9, "Schedule Snapshot Command Actioned" ) \ |
12641 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_CANCELLED, 0x02DA, "Schedule Snapshot Command Cancelled" ) \ |
12642 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SCHEDULE_SNAPSHOT_COMMAND_REJECTED, 0x02DB, "Schedule Snapshot Command Rejected" ) \ |
12643 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_RECEIVED, 0x02DC, "Start Sampling Command Received" ) \ |
12644 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_ACTIONED, 0x02DD, "Start Sampling Command Actioned" ) \ |
12645 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_CANCELLED, 0x02DE, "Start Sampling Command Cancelled" ) \ |
12646 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_START_SAMPLING_COMMAND_REJECTED, 0x02DF, "Start Sampling Command Rejected" ) \ |
12647 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_RECEIVED, 0x02E0, "Get Sampled Data Command Received" ) \ |
12648 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_ACTIONED, 0x02E1, "Get Sampled Data Command Actioned" ) \ |
12649 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_CANCELLED, 0x02E2, "Get Sampled Data Command Cancelled" ) \ |
12650 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SAMPLED_DATA_COMMAND_REJECTED, 0x02E3, "Get Sampled Data Command Rejected" ) \ |
12651 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_ON, 0x02E4, "Supply On" ) \ |
12652 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_ARMED, 0x02E5, "Supply Armed" ) \ |
12653 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SUPPLY_OFF, 0x02E6, "Supply Off" ) \ |
12654 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCONNECTED_DUE_TO_TAMPER_DETECTED, 0x02E7, "Disconnected due to Tamper Detected" ) \ |
12655 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUAL_DISCONNECT, 0x02E8, "Manual Disconnect" ) \ |
12656 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MANUAL_CONNECT, 0x02E9, "Manual Connect" ) \ |
12657 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REMOTE_DISCONNECTION, 0x02EA, "Remote Disconnection" ) \ |
12658 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REMOTE_CONNECT, 0x02EB, "Remote Connect" ) \ |
12659 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_DISCONNECTION, 0x02EC, "Local Disconnection" ) \ |
12660 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CONNECT, 0x02ED, "Local Connect" ) \ |
12661 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_RECEIVED, 0x02EE, "Change Supply Received" ) \ |
12662 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_ACTIONED, 0x02EF, "Change Supply Actioned" ) \ |
12663 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_CANCELLED, 0x02F0, "Change Supply Cancelled" ) \ |
12664 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_SUPPLY_REJECTED, 0x02F1, "Change Supply Rejected" ) \ |
12665 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_RECEIVED, 0x02F2, "Local Change Supply Received" ) \ |
12666 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_ACTIONED, 0x02F3, "Local Change Supply Actioned" ) \ |
12667 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_CANCELLED, 0x02F4, "Local Change Supply Cancelled" ) \ |
12668 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOCAL_CHANGE_SUPPLY_REJECTED, 0x02F5, "Local Change Supply Rejected" ) \ |
12669 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_RECV, 0x02F6, "Publish Uncontrolled Flow Threshold Received" ) \ |
12670 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_ACTION, 0x02F7, "Publish Uncontrolled Flow Threshold Actioned" ) \ |
12671 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_CANCEL, 0x02F8, "Publish Uncontrolled Flow Threshold Cancelled" ) \ |
12672 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_UNCONTROLLED_FLOW_THRES_REJECY, 0x02F9, "Publish Uncontrolled Flow Threshold Rejected" ) \ |
12673 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_METERING_CLUSTER_GROUP_ID, 0x02FF, "Reserved for Metering Cluster Group Id" ) \ |
12674 | | /* Messaging Event Configuration Attribute Set */ \ |
12675 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MESSAGE_CONFIRMATION_SENT, 0x0300, "Message Confirmation Sent" ) \ |
12676 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_RECEIVED, 0x03C0, "Display Message Received" ) \ |
12677 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_ACTIONED, 0x03C1, "Display Message Actioned" ) \ |
12678 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_CANCELLED, 0x03C2, "Display Message Cancelled" ) \ |
12679 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISPLAY_MESSAGE_REJECTED, 0x03C3, "Display Message Rejected" ) \ |
12680 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_RECEIVED, 0x03C4, "Cancel Message Received" ) \ |
12681 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_ACTIONED, 0x03C5, "Cancel Message Actioned" ) \ |
12682 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_CANCELLED, 0x03C6, "Cancel Message Cancelled" ) \ |
12683 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CANCEL_MESSAGE_REJECTED, 0x03C7, "Cancel Message Rejected" ) \ |
12684 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_MESSAGING_CLUSTER_GROUP_ID,0x03FF, "Reserved for Messaging Cluster Group ID" ) \ |
12685 | | /* Prepayment Event Configuration Attribute Set */ \ |
12686 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_LOW_CREDIT, 0x0400, "Low Credit" ) \ |
12687 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_NO_CREDIT_ZERO_CREDIT, 0x0401, "No Credit (Zero Credit)" ) \ |
12688 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_EXHAUSTED, 0x0402, "Credit Exhausted" ) \ |
12689 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_ENABLED, 0x0403, "Emergency Credit Enabled" ) \ |
12690 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_EXHAUSTED, 0x0404, "Emergency Credit Exhausted" ) \ |
12691 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IHD_LOW_CREDIT_WARNING, 0x0405, "IHD Low Credit Warning" ) \ |
12692 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PHYSICAL_ATTACK_ON_THE_PREPAY_METER, 0x0420, "Physical Attack on the Prepay Meter" ) \ |
12693 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER, 0x0421, "Electronic Attack on the Prepay Meter" ) \ |
12694 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DISCOUNT_APPLIED, 0x0422, "Discount Applied" ) \ |
12695 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT, 0x0423, "Credit Adjustment" ) \ |
12696 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUST_FAIL, 0x0424, "Credit Adjust Fail" ) \ |
12697 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DEBT_ADJUSTMENT, 0x0425, "Debt Adjustment" ) \ |
12698 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_DEBT_ADJUST_FAIL, 0x0426, "Debt Adjust Fail" ) \ |
12699 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_CHANGE, 0x0427, "Mode Change" ) \ |
12700 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_CODE_ERROR, 0x0428, "Topup Code Error" ) \ |
12701 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ALREADY_USED, 0x0429, "Topup Already Used" ) \ |
12702 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_CODE_INVALID, 0x042A, "Topup Code Invalid" ) \ |
12703 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ACCEPTED_VIA_REMOTE, 0x042B, "Topup Accepted via Remote" ) \ |
12704 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_ACCEPTED_VIA_MANUAL_ENTRY, 0x042C, "Topup Accepted via Manual Entry" ) \ |
12705 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_IN_USE, 0x042D, "Friendly Credit in Use" ) \ |
12706 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_PERIOD_END_WARNING, 0x042E, "Friendly Credit Period End Warning" ) \ |
12707 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FRIENDLY_CREDIT_PERIOD_END, 0x042F, "Friendly Credit Period End" ) \ |
12708 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PP_ERROR_REGISTER_CLEAR, 0x0430, "Prepayment Error Register Clear" ) \ |
12709 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PP_ALARM_REGISTER_CLEAR, 0x0431, "Prepayment Alarm Register Clear" ) \ |
12710 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PREPAY_CLUSTER_NOT_FOUND, 0x0432, "Prepay Cluster Not Found" ) \ |
12711 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TOPUP_VALUE_TOO_LARGE, 0x0433, "Topup Value too Large" ) \ |
12712 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_CREDIT_2_PREPAY, 0x0441, "Mode Credit 2 Prepay" ) \ |
12713 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_PREPAY_2_CREDIT, 0x0442, "Mode Prepay 2 Credit" ) \ |
12714 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_MODE_DEFAULT, 0x0443, "Mode Default" ) \ |
12715 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_RECV, 0x04C0, "Select Available Emergency Credit Received" ) \ |
12716 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_ACTION, 0x04C1, "Select Available Emergency Credit Actioned" ) \ |
12717 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_CANCEL, 0x04C2, "Select Available Emergency Credit Cancelled" ) \ |
12718 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SELECT_AVAILABLE_EMERG_CREDIT_REJECT, 0x04C3, "Select Available Emergency Credit Rejected" ) \ |
12719 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_RECEIVED, 0x04C4, "Change Debt Received" ) \ |
12720 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_ACTIONED, 0x04C5, "Change Debt Actioned" ) \ |
12721 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_CANCELLED, 0x04C6, "Change Debt Cancelled" ) \ |
12722 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_DEBT_REJECTED, 0x04C7, "Change Debt Rejected" ) \ |
12723 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_RECEIVED, 0x04C8, "Emergency Credit Setup Received" ) \ |
12724 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_ACTIONED, 0x04C9, "Emergency Credit Setup Actioned" ) \ |
12725 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_CANCELLED, 0x04CA, "Emergency Credit Setup Cancelled" ) \ |
12726 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EMERGENCY_CREDIT_SETUP_REJECTED, 0x04CB, "Emergency Credit Setup Rejected" ) \ |
12727 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_RECEIVED, 0x04CC, "Consumer Topup Received" ) \ |
12728 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_ACTIONED, 0x04CD, "Consumer Topup Actioned" ) \ |
12729 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_CANCELLED, 0x04CE, "Consumer Topup Cancelled" ) \ |
12730 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CONSUMER_TOPUP_REJECTED, 0x04CF, "Consumer Topup Rejected" ) \ |
12731 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_RECEIVED, 0x04D0, "Credit Adjustment Received" ) \ |
12732 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_ACTIONED, 0x04D1, "Credit Adjustment Actioned" ) \ |
12733 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_CANCELLED, 0x04D2, "Credit Adjustment Cancelled" ) \ |
12734 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CREDIT_ADJUSTMENT_REJECTED, 0x04D3, "Credit Adjustment Rejected" ) \ |
12735 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_RECEIVED, 0x04D4, "Change Payment Mode Received" ) \ |
12736 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_ACTIONED, 0x04D5, "Change Payment Mode Actioned" ) \ |
12737 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_CANCELLED, 0x04D6, "Change Payment Mode Cancelled" ) \ |
12738 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PAYMENT_MODE_REJECTED, 0x04D7, "Change Payment Mode Rejected" ) \ |
12739 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_RECEIVED, 0x04D8, "Get Prepay Snapshot Received" ) \ |
12740 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_ACTIONED, 0x04D9, "Get Prepay Snapshot Actioned" ) \ |
12741 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_CANCELLED, 0x04DA, "Get Prepay Snapshot Cancelled" ) \ |
12742 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_PREPAY_SNAPSHOT_REJECTED, 0x04DB, "Get Prepay Snapshot Rejected" ) \ |
12743 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_RECEIVED, 0x04DC, "Get Topup Log Received" ) \ |
12744 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_ACTIONED, 0x04DD, "Get Topup Log Actioned" ) \ |
12745 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_CANCELLED, 0x04DE, "Get Topup Log Cancelled" ) \ |
12746 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_TOPUP_LOG_REJECTED, 0x04DF, "Get Topup Log Rejected" ) \ |
12747 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_RECEIVED, 0x04E0, "Set Low Credit Warning Level Received" ) \ |
12748 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_ACTIONED, 0x04E1, "Set Low Credit Warning Level Actioned" ) \ |
12749 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_CANCELLED, 0x04E2, "Set Low Credit Warning Level Cancelled" ) \ |
12750 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_LOW_CREDIT_WARNING_LEVEL_REJECTED, 0x04E3, "Set Low Credit Warning Level Rejected" ) \ |
12751 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_RECEIVED, 0x04E4, "Get Debt Repay Log Received" ) \ |
12752 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_ACTIONED, 0x04E5, "Get Debt Repay Log Actioned" ) \ |
12753 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_CANCELLED, 0x04E6, "Get Debt Repay Log Cancelled" ) \ |
12754 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_DEBT_REPAY_LOG_REJECTED, 0x04E7, "Get Debt Repay Log Rejected" ) \ |
12755 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_RECEIVED, 0x04E8, "Set Maximum Credit Limit Received" ) \ |
12756 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_ACTIONED, 0x04E9, "Set Maximum Credit Limit Actioned" ) \ |
12757 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_CANCELLED, 0x04EA, "Set Maximum Credit Limit Cancelled" ) \ |
12758 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_MAXIMUM_CREDIT_LIMIT_REJECTED, 0x04EB, "Set Maximum Credit Limit Rejected" ) \ |
12759 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_RECEIVED, 0x04EC, "Set Overall Debt Cap Received" ) \ |
12760 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_ACTIONED, 0x04ED, "Set Overall Debt Cap Actioned" ) \ |
12761 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_CANCELLED, 0x04EE, "Set Overall Debt Cap Cancelled" ) \ |
12762 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_OVERALL_DEBT_CAP_REJECTED, 0x04EF, "Set Overall Debt Cap Rejected" ) \ |
12763 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_PP_CLUSTER_GROUP_ID, 0x04FF, "Reserved for Prepayment Cluster Group ID" ) \ |
12764 | | /* Calendar Event Configuration Attribute Set */ \ |
12765 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CLUSTER_NOT_FOUND, 0x0500, "Calendar Cluster Not Found" ) \ |
12766 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CHANGE_PASSIVE_ACTIVATED, 0x0501, "Calendar Change Passive Activated" ) \ |
12767 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CALENDAR_CHANGE_PASSIVE_UPDATED, 0x0502, "Calendar Change Passive Updated" ) \ |
12768 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_RECEIVED, 0x05C0, "Publish Calendar Received" ) \ |
12769 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_ACTIONED, 0x05C1, "Publish Calendar Actioned" ) \ |
12770 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_CANCELLED, 0x05C2, "Publish Calendar Cancelled" ) \ |
12771 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_CALENDAR_REJECTED, 0x05C3, "Publish Calendar Rejected" ) \ |
12772 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_RECEIVED, 0x05C4, "Publish Day Profile Received" ) \ |
12773 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_ACTIONED, 0x05C5, "Publish Day Profile Actioned" ) \ |
12774 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_CANCELLED, 0x05C6, "Publish Day Profile Cancelled" ) \ |
12775 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_DAY_PROFILE_REJECTED, 0x05C7, "Publish Day Profile Rejected" ) \ |
12776 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_RECEIVED, 0x05C8, "Publish Week Profile Received" ) \ |
12777 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_ACTIONED, 0x05C9, "Publish Week Profile Actioned" ) \ |
12778 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_CANCELLED, 0x05CA, "Publish Week Profile Cancelled" ) \ |
12779 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_WEEK_PROFILE_REJECTED, 0x05CB, "Publish Week Profile Rejected" ) \ |
12780 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_RECEIVED, 0x05CC, "Publish Seasons Received" ) \ |
12781 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_ACTIONED, 0x05CD, "Publish Seasons Actioned" ) \ |
12782 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_CANCELLED, 0x05CE, "Publish Seasons Cancelled" ) \ |
12783 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SEASONS_REJECTED, 0x05CF, "Publish Seasons Rejected" ) \ |
12784 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_RECEIVED, 0x05D0, "Publish Special Days Received" ) \ |
12785 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_ACTIONED, 0x05D1, "Publish Special Days Actioned" ) \ |
12786 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_CANCELLED, 0x05D2, "Publish Special Days Cancelled" ) \ |
12787 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_SPECIAL_DAYS_REJECTED, 0x05D3, "Publish Special Days Rejected" ) \ |
12788 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_CALENDAR_CLUSTER_GROUP_ID, 0x05FF, "Reserved For Calendar Cluster Group ID" ) \ |
12789 | | /* Device Management Event Configuration Attribute Set */ \ |
12790 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_1_CHANGE, 0x0600, "Password 1 Change" ) \ |
12791 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_2_CHANGE, 0x0601, "Password 2 Change" ) \ |
12792 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_3_CHANGE, 0x0602, "Password 3 Change" ) \ |
12793 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PASSWORD_4_CHANGE, 0x0603, "Password 4 Change" ) \ |
12794 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_EVENT_LOG_CLEARED, 0x0604, "Event Log Cleared" ) \ |
12795 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_APS_TIMEOUT, 0x0610, "ZigBee APS Timeout" ) \ |
12796 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_IEEE_TRANS_FAILURE_OVER_THRES, 0x0611, "ZigBee IEEE Transmission Failure Over Threshold" ) \ |
12797 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ZIGBEE_IEEE_FRAME_CHECK_SEQ_THRES, 0x0612, "ZigBee IEEE Frame Check Sequence Threshold" ) \ |
12798 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_CERTIFICATE, 0x0613, "Error Certificate" ) \ |
12799 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_SIGNATURE, 0x0614, "Error Signature" ) \ |
12800 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ERROR_PROGRAM_STORAGE, 0x0615, "Error Program Storage" ) \ |
12801 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_RECEIVED, 0x06C0, "Publish CoT Received" ) \ |
12802 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_ACTIONED, 0x06C1, "Publish CoT Actioned" ) \ |
12803 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_CANCELLED, 0x06C2, "Publish CoT Cancelled" ) \ |
12804 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COT_REJECTED, 0x06C3, "Publish CoT Rejected" ) \ |
12805 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_RECEIVED, 0x06C4, "Publish CoS Received" ) \ |
12806 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_ACTIONED, 0x06C5, "Publish CoS Actioned" ) \ |
12807 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_CANCELLED, 0x06C6, "Publish CoS Cancelled" ) \ |
12808 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PUBLISH_COS_REJECTED, 0x06C7, "Publish CoS Rejected" ) \ |
12809 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_RECEIVED, 0x06C8, "Change Password Received" ) \ |
12810 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_ACTIONED, 0x06C9, "Change Password Actioned" ) \ |
12811 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_CANCELLED, 0x06CA, "Change Password Cancelled" ) \ |
12812 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CHANGE_PASSWORD_REJECTED, 0x06CB, "Change Password Rejected" ) \ |
12813 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_RECEIVED, 0x06CC, "Set Event Configuration Received" ) \ |
12814 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_ACTIONED, 0x06CD, "Set Event Configuration Actioned" ) \ |
12815 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_CANCELLED, 0x06CE, "Set Event Configuration Cancelled" ) \ |
12816 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_SET_EVENT_CONFIGURATION_REJECTED, 0x06CF, "Set Event Configuration Rejected" ) \ |
12817 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_RECEIVED, 0x06D0, "Update Site ID Received" ) \ |
12818 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_ACTIONED, 0x06D1, "Update Site ID Actioned" ) \ |
12819 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_CANCELLED, 0x06D2, "Update Site ID Cancelled" ) \ |
12820 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_SITE_ID_REJECTED, 0x06D3, "Update Site ID Rejected" ) \ |
12821 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_RECEIVED, 0x06D4, "Update CIN Received" ) \ |
12822 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_ACTIONED, 0x06D5, "Update CIN Actioned" ) \ |
12823 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_CANCELLED, 0x06D6, "Update CIN Cancelled" ) \ |
12824 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPDATE_CIN_REJECTED, 0x06D7, "Update CIN Rejected" ) \ |
12825 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_DM_CLUSTER_ID, 0x06FF, "Reserved for Device Management Cluster Group ID" ) \ |
12826 | | /* Tunnel Event Configuration Attribute Set */ \ |
12827 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TUNNELING_CLUSTER_NOT_FOUND, 0x0700, "Tunneling Cluster Not Found" ) \ |
12828 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UNSUPPORTED_PROTOCOL, 0x0701, "Unsupported Protocol" ) \ |
12829 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_INCORRECT_PROTOCOL, 0x0702, "Incorrect Protocol" ) \ |
12830 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_RECEIVED, 0x07C0, "Request Tunnel Command Received" ) \ |
12831 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_REJECTED, 0x07C1, "Request Tunnel Command Rejected" ) \ |
12832 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_REQUEST_TUNNEL_COMMAND_GENERATED, 0x07C2, "Request Tunnel Command Generated" ) \ |
12833 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_RECEIVED, 0x07C3, "Close Tunnel Command Received" ) \ |
12834 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_REJECTED, 0x07C4, "Close Tunnel Command Rejected" ) \ |
12835 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_CLOSE_TUNNEL_COMMAND_GENERATED, 0x07C5, "Close Tunnel Command Generated" ) \ |
12836 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_RECEIVED, 0x07C6, "Transfer Data Command Received" ) \ |
12837 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_REJECTED, 0x07C7, "Transfer Data Command Rejected" ) \ |
12838 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_COMMAND_GENERATED, 0x07C8, "Transfer Data Command Generated" ) \ |
12839 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_RECEIVED, 0x07C9, "Transfer Data Error Command Received" ) \ |
12840 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_REJECTED, 0x07CA, "Transfer Data Error Command Rejected" ) \ |
12841 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_TRANSFER_DATA_ERROR_COMMAND_GENERATED, 0x07CB, "Transfer Data Error Command Generated" ) \ |
12842 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_RECEIVED, 0x07CC, "Ack Transfer Data Command Received" ) \ |
12843 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_REJECTED, 0x07CD, "Ack Transfer Data Command Rejected" ) \ |
12844 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_ACK_TRANSFER_DATA_COMMAND_GENERATED, 0x07CE, "Ack Transfer Data Command Generated" ) \ |
12845 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_RECEIVED, 0x07CF, "Ready Data Command Received" ) \ |
12846 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_REJECTED, 0x07D0, "Ready Data Command Rejected" ) \ |
12847 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_READY_DATA_COMMAND_GENERATED, 0x07D1, "Ready Data Command Generated" ) \ |
12848 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_RECV, 0x07D2, "Get Supported Tunnel Protocols Command Received" ) \ |
12849 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_REJECT, 0x07D3, "Get Supported Tunnel Protocols Command Rejected" ) \ |
12850 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_GET_SUPPORTED_TUNNEL_PROT_CMD_GENERATED,0x07D4, "Get Supported Tunnel Protocols Command Generated" ) \ |
12851 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_TUNNEL_CLUSTER_GROUP_ID, 0x07FF, "Reserved for Tunnel Cluster Group ID" ) \ |
12852 | | /* OTA Event Configuration Attribute Set */ \ |
12853 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_READY_FOR_ACTIVATION, 0x0800, "Firmware Ready for Activation" ) \ |
12854 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_ACTIVATED, 0x0801, "Firmware Activated" ) \ |
12855 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_FIRMWARE_ACTIVATION_FAILURE, 0x0802, "Firmware Activation Failure" ) \ |
12856 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_READY_FOR_ACTIVATION, 0x0803, "Patch Ready for Activation" ) \ |
12857 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_ACTIVATED, 0x0804, "Patch Activated" ) \ |
12858 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_PATCH_FAILURE, 0x0805, "Patch Failure" ) \ |
12859 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_NOTIFY_COMMAND_RECEIVED, 0x08C0, "Image Notify Command Received" ) \ |
12860 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_NOTIFY_COMMAND_REJECTED, 0x08C1, "Image Notify Command Rejected" ) \ |
12861 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_REQUEST_GENERATED, 0x08C2, "Query Next Image Request Generated" ) \ |
12862 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_RESPONSE_RECEIVED, 0x08C3, "Query Next Image Response Received" ) \ |
12863 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_NEXT_IMAGE_RESPONSE_REJECTED, 0x08C4, "Query Next Image Response Rejected" ) \ |
12864 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_REQUEST_GENERATED, 0x08C5, "Image Block Request Generated" ) \ |
12865 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_PAGE_REQUEST_GENERATED, 0x08C6, "Image Page Request Generated" ) \ |
12866 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_RESPONSE_RECEIVED, 0x08C7, "Image Block Response Received" ) \ |
12867 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_IMAGE_BLOCK_RESPONSE_REJECTED, 0x08C8, "Image Block Response Rejected" ) \ |
12868 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_REQUEST_GENERATED, 0x08C9, "Upgrade End Request Generated" ) \ |
12869 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_RESPONSE_RECEIVED, 0x08CA, "Upgrade End Response Received" ) \ |
12870 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_UPGRADE_END_RESPONSE_REJECTED, 0x08CB, "Upgrade End Response Rejected" ) \ |
12871 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_REQUEST_GENERATED, 0x08CC, "Query Specific File Request Generated" ) \ |
12872 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_RESPONSE_RECEIVED, 0x08CD, "Query Specific File Response Received" ) \ |
12873 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_QUERY_SPECIFIC_FILE_RESPONSE_REJECTED, 0x08CE, "Query Specific File Response Rejected" ) \ |
12874 | | XXX(ZBEE_ZCL_ATTR_ID_DEVICE_MANAGEMENT_CLNT_RESERVED_FOR_OTA_CLUSTER_GROUP_ID, 0x08FF, "Reserved For OTA Cluster Group ID" ) \ |
12875 | | /* Smart Energy */ \ |
12876 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT_CLNT, 0xFFFE, "Attribute Reporting Status" ) |
12877 | | |
12878 | | VALUE_STRING_ENUM(zbee_zcl_device_management_attr_client_names); |
12879 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_attr_client_names); |
12880 | | static value_string_ext zbee_zcl_device_management_attr_client_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_device_management_attr_client_names); |
12881 | | |
12882 | | /* Server Commands Received */ |
12883 | | #define zbee_zcl_device_management_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
12884 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_TENANCY, 0x00, "Get Change Of Tenancy" ) \ |
12885 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_SUPPLIER, 0x01, "Get Change Of Supplier" ) \ |
12886 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD, 0x02, "Request New Password" ) \ |
12887 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_SITE_ID, 0x03, "Get Site ID" ) \ |
12888 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REPORT_EVENT_CONFIGURATION, 0x04, "Report Event Configuration" ) \ |
12889 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CIN, 0x05, "Get CIN" ) |
12890 | | |
12891 | | VALUE_STRING_ENUM(zbee_zcl_device_management_srv_rx_cmd_names); |
12892 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_srv_rx_cmd_names); |
12893 | | |
12894 | | /* Server Commands Generated */ |
12895 | | #define zbee_zcl_device_management_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
12896 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_TENANCY, 0x00, "Publish Change Of Tenancy" ) \ |
12897 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_SUPPLIER, 0x01, "Publish Change Of Supplier" ) \ |
12898 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD_RESPONSE, 0x02, "Request New Password Response" ) \ |
12899 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_SITE_ID, 0x03, "Update Site ID" ) \ |
12900 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_SET_EVENT_CONFIGURATION, 0x04, "Set Event Configuration" ) \ |
12901 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_EVENT_CONFIGURATION, 0x05, "Get Event Configuration" ) \ |
12902 | | XXX(ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_CIN, 0x06, "Update CIN" ) |
12903 | | |
12904 | | VALUE_STRING_ENUM(zbee_zcl_device_management_srv_tx_cmd_names); |
12905 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_srv_tx_cmd_names); |
12906 | | |
12907 | | #define zbee_zcl_device_management_password_types_VALUE_STRING_LIST(XXX) \ |
12908 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_RESERVED, 0x00, "Reserved") \ |
12909 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_1, 0x01, "Password 1") \ |
12910 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_2, 0x02, "Password 2") \ |
12911 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_3, 0x03, "Password 3") \ |
12912 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_PASSWORD_TYPE_PASSWORD_4, 0x04, "Password 4") |
12913 | | |
12914 | | VALUE_STRING_ENUM(zbee_zcl_device_management_password_types); |
12915 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_password_types); |
12916 | | |
12917 | | #define zbee_zcl_device_management_event_configuration_log_types_VALUE_STRING_LIST(XXX) \ |
12918 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_DO_NOT_LOG, 0x0, "Do not Log") \ |
12919 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_TAMPER, 0x1, "Log as Tamper") \ |
12920 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_FAULT, 0x2, "Log as Fault") \ |
12921 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_GENERAL_EVENT, 0x3, "Log as General Event") \ |
12922 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_SECURITY_EVENT, 0x4, "Log as Security Event") \ |
12923 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_EVENT_CONFIGURATION_LOG_AS_NETWORK_EVENT, 0x5, "Log as Network Event") |
12924 | | |
12925 | | VALUE_STRING_ENUM(zbee_zcl_device_management_event_configuration_log_types); |
12926 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_event_configuration_log_types); |
12927 | | |
12928 | | #define zbee_zcl_device_management_contactor_states_VALUE_STRING_LIST(XXX) \ |
12929 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_OFF, 0x0, "Supply OFF") \ |
12930 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_OFF_ARMED, 0x1, "Supply OFF / ARMED") \ |
12931 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_ON, 0x2, "Supply ON") \ |
12932 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_SUPPLY_UNCHANGED, 0x3, "Supply UNCHANGED") |
12933 | | |
12934 | | VALUE_STRING_ENUM(zbee_zcl_device_management_contactor_states); |
12935 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_contactor_states); |
12936 | | |
12937 | | #define zbee_zcl_device_management_configuration_controls_VALUE_STRING_LIST(XXX) \ |
12938 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LIST, 0x00, "Apply by List") \ |
12939 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP, 0x01, "Apply by Event Group") \ |
12940 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE, 0x02, "Apply by Log Type") \ |
12941 | | XXX(ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH, 0x03, "Apply by Configuration Match") |
12942 | | |
12943 | | VALUE_STRING_ENUM(zbee_zcl_device_management_configuration_controls); |
12944 | | VALUE_STRING_ARRAY(zbee_zcl_device_management_configuration_controls); |
12945 | | |
12946 | | /*************************/ |
12947 | | /* Function Declarations */ |
12948 | | /*************************/ |
12949 | | void proto_register_zbee_zcl_device_management(void); |
12950 | | void proto_reg_handoff_zbee_zcl_device_management(void); |
12951 | | |
12952 | | /*************************/ |
12953 | | /* Global Variables */ |
12954 | | /*************************/ |
12955 | | |
12956 | | /* Initialize the protocol and registered fields */ |
12957 | | static int proto_zbee_zcl_device_management; |
12958 | | |
12959 | | static int hf_zbee_zcl_device_management_srv_tx_cmd_id; |
12960 | | static int hf_zbee_zcl_device_management_srv_rx_cmd_id; |
12961 | | static int hf_zbee_zcl_device_management_attr_server_id; |
12962 | | static int hf_zbee_zcl_device_management_attr_client_id; |
12963 | | static int hf_zbee_zcl_device_management_attr_reporting_status; |
12964 | | static int hf_zbee_zcl_device_management_password_type; |
12965 | | static int hf_zbee_zcl_device_management_command_index; |
12966 | | static int hf_zbee_zcl_device_management_total_commands; |
12967 | | static int hf_zbee_zcl_device_management_event_id; |
12968 | | static int hf_zbee_zcl_device_management_event_configuration; |
12969 | | static int hf_zbee_zcl_device_management_event_configuration_logging; |
12970 | | static int hf_zbee_zcl_device_management_event_configuration_push_event_to_wan; |
12971 | | static int hf_zbee_zcl_device_management_event_configuration_push_event_to_han; |
12972 | | static int hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee; |
12973 | | static int hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical; |
12974 | | static int hf_zbee_zcl_device_management_event_configuration_reserved; |
12975 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id; |
12976 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id; |
12977 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type; |
12978 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_implementation_date; |
12979 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control; |
12980 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot; |
12981 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot; |
12982 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register; |
12983 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register; |
12984 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period; |
12985 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan; |
12986 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge; |
12987 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information; |
12988 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information; |
12989 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer; |
12990 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier; |
12991 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state; |
12992 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log; |
12993 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data; |
12994 | | static int hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved; |
12995 | | |
12996 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id; |
12997 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id; |
12998 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type; |
12999 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id; |
13000 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_implementation_time; |
13001 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control; |
13002 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_name; |
13003 | | static int hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_contact_details; |
13004 | | |
13005 | | static int hf_zbee_zcl_device_management_request_new_password_issuer_event_id; |
13006 | | static int hf_zbee_zcl_device_management_request_new_password_implementation_date; |
13007 | | static int hf_zbee_zcl_device_management_request_new_password_password; |
13008 | | static int hf_zbee_zcl_device_management_request_new_password_duration_in_minutes; |
13009 | | |
13010 | | static int hf_zbee_zcl_device_management_update_site_id_issuer_event_id; |
13011 | | static int hf_zbee_zcl_device_management_update_site_id_site_id_time; |
13012 | | static int hf_zbee_zcl_device_management_update_site_id_provider_id; |
13013 | | static int hf_zbee_zcl_device_management_update_site_id_site_id; |
13014 | | |
13015 | | static int hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id; |
13016 | | static int hf_zbee_zcl_device_management_set_event_configuration_start_time; |
13017 | | static int hf_zbee_zcl_device_management_set_event_configuration_configuration_control; |
13018 | | static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events; |
13019 | | static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id; |
13020 | | static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id; |
13021 | | static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id; |
13022 | | static int hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_configuration_value_match; |
13023 | | |
13024 | | static int hf_zbee_zcl_device_management_get_event_configuration_event_id; |
13025 | | |
13026 | | static int hf_zbee_zcl_device_management_update_cin_issuer_event_id; |
13027 | | static int hf_zbee_zcl_device_management_update_cin_cin_implementation_time; |
13028 | | static int hf_zbee_zcl_device_management_update_cin_provider_id; |
13029 | | static int hf_zbee_zcl_device_management_update_cin_customerid_number; |
13030 | | |
13031 | | static int* const hf_zbee_zcl_device_management_event_configuration_flags[] = { |
13032 | | &hf_zbee_zcl_device_management_event_configuration_logging, |
13033 | | &hf_zbee_zcl_device_management_event_configuration_push_event_to_wan, |
13034 | | &hf_zbee_zcl_device_management_event_configuration_push_event_to_han, |
13035 | | &hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee, |
13036 | | &hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical, |
13037 | | &hf_zbee_zcl_device_management_event_configuration_reserved, |
13038 | | NULL |
13039 | | }; |
13040 | | |
13041 | | static int* const hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_flags[] = { |
13042 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot, |
13043 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot, |
13044 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register, |
13045 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register, |
13046 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period, |
13047 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan, |
13048 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge, |
13049 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information, |
13050 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information, |
13051 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer, |
13052 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier, |
13053 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state, |
13054 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log, |
13055 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data, |
13056 | | &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved, |
13057 | | NULL |
13058 | | }; |
13059 | | |
13060 | | /* Initialize the subtree pointers */ |
13061 | | static int ett_zbee_zcl_device_management; |
13062 | | static int ett_zbee_zcl_device_management_event_configuration_payload; |
13063 | | static int ett_zbee_zcl_device_management_event_configuration; |
13064 | | static int ett_zbee_zcl_device_management_proposed_tenancy_change_control; |
13065 | | |
13066 | | /*************************/ |
13067 | | /* Function Bodies */ |
13068 | | /*************************/ |
13069 | | |
13070 | | /** |
13071 | | *This function is called by ZCL foundation dissector in order to decode |
13072 | | * |
13073 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13074 | | *@param tvb pointer to buffer containing raw packet. |
13075 | | *@param offset pointer to buffer offset |
13076 | | *@param attr_id attribute identifier |
13077 | | *@param data_type attribute data type |
13078 | | *@param client_attr ZCL client |
13079 | | */ |
13080 | | static void |
13081 | | dissect_zcl_device_management_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
13082 | 41 | { |
13083 | 41 | switch (attr_id) { |
13084 | | /* applies to all SE clusters */ |
13085 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_DEVICE_MANAGEMENT: |
13086 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
13087 | 0 | *offset += 1; |
13088 | 0 | break; |
13089 | | |
13090 | 41 | default: /* Catch all */ |
13091 | 41 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
13092 | 41 | break; |
13093 | 41 | } |
13094 | 41 | } /*dissect_zcl_device_management_attr_data*/ |
13095 | | |
13096 | | /** |
13097 | | *This function is called by ZCL foundation dissector in order to decode |
13098 | | * |
13099 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13100 | | *@param tvb pointer to buffer containing raw packet. |
13101 | | *@param offset pointer to buffer offset |
13102 | | */ |
13103 | | static void |
13104 | | dissect_zcl_device_management_request_new_password(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13105 | 0 | { |
13106 | | /* Password Type */ |
13107 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_password_type, tvb, *offset, 1, ENC_NA); |
13108 | 0 | *offset += 1; |
13109 | 0 | } |
13110 | | |
13111 | | /** |
13112 | | *This function is called by ZCL foundation dissector in order to decode |
13113 | | * |
13114 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13115 | | *@param tvb pointer to buffer containing raw packet. |
13116 | | *@param offset pointer to buffer offset |
13117 | | */ |
13118 | | static void |
13119 | | dissect_zcl_device_management_report_event_configuration(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13120 | 0 | { |
13121 | 0 | proto_tree *event_configuration_payload; |
13122 | 0 | unsigned rem_len; |
13123 | | |
13124 | | /* Command Index */ |
13125 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_command_index, tvb, *offset, 1, ENC_NA); |
13126 | 0 | *offset += 1; |
13127 | | |
13128 | | /* Total Commands */ |
13129 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_total_commands, tvb, *offset, 1, ENC_NA); |
13130 | 0 | *offset += 1; |
13131 | |
|
13132 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
13133 | | /* Event Configuration Payload */ |
13134 | 0 | event_configuration_payload = proto_tree_add_subtree(tree, tvb, *offset, rem_len, ett_zbee_zcl_device_management_event_configuration_payload, NULL, "Event Configuration Payload"); |
13135 | |
|
13136 | 0 | while(tvb_reported_length_remaining(tvb, *offset) > 2) { |
13137 | | /* Event ID */ |
13138 | 0 | proto_tree_add_item(event_configuration_payload, hf_zbee_zcl_device_management_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
13139 | 0 | *offset += 2; |
13140 | | |
13141 | | /* Event Configuration */ |
13142 | 0 | proto_tree_add_bitmask(event_configuration_payload, tvb, *offset, hf_zbee_zcl_device_management_event_configuration, |
13143 | 0 | ett_zbee_zcl_device_management_event_configuration, hf_zbee_zcl_device_management_event_configuration_flags, ENC_NA); |
13144 | 0 | *offset += 1; |
13145 | 0 | } |
13146 | 0 | } |
13147 | | |
13148 | | /** |
13149 | | *This function is called by ZCL foundation dissector in order to decode |
13150 | | * |
13151 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13152 | | *@param tvb pointer to buffer containing raw packet. |
13153 | | *@param offset pointer to buffer offset |
13154 | | */ |
13155 | | static void |
13156 | | dissect_zcl_device_management_publish_change_of_tenancy(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13157 | 0 | { |
13158 | | /* Provider ID */ |
13159 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13160 | 0 | *offset += 4; |
13161 | | |
13162 | | /* Issuer Event ID */ |
13163 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13164 | 0 | *offset += 4; |
13165 | | |
13166 | | /* Tariff Type */ |
13167 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type, tvb, *offset, 1, ENC_NA); |
13168 | 0 | *offset += 1; |
13169 | | |
13170 | | /* Implementation Date/Time */ |
13171 | 0 | 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); |
13172 | 0 | *offset += 4; |
13173 | | |
13174 | | /* Proposed Tenancy Change Control */ |
13175 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control, |
13176 | 0 | 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); |
13177 | 0 | *offset += 4; |
13178 | |
|
13179 | 0 | } /*dissect_zcl_device_management_publish_change_of_tenancy*/ |
13180 | | |
13181 | | /** |
13182 | | *This function is called by ZCL foundation dissector in order to decode |
13183 | | * |
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 |
13187 | | */ |
13188 | | static void |
13189 | | dissect_zcl_device_management_publish_change_of_supplier(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13190 | 0 | { |
13191 | 0 | int name_length; |
13192 | 0 | int detail_length; |
13193 | | |
13194 | | /* Current Provider ID */ |
13195 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13196 | 0 | *offset += 4; |
13197 | | |
13198 | | /* Issuer Event ID */ |
13199 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13200 | 0 | *offset += 4; |
13201 | | |
13202 | | /* Tariff Type */ |
13203 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type, tvb, *offset, 1, ENC_NA); |
13204 | 0 | *offset += 1; |
13205 | | |
13206 | | /* Proposed Provider ID */ |
13207 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13208 | 0 | *offset += 4; |
13209 | | |
13210 | | /* Provider Change Implementation Time */ |
13211 | 0 | 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); |
13212 | 0 | *offset += 4; |
13213 | | |
13214 | | /* Provider Change Control */ |
13215 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13216 | 0 | *offset += 4; |
13217 | | |
13218 | | /* Proposed Provider Name */ |
13219 | 0 | 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); |
13220 | 0 | *offset += name_length; |
13221 | | |
13222 | | /* Proposed Provider Contact Details */ |
13223 | 0 | 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); |
13224 | 0 | *offset += detail_length; |
13225 | |
|
13226 | 0 | } /*dissect_zcl_device_management_publish_change_of_supplier*/ |
13227 | | |
13228 | | /** |
13229 | | *This function is called by ZCL foundation dissector in order to decode |
13230 | | * |
13231 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13232 | | *@param tvb pointer to buffer containing raw packet. |
13233 | | *@param offset pointer to buffer offset |
13234 | | */ |
13235 | | static void |
13236 | | dissect_zcl_device_management_request_new_password_response(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13237 | 0 | { |
13238 | 0 | int password_length; |
13239 | | |
13240 | | /* Issuer Event ID */ |
13241 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_request_new_password_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13242 | 0 | *offset += 4; |
13243 | | |
13244 | | /* Implementation Date/Time */ |
13245 | 0 | 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); |
13246 | 0 | *offset += 4; |
13247 | | |
13248 | | /* Duration in minutes */ |
13249 | | /* TODO: if really big endian, should use ENC_BIG_ENDIAN.. */ |
13250 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_request_new_password_duration_in_minutes, tvb, *offset, 2, ENC_BIG_ENDIAN); |
13251 | 0 | *offset += 2; |
13252 | | |
13253 | | /* Password Type */ |
13254 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_password_type, tvb, *offset, 1, ENC_NA); |
13255 | 0 | *offset += 1; |
13256 | | |
13257 | | /* Password */ |
13258 | 0 | 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); |
13259 | 0 | *offset += password_length; |
13260 | |
|
13261 | 0 | } /*dissect_zcl_device_management_request_new_password_response*/ |
13262 | | |
13263 | | /** |
13264 | | *This function is called by ZCL foundation dissector in order to decode |
13265 | | * |
13266 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13267 | | *@param tvb pointer to buffer containing raw packet. |
13268 | | *@param offset pointer to buffer offset |
13269 | | */ |
13270 | | static void |
13271 | | dissect_zcl_device_management_update_site_id(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13272 | 0 | { |
13273 | 0 | int siteid_length; |
13274 | | |
13275 | | /* Issuer Event ID */ |
13276 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_update_site_id_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13277 | 0 | *offset += 4; |
13278 | | |
13279 | | /* SiteID Time */ |
13280 | 0 | 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); |
13281 | 0 | *offset += 4; |
13282 | | |
13283 | | /* Provider ID */ |
13284 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_update_site_id_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13285 | 0 | *offset += 4; |
13286 | | |
13287 | | /* SiteID */ |
13288 | 0 | 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); |
13289 | 0 | *offset += siteid_length; |
13290 | |
|
13291 | 0 | } /*dissect_zcl_device_management_update_site_id*/ |
13292 | | |
13293 | | /** |
13294 | | *This function is called by ZCL foundation dissector in order to decode |
13295 | | * |
13296 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13297 | | *@param tvb pointer to buffer containing raw packet. |
13298 | | *@param offset pointer to buffer offset |
13299 | | */ |
13300 | | static void |
13301 | | dissect_zcl_device_management_set_event_configuration(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13302 | 0 | { |
13303 | 0 | uint8_t config_control; |
13304 | 0 | uint8_t number_of_events; |
13305 | | |
13306 | | /* Issuer Event ID */ |
13307 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13308 | 0 | *offset += 4; |
13309 | | |
13310 | | /* Start Date/Time */ |
13311 | 0 | 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); |
13312 | 0 | *offset += 4; |
13313 | | |
13314 | | /* Event Configuration */ |
13315 | 0 | proto_tree_add_bitmask(tree, tvb, *offset, hf_zbee_zcl_device_management_event_configuration, |
13316 | 0 | ett_zbee_zcl_device_management_event_configuration, hf_zbee_zcl_device_management_event_configuration_flags, ENC_NA); |
13317 | 0 | *offset += 1; |
13318 | | |
13319 | | /* Configuration Control */ |
13320 | 0 | config_control = tvb_get_uint8(tvb, *offset); |
13321 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_set_event_configuration_configuration_control, tvb, *offset, 1, ENC_NA); |
13322 | 0 | *offset += 1; |
13323 | | |
13324 | | /* Event Configuration Payload */ |
13325 | 0 | switch (config_control) { |
13326 | 0 | case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LIST: |
13327 | | /* Number of Events */ |
13328 | 0 | proto_tree_add_item_ret_uint8(tree, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events, tvb, *offset, 1, ENC_NA, &number_of_events); |
13329 | 0 | *offset += 1; |
13330 | | |
13331 | | /* Event IDs */ |
13332 | 0 | for (unsigned i = 0; tvb_reported_length_remaining(tvb, *offset) > 0 && i < number_of_events; i++) { |
13333 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
13334 | 0 | *offset += 2; |
13335 | 0 | } |
13336 | 0 | break; |
13337 | 0 | case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP: |
13338 | | /* Event Group ID */ |
13339 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
13340 | 0 | *offset += 2; |
13341 | 0 | break; |
13342 | 0 | case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE: |
13343 | | /* Log ID */ |
13344 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id, tvb, *offset, 1, ENC_LITTLE_ENDIAN); |
13345 | 0 | *offset += 1; |
13346 | 0 | break; |
13347 | 0 | case ZBEE_ZCL_DEVICE_MANAGEMENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH: |
13348 | | /* Configuration Value Match */ |
13349 | 0 | 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); |
13350 | 0 | *offset += 1; |
13351 | 0 | break; |
13352 | 0 | } |
13353 | 0 | } /*dissect_zcl_device_management_set_event_configuration*/ |
13354 | | |
13355 | | /** |
13356 | | *This function is called by ZCL foundation dissector in order to decode |
13357 | | * |
13358 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13359 | | *@param tvb pointer to buffer containing raw packet. |
13360 | | *@param offset pointer to buffer offset |
13361 | | */ |
13362 | | static void |
13363 | | dissect_zcl_device_management_get_event_configuration(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13364 | 0 | { |
13365 | | /* Event ID */ |
13366 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_get_event_configuration_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
13367 | 0 | *offset += 2; |
13368 | 0 | } /*dissect_zcl_device_management_get_event_configuration*/ |
13369 | | |
13370 | | /** |
13371 | | *This function is called by ZCL foundation dissector in order to decode |
13372 | | * |
13373 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13374 | | *@param tvb pointer to buffer containing raw packet. |
13375 | | *@param offset pointer to buffer offset |
13376 | | */ |
13377 | | static void |
13378 | | dissect_zcl_device_management_update_cin(proto_tree *tree, tvbuff_t *tvb, unsigned *offset) |
13379 | 0 | { |
13380 | 0 | int customer_id_length; |
13381 | | |
13382 | | /* Issuer Event ID */ |
13383 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_update_cin_issuer_event_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13384 | 0 | *offset += 4; |
13385 | | |
13386 | | /* CIN Implementation Time */ |
13387 | 0 | 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); |
13388 | 0 | *offset += 4; |
13389 | | |
13390 | | /* Provider ID */ |
13391 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_device_management_update_cin_provider_id, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
13392 | 0 | *offset += 4; |
13393 | | |
13394 | | /* CustomerID Number */ |
13395 | 0 | 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); |
13396 | 0 | *offset += customer_id_length; |
13397 | 0 | } /*dissect_zcl_device_management_update_cin*/ |
13398 | | |
13399 | | /** |
13400 | | *ZigBee ZCL Device Management cluster dissector for wireshark. |
13401 | | * |
13402 | | *@param tvb pointer to buffer containing raw packet. |
13403 | | *@param pinfo pointer to packet information fields |
13404 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13405 | | */ |
13406 | | static int |
13407 | | dissect_zbee_zcl_device_management(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
13408 | 1 | { |
13409 | 1 | zbee_zcl_packet *zcl; |
13410 | 1 | proto_tree *payload_tree; |
13411 | 1 | unsigned offset = 0; |
13412 | 1 | uint8_t cmd_id; |
13413 | 1 | int rem_len; |
13414 | | |
13415 | | /* Reject the packet if data is NULL */ |
13416 | 1 | if (data == NULL) |
13417 | 0 | return 0; |
13418 | 1 | zcl = (zbee_zcl_packet *)data; |
13419 | 1 | cmd_id = zcl->cmd_id; |
13420 | | |
13421 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
13422 | 1 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
13423 | | /* Append the command name to the info column. */ |
13424 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
13425 | 0 | val_to_str_const(cmd_id, zbee_zcl_device_management_srv_rx_cmd_names, "Unknown Command"), |
13426 | 0 | zcl->tran_seqno); |
13427 | | |
13428 | | /* Add the command ID. */ |
13429 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_device_management_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
13430 | | |
13431 | | /* Check is this command has a payload, than add the payload tree */ |
13432 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
13433 | 0 | if (rem_len > 0) { |
13434 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_device_management, NULL, "Payload"); |
13435 | | /* Call the appropriate command dissector */ |
13436 | 0 | switch (cmd_id) { |
13437 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_TENANCY: |
13438 | | /* No Payload */ |
13439 | 0 | break; |
13440 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CHANGE_OF_SUPPLIER: |
13441 | | /* No Payload */ |
13442 | 0 | break; |
13443 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD: |
13444 | 0 | dissect_zcl_device_management_request_new_password(payload_tree, tvb, &offset); |
13445 | 0 | break; |
13446 | | |
13447 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_SITE_ID: |
13448 | | /* No Payload */ |
13449 | 0 | break; |
13450 | | |
13451 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REPORT_EVENT_CONFIGURATION: |
13452 | 0 | dissect_zcl_device_management_report_event_configuration(payload_tree, tvb, &offset); |
13453 | 0 | break; |
13454 | | |
13455 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_CIN: |
13456 | | /* No Payload */ |
13457 | 0 | break; |
13458 | | |
13459 | 0 | default: |
13460 | 0 | break; |
13461 | 0 | } |
13462 | 0 | } |
13463 | 0 | } |
13464 | 1 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
13465 | | /* Append the command name to the info column. */ |
13466 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
13467 | 1 | val_to_str_const(cmd_id, zbee_zcl_device_management_srv_tx_cmd_names, "Unknown Command"), |
13468 | 1 | zcl->tran_seqno); |
13469 | | |
13470 | | /* Add the command ID. */ |
13471 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_device_management_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
13472 | | |
13473 | | /* Check is this command has a payload, than add the payload tree */ |
13474 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
13475 | 1 | if (rem_len > 0) { |
13476 | 1 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_device_management, NULL, "Payload"); |
13477 | | |
13478 | | /* Call the appropriate command dissector */ |
13479 | 1 | switch (cmd_id) { |
13480 | | |
13481 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_TENANCY: |
13482 | 0 | dissect_zcl_device_management_publish_change_of_tenancy(payload_tree, tvb, &offset); |
13483 | 0 | break; |
13484 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_PUBLISH_CHANGE_OF_SUPPLIER: |
13485 | 0 | dissect_zcl_device_management_publish_change_of_supplier(payload_tree, tvb, &offset); |
13486 | 0 | break; |
13487 | | |
13488 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_REQUEST_NEW_PASSWORD_RESPONSE: |
13489 | 0 | dissect_zcl_device_management_request_new_password_response(payload_tree, tvb, &offset); |
13490 | 0 | break; |
13491 | | |
13492 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_SITE_ID: |
13493 | 0 | dissect_zcl_device_management_update_site_id(payload_tree, tvb, &offset); |
13494 | 0 | break; |
13495 | | |
13496 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_SET_EVENT_CONFIGURATION: |
13497 | 0 | dissect_zcl_device_management_set_event_configuration(payload_tree, tvb, &offset); |
13498 | 0 | break; |
13499 | | |
13500 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_GET_EVENT_CONFIGURATION: |
13501 | 0 | dissect_zcl_device_management_get_event_configuration(payload_tree, tvb, &offset); |
13502 | 0 | break; |
13503 | | |
13504 | 0 | case ZBEE_ZCL_CMD_ID_DEVICE_MANAGEMENT_UPDATE_CIN: |
13505 | 0 | dissect_zcl_device_management_update_cin(payload_tree, tvb, &offset); |
13506 | 0 | break; |
13507 | | |
13508 | 1 | default: |
13509 | 1 | break; |
13510 | 1 | } |
13511 | 1 | } |
13512 | 1 | } |
13513 | | |
13514 | 1 | return tvb_captured_length(tvb); |
13515 | 1 | } /*dissect_zbee_zcl_device_management*/ |
13516 | | |
13517 | | /** |
13518 | | *This function registers the ZCL Device Management dissector |
13519 | | * |
13520 | | */ |
13521 | | void |
13522 | | proto_register_zbee_zcl_device_management(void) |
13523 | 15 | { |
13524 | 15 | static hf_register_info hf[] = { |
13525 | | |
13526 | 15 | { &hf_zbee_zcl_device_management_attr_server_id, |
13527 | 15 | { "Attribute", "zbee_zcl_se.device_management.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_device_management_attr_server_names), |
13528 | 15 | 0x0, NULL, HFILL } }, |
13529 | | |
13530 | 15 | { &hf_zbee_zcl_device_management_attr_client_id, |
13531 | 15 | { "Attribute", "zbee_zcl_se.device_management.attr_client_id", FT_UINT16, BASE_HEX | BASE_EXT_STRING, &zbee_zcl_device_management_attr_client_names_ext, |
13532 | 15 | 0x0, NULL, HFILL } }, |
13533 | | |
13534 | 15 | { &hf_zbee_zcl_device_management_attr_reporting_status, /* common to all SE clusters */ |
13535 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.device_management.attr.attr_reporting_status", |
13536 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
13537 | | |
13538 | 15 | { &hf_zbee_zcl_device_management_srv_tx_cmd_id, |
13539 | 15 | { "Command", "zbee_zcl_se.device_management.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_device_management_srv_tx_cmd_names), |
13540 | 15 | 0x00, NULL, HFILL } }, |
13541 | | |
13542 | 15 | { &hf_zbee_zcl_device_management_srv_rx_cmd_id, |
13543 | 15 | { "Command", "zbee_zcl_se.device_management.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_device_management_srv_rx_cmd_names), |
13544 | 15 | 0x00, NULL, HFILL } }, |
13545 | | |
13546 | 15 | { &hf_zbee_zcl_device_management_password_type, |
13547 | 15 | { "Password Type", "zbee_zcl_se.device_management.password_type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_device_management_password_types), |
13548 | 15 | 0x00, NULL, HFILL } }, |
13549 | | |
13550 | 15 | { &hf_zbee_zcl_device_management_command_index, |
13551 | 15 | { "Command Index", "zbee_zcl_se.device_management.command_index", FT_UINT8, BASE_HEX, NULL, |
13552 | 15 | 0x00, NULL, HFILL } }, |
13553 | | |
13554 | 15 | { &hf_zbee_zcl_device_management_total_commands, |
13555 | 15 | { "Total Commands", "zbee_zcl_se.device_management.total_commands", FT_UINT8, BASE_HEX, NULL, |
13556 | 15 | 0x00, NULL, HFILL } }, |
13557 | | |
13558 | 15 | { &hf_zbee_zcl_device_management_event_id, |
13559 | 15 | { "Event ID", "zbee_zcl_se.device_management.event_id", FT_UINT16, BASE_HEX, NULL, |
13560 | 15 | 0x00, NULL, HFILL } }, |
13561 | | |
13562 | 15 | { &hf_zbee_zcl_device_management_event_configuration, |
13563 | 15 | { "Event Configuration", "zbee_zcl_se.device_management.event_configuration", FT_UINT8, BASE_HEX, NULL, |
13564 | 15 | 0x00, NULL, HFILL } }, |
13565 | | |
13566 | 15 | { &hf_zbee_zcl_device_management_event_configuration_logging, |
13567 | 15 | { "Logging", "zbee_zcl_se.device_management.event_configuration.logging", FT_UINT8, BASE_HEX, VALS(zbee_zcl_device_management_event_configuration_log_types), |
13568 | 15 | 0x07, NULL, HFILL } }, |
13569 | | |
13570 | 15 | { &hf_zbee_zcl_device_management_event_configuration_push_event_to_wan, |
13571 | 15 | { "Push Event to WAN", "zbee_zcl_se.device_management.event_configuration.push_event_to_wan", FT_BOOLEAN, 8, NULL, |
13572 | 15 | 0x08, NULL, HFILL } }, |
13573 | | |
13574 | 15 | { &hf_zbee_zcl_device_management_event_configuration_push_event_to_han, |
13575 | 15 | { "Push Event to HAN", "zbee_zcl_se.device_management.event_configuration.push_event_to_han", FT_BOOLEAN, 8, NULL, |
13576 | 15 | 0x10, NULL, HFILL } }, |
13577 | | |
13578 | 15 | { &hf_zbee_zcl_device_management_event_configuration_raise_alarm_zigbee, |
13579 | 15 | { "Raise Alarm (Zigbee)", "zbee_zcl_se.device_management.event_configuration.raise_alarm_zigbee", FT_BOOLEAN, 8, NULL, |
13580 | 15 | 0x20, NULL, HFILL } }, |
13581 | | |
13582 | 15 | { &hf_zbee_zcl_device_management_event_configuration_raise_alarm_physical, |
13583 | 15 | { "Raise Alarm (Physical)", "zbee_zcl_se.device_management.event_configuration.raise_alarm_physical", FT_BOOLEAN, 8, NULL, |
13584 | 15 | 0x40, NULL, HFILL } }, |
13585 | | |
13586 | 15 | { &hf_zbee_zcl_device_management_event_configuration_reserved, |
13587 | 15 | { "Reserved", "zbee_zcl_se.device_management.event_configuration.reserved", FT_UINT8, BASE_HEX, NULL, |
13588 | 15 | 0x80, NULL, HFILL } }, |
13589 | | |
13590 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_provider_id, |
13591 | 15 | { "Provider ID", "zbee_zcl_se.device_management.publish_change_of_tenancy.provider_id", FT_UINT32, BASE_HEX, NULL, |
13592 | 15 | 0x0, NULL, HFILL } }, |
13593 | | |
13594 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_issuer_event_id, |
13595 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.publish_change_of_tenancy.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13596 | 15 | 0x0, NULL, HFILL } }, |
13597 | | |
13598 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_tariff_type, |
13599 | 15 | { "Tariff Type", "zbee_zcl_se.device_management.publish_change_of_tenancy.tariff_type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_type_names), |
13600 | 15 | 0x0, NULL, HFILL } }, |
13601 | | |
13602 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_implementation_date, |
13603 | 15 | { "Implementation Date/Time", "zbee_zcl_se.device_management.publish_change_of_tenancy.implementation_date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
13604 | 15 | 0x0, NULL, HFILL } }, |
13605 | | |
13606 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control, |
13607 | 15 | { "Proposed Tenancy Change Control", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control", FT_UINT32, BASE_HEX, NULL, |
13608 | 15 | 0x0, NULL, HFILL } }, |
13609 | | |
13610 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_pre_snapshot, |
13611 | 15 | { "Pre Snapshots", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.pre_snapshot", FT_BOOLEAN, 32, NULL, |
13612 | 15 | 0x00000001, NULL, HFILL } }, |
13613 | | |
13614 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_post_snapshot, |
13615 | 15 | { "Post Snapshots", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.post_snapshot", FT_BOOLEAN, 32, NULL, |
13616 | 15 | 0x00000002, NULL, HFILL } }, |
13617 | | |
13618 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_credit_register, |
13619 | 15 | { "Reset Credit Register", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_credit_register", FT_BOOLEAN, 32, NULL, |
13620 | 15 | 0x00000004, NULL, HFILL } }, |
13621 | | |
13622 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_debit_register, |
13623 | 15 | { "Reset Debit Register", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_debit_register", FT_BOOLEAN, 32, NULL, |
13624 | 15 | 0x00000008, NULL, HFILL } }, |
13625 | | |
13626 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reset_billing_period, |
13627 | 15 | { "Reset Billing Period", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reset_billing_period", FT_BOOLEAN, 32, NULL, |
13628 | 15 | 0x00000010, NULL, HFILL } }, |
13629 | | |
13630 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_tariff_plan, |
13631 | 15 | { "Clear Tariff Plan", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_tariff_plan", FT_BOOLEAN, 32, NULL, |
13632 | 15 | 0x00000020, NULL, HFILL } }, |
13633 | | |
13634 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_standing_charge, |
13635 | 15 | { "Clear Standing Charge", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_standing_charge", FT_BOOLEAN, 32, NULL, |
13636 | 15 | 0x00000040, NULL, HFILL } }, |
13637 | | |
13638 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_block_historical_load_profile_information, |
13639 | 15 | { "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, |
13640 | 15 | 0x00000080, NULL, HFILL } }, |
13641 | | |
13642 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_historical_load_profile_information, |
13643 | 15 | { "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, |
13644 | 15 | 0x00000100, NULL, HFILL } }, |
13645 | | |
13646 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_consumer, |
13647 | 15 | { "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, |
13648 | 15 | 0x00000200, NULL, HFILL } }, |
13649 | | |
13650 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_ihd_data_supplier, |
13651 | 15 | { "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, |
13652 | 15 | 0x00000400, NULL, HFILL } }, |
13653 | | |
13654 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_meter_contactor_state, |
13655 | 15 | { "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), |
13656 | 15 | 0x00001800, NULL, HFILL } }, |
13657 | | |
13658 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_transaction_log, |
13659 | 15 | { "Clear Transaction Log", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_transaction_log", FT_BOOLEAN, 32, NULL, |
13660 | 15 | 0x00002000, NULL, HFILL } }, |
13661 | | |
13662 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_clear_prepayment_data, |
13663 | 15 | { "Clear Prepayment Data", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.clear_prepayment_data", FT_BOOLEAN, 32, NULL, |
13664 | 15 | 0x00004000, NULL, HFILL } }, |
13665 | | |
13666 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_tenancy_proposed_tenancy_change_control_reserved, |
13667 | 15 | { "Reserved", "zbee_zcl_se.device_management.publish_change_of_tenancy.proposed_tenancy_change_control.reserved", FT_UINT32, BASE_HEX, NULL, |
13668 | 15 | 0xFFFF8000, NULL, HFILL } }, |
13669 | | |
13670 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_current_provider_id, |
13671 | 15 | { "Current Provider ID", "zbee_zcl_se.device_management.publish_change_of_supplier.current_provider_id", FT_UINT32, BASE_HEX, NULL, |
13672 | 15 | 0x0, NULL, HFILL } }, |
13673 | | |
13674 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_issuer_event_id, |
13675 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.publish_change_of_supplier.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13676 | 15 | 0x0, NULL, HFILL } }, |
13677 | | |
13678 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_tariff_type, |
13679 | 15 | { "Tariff Type", "zbee_zcl_se.device_management.publish_change_of_supplier.tariff_type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_price_tariff_type_names), |
13680 | 15 | 0x0, NULL, HFILL } }, |
13681 | | |
13682 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_proposed_provider_id, |
13683 | 15 | { "Proposed Provider ID", "zbee_zcl_se.device_management.publish_change_of_supplier.proposed_provider_id", FT_UINT32, BASE_HEX, NULL, |
13684 | 15 | 0x0, NULL, HFILL } }, |
13685 | | |
13686 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_implementation_time, |
13687 | 15 | { "Provider Change Implementation Time", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_change_implementation_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
13688 | 15 | 0x0, NULL, HFILL } }, |
13689 | | |
13690 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_change_control, |
13691 | 15 | { "Provider Change Control", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_change_control", FT_UINT32, BASE_HEX, NULL, |
13692 | 15 | 0x0, NULL, HFILL } }, |
13693 | | |
13694 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_name, |
13695 | 15 | { "Proposed Provider Name", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_proposed_provider_name", FT_UINT_STRING, BASE_NONE, NULL, |
13696 | 15 | 0x0, NULL, HFILL } }, |
13697 | | |
13698 | 15 | { &hf_zbee_zcl_device_management_publish_change_of_supplier_provider_proposed_provider_contact_details, |
13699 | 15 | { "Proposed Provider Contact Details", "zbee_zcl_se.device_management.publish_change_of_supplier.provider_proposed_provider_contact_details", FT_UINT_STRING, BASE_NONE, NULL, |
13700 | 15 | 0x0, NULL, HFILL } }, |
13701 | | |
13702 | 15 | { &hf_zbee_zcl_device_management_request_new_password_issuer_event_id, |
13703 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.request_new_password.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13704 | 15 | 0x0, NULL, HFILL } }, |
13705 | | |
13706 | 15 | { &hf_zbee_zcl_device_management_request_new_password_implementation_date, |
13707 | 15 | { "Implementation Date/Time", "zbee_zcl_se.device_management.request_new_password.implementation_date", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
13708 | 15 | 0x0, NULL, HFILL } }, |
13709 | | |
13710 | 15 | { &hf_zbee_zcl_device_management_request_new_password_duration_in_minutes, |
13711 | 15 | { "Duration in minutes", "zbee_zcl_se.device_management.request_new_password.duration_in_minutes", FT_UINT16, BASE_DEC, NULL, |
13712 | 15 | 0x0, NULL, HFILL } }, |
13713 | | |
13714 | 15 | { &hf_zbee_zcl_device_management_request_new_password_password, |
13715 | 15 | { "Password", "zbee_zcl_se.device_management.request_new_password.password", FT_UINT_STRING, BASE_NONE, NULL, |
13716 | 15 | 0x0, NULL, HFILL } }, |
13717 | | |
13718 | 15 | { &hf_zbee_zcl_device_management_update_site_id_issuer_event_id, |
13719 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.update_site_id.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13720 | 15 | 0x0, NULL, HFILL } }, |
13721 | | |
13722 | 15 | { &hf_zbee_zcl_device_management_update_site_id_site_id_time, |
13723 | 15 | { "SiteID Time", "zbee_zcl_se.device_management.update_site_id.site_id_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
13724 | 15 | 0x0, NULL, HFILL } }, |
13725 | | |
13726 | 15 | { &hf_zbee_zcl_device_management_update_site_id_provider_id, |
13727 | 15 | { "Provider ID", "zbee_zcl_se.device_management.update_site_id.provider_id", FT_UINT32, BASE_HEX, NULL, |
13728 | 15 | 0x0, NULL, HFILL } }, |
13729 | | |
13730 | 15 | { &hf_zbee_zcl_device_management_update_site_id_site_id, |
13731 | 15 | { "SiteID", "zbee_zcl_se.device_management.update_site_id.site_id", FT_UINT_STRING, BASE_NONE, NULL, |
13732 | 15 | 0x0, NULL, HFILL } }, |
13733 | | |
13734 | 15 | { &hf_zbee_zcl_device_management_get_event_configuration_event_id, |
13735 | 15 | { "Event ID", "zbee_zcl_se.device_management.get_event_configuration.event_id", FT_UINT16, BASE_HEX, NULL, |
13736 | 15 | 0x0, NULL, HFILL } }, |
13737 | | |
13738 | 15 | { &hf_zbee_zcl_device_management_update_cin_issuer_event_id, |
13739 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.update_cin.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13740 | 15 | 0x0, NULL, HFILL } }, |
13741 | | |
13742 | 15 | { &hf_zbee_zcl_device_management_update_cin_cin_implementation_time, |
13743 | 15 | { "CIN Implementation Time", "zbee_zcl_se.device_management.update_cin.cin_implementation_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, TIME_VALS(now_or_cancel_strings), |
13744 | 15 | 0x0, NULL, HFILL } }, |
13745 | | |
13746 | 15 | { &hf_zbee_zcl_device_management_update_cin_provider_id, |
13747 | 15 | { "Provider ID", "zbee_zcl_se.device_management.update_cin.provider_id", FT_UINT32, BASE_HEX, NULL, |
13748 | 15 | 0x0, NULL, HFILL } }, |
13749 | | |
13750 | 15 | { &hf_zbee_zcl_device_management_update_cin_customerid_number, |
13751 | 15 | { "CustomerID Number", "zbee_zcl_se.device_management.update_cin.customerid_number", FT_UINT_STRING, BASE_NONE, NULL, |
13752 | 15 | 0x0, NULL, HFILL } }, |
13753 | | |
13754 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_issuer_event_id, |
13755 | 15 | { "Issuer Event ID", "zbee_zcl_se.device_management.set_event_configuration.issuer_event_id", FT_UINT32, BASE_HEX, NULL, |
13756 | 15 | 0x0, NULL, HFILL } }, |
13757 | | |
13758 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_start_time, |
13759 | 15 | { "Start Date/Time", "zbee_zcl_se.device_management.set_event_configuration.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
13760 | 15 | 0x0, NULL, HFILL } }, |
13761 | | |
13762 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_configuration_control, |
13763 | 15 | { "Configuration Control", "zbee_zcl_se.device_management.set_event_configuration.configuration_control", FT_UINT8, BASE_HEX, VALS(zbee_zcl_device_management_configuration_controls), |
13764 | 15 | 0x0, NULL, HFILL } }, |
13765 | | |
13766 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_number_of_events, |
13767 | 15 | { "Number of Events", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.number_of_events", FT_UINT8, BASE_DEC, NULL, |
13768 | 15 | 0x0, NULL, HFILL } }, |
13769 | | |
13770 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_id, |
13771 | 15 | { "Event ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.event_id", FT_UINT16, BASE_DEC, NULL, |
13772 | 15 | 0x0, NULL, HFILL } }, |
13773 | | |
13774 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_group_id, |
13775 | 15 | { "Event Group ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.event_group_id", FT_UINT16, BASE_DEC, NULL, |
13776 | 15 | 0x0, NULL, HFILL } }, |
13777 | | |
13778 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_log_id, |
13779 | 15 | { "Log ID", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.log_id", FT_UINT8, BASE_DEC, NULL, |
13780 | 15 | 0x0, NULL, HFILL } }, |
13781 | | |
13782 | 15 | { &hf_zbee_zcl_device_management_set_event_configuration_event_configuration_event_configuration_value_match, |
13783 | 15 | { "Configuration Value Match", "zbee_zcl_se.device_management.set_event_configuration.event_configuration.configuration_value_match", FT_UINT8, BASE_DEC, NULL, |
13784 | 15 | 0x0, NULL, HFILL } }, |
13785 | | |
13786 | 15 | }; |
13787 | | |
13788 | | /* ZCL Device Management subtrees */ |
13789 | 15 | int *ett[] = { |
13790 | 15 | &ett_zbee_zcl_device_management, |
13791 | 15 | &ett_zbee_zcl_device_management_event_configuration_payload, |
13792 | 15 | &ett_zbee_zcl_device_management_event_configuration, |
13793 | 15 | &ett_zbee_zcl_device_management_proposed_tenancy_change_control |
13794 | 15 | }; |
13795 | | |
13796 | | /* Register the ZigBee ZCL Device Management cluster protocol name and description */ |
13797 | 15 | proto_zbee_zcl_device_management = proto_register_protocol("ZigBee ZCL Device Management", "ZCL Device Management", ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT); |
13798 | 15 | proto_register_field_array(proto_zbee_zcl_device_management, hf, array_length(hf)); |
13799 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
13800 | | |
13801 | | /* Register the ZigBee ZCL Device Management dissector. */ |
13802 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT, dissect_zbee_zcl_device_management, proto_zbee_zcl_device_management); |
13803 | 15 | } /*proto_register_zbee_zcl_device_management*/ |
13804 | | |
13805 | | /** |
13806 | | *Hands off the ZCL Device Management dissector. |
13807 | | * |
13808 | | */ |
13809 | | void |
13810 | | proto_reg_handoff_zbee_zcl_device_management(void) |
13811 | 15 | { |
13812 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_DEVICE_MANAGEMENT, |
13813 | 15 | proto_zbee_zcl_device_management, |
13814 | 15 | ett_zbee_zcl_device_management, |
13815 | 15 | ZBEE_ZCL_CID_DEVICE_MANAGEMENT, |
13816 | 15 | ZBEE_MFG_CODE_NONE, |
13817 | 15 | hf_zbee_zcl_device_management_attr_server_id, |
13818 | 15 | hf_zbee_zcl_device_management_attr_client_id, |
13819 | 15 | hf_zbee_zcl_device_management_srv_rx_cmd_id, |
13820 | 15 | hf_zbee_zcl_device_management_srv_tx_cmd_id, |
13821 | 15 | dissect_zcl_device_management_attr_data |
13822 | 15 | ); |
13823 | 15 | } /*proto_reg_handoff_zbee_zcl_device_management*/ |
13824 | | |
13825 | | |
13826 | | /* ########################################################################## */ |
13827 | | /* #### (0x0709) EVENTS CLUSTER ############################################# */ |
13828 | | /* ########################################################################## */ |
13829 | | |
13830 | | /* Attributes - None */ |
13831 | | |
13832 | | /* Server Commands Received */ |
13833 | | #define zbee_zcl_events_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
13834 | | XXX(ZBEE_ZCL_CMD_ID_EVENTS_GET_EVENT_LOG, 0x00, "Get Event Log" ) \ |
13835 | | XXX(ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_REQUEST, 0x01, "Clear Event Log Request" ) |
13836 | | |
13837 | | VALUE_STRING_ENUM(zbee_zcl_events_srv_rx_cmd_names); |
13838 | | VALUE_STRING_ARRAY(zbee_zcl_events_srv_rx_cmd_names); |
13839 | | |
13840 | | /* Server Commands Generated */ |
13841 | | #define zbee_zcl_events_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
13842 | | XXX(ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT, 0x00, "Publish Event" ) \ |
13843 | | XXX(ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT_LOG, 0x01, "Publish Event Log" ) \ |
13844 | | XXX(ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_RESPONSE, 0x02, "Clear Event Log Response" ) |
13845 | | |
13846 | | VALUE_STRING_ENUM(zbee_zcl_events_srv_tx_cmd_names); |
13847 | | VALUE_STRING_ARRAY(zbee_zcl_events_srv_tx_cmd_names); |
13848 | | |
13849 | | /*************************/ |
13850 | | /* Function Declarations */ |
13851 | | /*************************/ |
13852 | | void proto_register_zbee_zcl_events(void); |
13853 | | void proto_reg_handoff_zbee_zcl_events(void); |
13854 | | |
13855 | | /* Command Dissector Helpers */ |
13856 | | static void dissect_zcl_events_get_event_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
13857 | | static void dissect_zcl_events_clear_event_log_request (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
13858 | | static void dissect_zcl_events_publish_event (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
13859 | | static void dissect_zcl_events_publish_event_log (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
13860 | | static void dissect_zcl_events_clear_event_log_response (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
13861 | | |
13862 | | /*************************/ |
13863 | | /* Global Variables */ |
13864 | | /*************************/ |
13865 | | |
13866 | | /* Initialize the protocol and registered fields */ |
13867 | | static int proto_zbee_zcl_events; |
13868 | | |
13869 | | static int hf_zbee_zcl_events_srv_tx_cmd_id; |
13870 | | static int hf_zbee_zcl_events_srv_rx_cmd_id; |
13871 | | static int hf_zbee_zcl_events_get_event_log_event_control_log_id; |
13872 | | static int hf_zbee_zcl_events_get_event_log_event_id; |
13873 | | static int hf_zbee_zcl_events_get_event_log_start_time; |
13874 | | static int hf_zbee_zcl_events_get_event_log_end_time; |
13875 | | static int hf_zbee_zcl_events_get_event_log_number_of_events; |
13876 | | static int hf_zbee_zcl_events_get_event_log_event_offset; |
13877 | | static int hf_zbee_zcl_events_clear_event_log_request_log_id; |
13878 | | static int hf_zbee_zcl_events_publish_event_log_id; |
13879 | | static int hf_zbee_zcl_events_publish_event_event_id; |
13880 | | static int hf_zbee_zcl_events_publish_event_event_time; |
13881 | | static int hf_zbee_zcl_events_publish_event_event_control; |
13882 | | static int hf_zbee_zcl_events_publish_event_event_data; |
13883 | | static int hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events; |
13884 | | static int hf_zbee_zcl_events_publish_event_log_command_index; |
13885 | | static int hf_zbee_zcl_events_publish_event_log_total_commands; |
13886 | | static int hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control; |
13887 | | static int hf_zbee_zcl_events_publish_event_log_log_id; |
13888 | | static int hf_zbee_zcl_events_publish_event_log_event_id; |
13889 | | static int hf_zbee_zcl_events_publish_event_log_event_time; |
13890 | | static int hf_zbee_zcl_events_publish_event_log_event_data; |
13891 | | static int hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs; |
13892 | | |
13893 | | /* Initialize the subtree pointers */ |
13894 | 15 | #define ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT 1 |
13895 | 1.51k | #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 |
13896 | | #define ZBEE_ZCL_SE_EVENTS_NUM_TOTAL_ETT (ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT + ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT) |
13897 | | |
13898 | | static int ett_zbee_zcl_events; |
13899 | | static int ett_zbee_zcl_events_publish_event_log_entry[ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT]; |
13900 | | |
13901 | | /*************************/ |
13902 | | /* Function Bodies */ |
13903 | | /*************************/ |
13904 | | |
13905 | | /** |
13906 | | *ZigBee ZCL Events cluster dissector for wireshark. |
13907 | | * |
13908 | | *@param tvb pointer to buffer containing raw packet. |
13909 | | *@param pinfo pointer to packet information fields |
13910 | | *@param tree pointer to data tree Wireshark uses to display packet. |
13911 | | */ |
13912 | | static int |
13913 | | dissect_zbee_zcl_events(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
13914 | 0 | { |
13915 | 0 | proto_tree *payload_tree; |
13916 | 0 | zbee_zcl_packet *zcl; |
13917 | 0 | unsigned offset = 0; |
13918 | 0 | uint8_t cmd_id; |
13919 | 0 | int rem_len; |
13920 | | |
13921 | | /* Reject the packet if data is NULL */ |
13922 | 0 | if (data == NULL) |
13923 | 0 | return 0; |
13924 | 0 | zcl = (zbee_zcl_packet *)data; |
13925 | 0 | cmd_id = zcl->cmd_id; |
13926 | | |
13927 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
13928 | 0 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
13929 | | /* Append the command name to the info column. */ |
13930 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
13931 | 0 | val_to_str_const(cmd_id, zbee_zcl_events_srv_rx_cmd_names, "Unknown Command"), |
13932 | 0 | zcl->tran_seqno); |
13933 | | |
13934 | | /* Add the command ID. */ |
13935 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_events_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
13936 | | |
13937 | | /* Check is this command has a payload, than add the payload tree */ |
13938 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
13939 | 0 | if (rem_len > 0) { |
13940 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_events, NULL, "Payload"); |
13941 | | |
13942 | | /* Call the appropriate command dissector */ |
13943 | 0 | switch (cmd_id) { |
13944 | | |
13945 | 0 | case ZBEE_ZCL_CMD_ID_EVENTS_GET_EVENT_LOG: |
13946 | 0 | dissect_zcl_events_get_event_log(tvb, payload_tree, &offset); |
13947 | 0 | break; |
13948 | | |
13949 | 0 | case ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_REQUEST: |
13950 | 0 | dissect_zcl_events_clear_event_log_request(tvb, payload_tree, &offset); |
13951 | 0 | break; |
13952 | | |
13953 | 0 | default: |
13954 | 0 | break; |
13955 | 0 | } |
13956 | 0 | } |
13957 | 0 | } |
13958 | 0 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
13959 | | /* Append the command name to the info column. */ |
13960 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
13961 | 0 | val_to_str_const(cmd_id, zbee_zcl_events_srv_tx_cmd_names, "Unknown Command"), |
13962 | 0 | zcl->tran_seqno); |
13963 | | |
13964 | | /* Add the command ID. */ |
13965 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_events_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
13966 | | |
13967 | | /* Check is this command has a payload, than add the payload tree */ |
13968 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
13969 | 0 | if (rem_len > 0) { |
13970 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_events, NULL, "Payload"); |
13971 | | |
13972 | | /* Call the appropriate command dissector */ |
13973 | 0 | switch (cmd_id) { |
13974 | | |
13975 | 0 | case ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT: |
13976 | 0 | dissect_zcl_events_publish_event(tvb, payload_tree, &offset); |
13977 | 0 | break; |
13978 | | |
13979 | 0 | case ZBEE_ZCL_CMD_ID_EVENTS_PUBLISH_EVENT_LOG: |
13980 | 0 | dissect_zcl_events_publish_event_log(tvb, payload_tree, &offset); |
13981 | 0 | break; |
13982 | | |
13983 | 0 | case ZBEE_ZCL_CMD_ID_EVENTS_CLEAR_EVENT_LOG_RESPONSE: |
13984 | 0 | dissect_zcl_events_clear_event_log_response(tvb, payload_tree, &offset); |
13985 | 0 | break; |
13986 | | |
13987 | 0 | default: |
13988 | 0 | break; |
13989 | 0 | } |
13990 | 0 | } |
13991 | 0 | } |
13992 | | |
13993 | 0 | return tvb_captured_length(tvb); |
13994 | 0 | } /*dissect_zbee_zcl_events*/ |
13995 | | |
13996 | | /** |
13997 | | *This function manages the Get Event Log payload |
13998 | | * |
13999 | | *@param tvb pointer to buffer containing raw packet. |
14000 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14001 | | *@param offset pointer to offset from caller |
14002 | | */ |
14003 | | static void |
14004 | | dissect_zcl_events_get_event_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14005 | 0 | { |
14006 | | /* Event Control / Log ID */ |
14007 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_event_control_log_id, tvb, *offset, 1, ENC_NA); |
14008 | 0 | *offset += 1; |
14009 | | |
14010 | | /* Event ID */ |
14011 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
14012 | 0 | *offset += 2; |
14013 | | |
14014 | | /* Start Time */ |
14015 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_start_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
14016 | 0 | *offset += 4; |
14017 | | |
14018 | | /* End Time */ |
14019 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_end_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
14020 | 0 | *offset += 4; |
14021 | | |
14022 | | /* Number of Events */ |
14023 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_number_of_events, tvb, *offset, 1, ENC_NA); |
14024 | 0 | *offset += 1; |
14025 | | |
14026 | | /* Event Offset */ |
14027 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_get_event_log_event_offset, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
14028 | 0 | *offset += 2; |
14029 | 0 | } /*dissect_zcl_events_get_event_log*/ |
14030 | | |
14031 | | /** |
14032 | | *This function manages the Clear Event Log Request payload |
14033 | | * |
14034 | | *@param tvb pointer to buffer containing raw packet. |
14035 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14036 | | *@param offset pointer to offset from caller |
14037 | | */ |
14038 | | static void |
14039 | | dissect_zcl_events_clear_event_log_request(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14040 | 0 | { |
14041 | | /* Log ID */ |
14042 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_clear_event_log_request_log_id, tvb, *offset, 1, ENC_NA); |
14043 | 0 | *offset += 1; |
14044 | 0 | } /*dissect_zcl_events_clear_event_log_request*/ |
14045 | | |
14046 | | /** |
14047 | | *This function manages the Publish Event payload |
14048 | | * |
14049 | | *@param tvb pointer to buffer containing raw packet. |
14050 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14051 | | *@param offset pointer to offset from caller |
14052 | | */ |
14053 | | static void |
14054 | | dissect_zcl_events_publish_event(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14055 | 0 | { |
14056 | 0 | int length; |
14057 | |
|
14058 | 0 | if (gPREF_zbee_se_protocol_version >= ZBEE_SE_VERSION_1_2) { |
14059 | | /* Log ID - Introduced from ZCL version 1.2 */ |
14060 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_log_id, tvb, *offset, 1, ENC_NA); |
14061 | 0 | *offset += 1; |
14062 | 0 | } |
14063 | | |
14064 | | /* Event ID */ |
14065 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
14066 | 0 | *offset += 2; |
14067 | | |
14068 | | /* Event Time */ |
14069 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_event_time, tvb, *offset, 4, ENC_TIME_ZBEE_ZCL|ENC_LITTLE_ENDIAN); |
14070 | 0 | *offset += 4; |
14071 | | |
14072 | | /* Event Control */ |
14073 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_event_control, tvb, *offset, 1, ENC_NA); |
14074 | 0 | *offset += 1; |
14075 | | |
14076 | | /* Event Data */ |
14077 | 0 | proto_tree_add_item_ret_length(tree, hf_zbee_zcl_events_publish_event_event_data, tvb, *offset, 1, ENC_NA|ENC_ZIGBEE, &length); |
14078 | 0 | *offset += length; |
14079 | 0 | } /*dissect_zcl_events_publish_event*/ |
14080 | | |
14081 | | /** |
14082 | | *This function manages the Publish Event Log payload |
14083 | | * |
14084 | | *@param tvb pointer to buffer containing raw packet. |
14085 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14086 | | *@param offset pointer to offset from caller |
14087 | | */ |
14088 | | static void |
14089 | | dissect_zcl_events_publish_event_log(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14090 | 0 | { |
14091 | 0 | proto_tree* event_log_tree; |
14092 | 0 | int length; |
14093 | | |
14094 | | /* Total Number of Matching Events */ |
14095 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
14096 | 0 | *offset += 2; |
14097 | | |
14098 | | /* Command Index */ |
14099 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_log_command_index, tvb, *offset, 1, ENC_NA); |
14100 | 0 | *offset += 1; |
14101 | | |
14102 | | /* Total Commands */ |
14103 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_log_total_commands, tvb, *offset, 1, ENC_NA); |
14104 | 0 | *offset += 1; |
14105 | | |
14106 | | /* Number of Events / Log Payload Control */ |
14107 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control, tvb, *offset, 1, ENC_NA); |
14108 | 0 | *offset += 1; |
14109 | |
|
14110 | 0 | for (int i = 0; tvb_reported_length_remaining(tvb, *offset) > 0 && i < ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT; i++) { |
14111 | | /* Add subtree */ |
14112 | 0 | 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); |
14113 | |
|
14114 | 0 | if (gPREF_zbee_se_protocol_version >= ZBEE_SE_VERSION_1_2) { |
14115 | | /* Log ID - Introduced from ZCL version 1.2 */ |
14116 | 0 | proto_tree_add_item(event_log_tree, hf_zbee_zcl_events_publish_event_log_log_id, tvb, *offset, 1, ENC_NA); |
14117 | 0 | *offset += 1; |
14118 | 0 | } |
14119 | | |
14120 | | /* Event ID */ |
14121 | 0 | proto_item_append_text(event_log_tree, ", Event ID: 0x%04x", tvb_get_uint16(tvb, *offset, ENC_LITTLE_ENDIAN)); |
14122 | 0 | proto_tree_add_item(event_log_tree, hf_zbee_zcl_events_publish_event_log_event_id, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
14123 | 0 | *offset += 2; |
14124 | | |
14125 | | /* Event Time */ |
14126 | 0 | 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); |
14127 | 0 | *offset += 4; |
14128 | | |
14129 | | /* Event Data */ |
14130 | 0 | 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); |
14131 | 0 | *offset += length; |
14132 | | |
14133 | | /* Set length of subtree */ |
14134 | 0 | proto_item_set_end(proto_tree_get_parent(event_log_tree), tvb, *offset); |
14135 | 0 | } |
14136 | 0 | } /*dissect_zcl_events_publish_event_log*/ |
14137 | | |
14138 | | /** |
14139 | | *This function manages the Clear Event Log Response payload |
14140 | | * |
14141 | | *@param tvb pointer to buffer containing raw packet. |
14142 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14143 | | *@param offset pointer to offset from caller |
14144 | | */ |
14145 | | static void |
14146 | | dissect_zcl_events_clear_event_log_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14147 | 0 | { |
14148 | | /* Cleared Event Logs */ |
14149 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs, tvb, *offset, 1, ENC_NA); |
14150 | 0 | *offset += 1; |
14151 | 0 | } /*dissect_zcl_events_clear_event_log_response*/ |
14152 | | |
14153 | | /** |
14154 | | *This function registers the ZCL Events dissector |
14155 | | * |
14156 | | */ |
14157 | | void |
14158 | | proto_register_zbee_zcl_events(void) |
14159 | 15 | { |
14160 | 15 | static hf_register_info hf[] = { |
14161 | | |
14162 | 15 | { &hf_zbee_zcl_events_srv_tx_cmd_id, |
14163 | 15 | { "Command", "zbee_zcl_se.events.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_events_srv_tx_cmd_names), |
14164 | 15 | 0x00, NULL, HFILL } }, |
14165 | | |
14166 | 15 | { &hf_zbee_zcl_events_srv_rx_cmd_id, |
14167 | 15 | { "Command", "zbee_zcl_se.events.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_events_srv_rx_cmd_names), |
14168 | 15 | 0x00, NULL, HFILL } }, |
14169 | | |
14170 | 15 | { &hf_zbee_zcl_events_get_event_log_event_control_log_id, |
14171 | 15 | { "Event Control / Log ID", "zbee_zcl_se.events.get_event_log.event_control_log_id", FT_UINT8, BASE_HEX, NULL, |
14172 | 15 | 0x00, NULL, HFILL } }, |
14173 | | |
14174 | 15 | { &hf_zbee_zcl_events_get_event_log_event_id, |
14175 | 15 | { "Event ID", "zbee_zcl_se.events.get_event_log.event_id", FT_UINT16, BASE_HEX, NULL, |
14176 | 15 | 0x00, NULL, HFILL } }, |
14177 | | |
14178 | 15 | { &hf_zbee_zcl_events_get_event_log_start_time, |
14179 | 15 | { "Start Time", "zbee_zcl_se.events.get_event_log.start_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
14180 | 15 | 0x00, NULL, HFILL } }, |
14181 | | |
14182 | 15 | { &hf_zbee_zcl_events_get_event_log_end_time, |
14183 | 15 | { "End Time", "zbee_zcl_se.events.get_event_log.end_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
14184 | 15 | 0x00, NULL, HFILL } }, |
14185 | | |
14186 | 15 | { &hf_zbee_zcl_events_get_event_log_number_of_events, |
14187 | 15 | { "Number of Events", "zbee_zcl_se.events.get_event_log.number_of_events", FT_UINT8, BASE_DEC, NULL, |
14188 | 15 | 0x00, NULL, HFILL } }, |
14189 | | |
14190 | 15 | { &hf_zbee_zcl_events_get_event_log_event_offset, |
14191 | 15 | { "Event Offset", "zbee_zcl_se.events.get_event_log.event_offset", FT_UINT16, BASE_DEC, NULL, |
14192 | 15 | 0x00, NULL, HFILL } }, |
14193 | | |
14194 | 15 | { &hf_zbee_zcl_events_clear_event_log_request_log_id, |
14195 | 15 | { "Log ID", "zbee_zcl_se.events.clear_event_log_request.log_id", FT_UINT8, BASE_HEX, NULL, |
14196 | 15 | 0x00, NULL, HFILL } }, |
14197 | | |
14198 | 15 | { &hf_zbee_zcl_events_publish_event_log_id, |
14199 | 15 | { "Log ID", "zbee_zcl_se.events.publish_event.log_id", FT_UINT8, BASE_HEX, NULL, |
14200 | 15 | 0x00, NULL, HFILL } }, |
14201 | | |
14202 | 15 | { &hf_zbee_zcl_events_publish_event_event_id, |
14203 | 15 | { "Event ID", "zbee_zcl_se.events.publish_event.event_id", FT_UINT16, BASE_HEX, NULL, |
14204 | 15 | 0x00, NULL, HFILL } }, |
14205 | | |
14206 | 15 | { &hf_zbee_zcl_events_publish_event_event_time, |
14207 | 15 | { "Event Time", "zbee_zcl_se.events.publish_event.event_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
14208 | 15 | 0x00, NULL, HFILL } }, |
14209 | | |
14210 | 15 | { &hf_zbee_zcl_events_publish_event_event_control, |
14211 | 15 | { "Event Control", "zbee_zcl_se.events.publish_event.event_control", FT_UINT8, BASE_HEX, NULL, |
14212 | 15 | 0x00, NULL, HFILL } }, |
14213 | | |
14214 | 15 | { &hf_zbee_zcl_events_publish_event_event_data, |
14215 | 15 | { "Event Data", "zbee_zcl_se.events.publish_event.event_data", FT_UINT_BYTES, SEP_COLON, NULL, |
14216 | 15 | 0x00, NULL, HFILL } }, |
14217 | | |
14218 | 15 | { &hf_zbee_zcl_events_publish_event_log_total_number_of_matching_events, |
14219 | 15 | { "Total Number of Matching Events", "zbee_zcl_se.events.publish_event_log.matching_events", FT_UINT16, BASE_DEC, NULL, |
14220 | 15 | 0x00, NULL, HFILL } }, |
14221 | | |
14222 | 15 | { &hf_zbee_zcl_events_publish_event_log_command_index, |
14223 | 15 | { "Command Index", "zbee_zcl_se.events.publish_event_log.command_index", FT_UINT8, BASE_DEC, NULL, |
14224 | 15 | 0x00, NULL, HFILL } }, |
14225 | | |
14226 | 15 | { &hf_zbee_zcl_events_publish_event_log_total_commands, |
14227 | 15 | { "Total Commands", "zbee_zcl_se.events.publish_event_log.total_commands", FT_UINT8, BASE_DEC, NULL, |
14228 | 15 | 0x00, NULL, HFILL } }, |
14229 | | |
14230 | 15 | { &hf_zbee_zcl_events_publish_event_log_number_of_events_log_payload_control, |
14231 | 15 | { "Number of Events / Log Payload Control", "zbee_zcl_se.events.publish_event_log.number_of_events_log_payload_control", FT_UINT8, BASE_HEX, NULL, |
14232 | 15 | 0x00, NULL, HFILL } }, |
14233 | | |
14234 | 15 | { &hf_zbee_zcl_events_publish_event_log_log_id, |
14235 | 15 | { "Log ID", "zbee_zcl_se.events.publish_event_log.log_id", FT_UINT8, BASE_HEX, NULL, |
14236 | 15 | 0x00, NULL, HFILL } }, |
14237 | | |
14238 | 15 | { &hf_zbee_zcl_events_publish_event_log_event_id, |
14239 | 15 | { "Event ID", "zbee_zcl_se.events.publish_event_log.event_id", FT_UINT16, BASE_HEX, NULL, |
14240 | 15 | 0x00, NULL, HFILL } }, |
14241 | | |
14242 | 15 | { &hf_zbee_zcl_events_publish_event_log_event_time, |
14243 | 15 | { "Event Time", "zbee_zcl_se.events.publish_event_log.event_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
14244 | 15 | 0x00, NULL, HFILL } }, |
14245 | | |
14246 | 15 | { &hf_zbee_zcl_events_publish_event_log_event_data, |
14247 | 15 | { "Event Data", "zbee_zcl_se.events.publish_event_log.event_data", FT_UINT_BYTES, SEP_COLON, NULL, |
14248 | 15 | 0x00, NULL, HFILL } }, |
14249 | | |
14250 | 15 | { &hf_zbee_zcl_events_clear_event_log_response_cleared_event_logs, |
14251 | 15 | { "Cleared Event Logs", "zbee_zcl_se.events.clear_event_log_response.cleared_event_logs", FT_UINT8, BASE_HEX, NULL, |
14252 | 15 | 0x00, NULL, HFILL } }, |
14253 | | |
14254 | 15 | }; |
14255 | | |
14256 | | /* ZCL Events subtrees */ |
14257 | 15 | int *ett[ZBEE_ZCL_SE_EVENTS_NUM_TOTAL_ETT]; |
14258 | 15 | ett[0] = &ett_zbee_zcl_events; |
14259 | | |
14260 | 15 | unsigned j = ZBEE_ZCL_SE_EVENTS_NUM_INDIVIDUAL_ETT; |
14261 | | |
14262 | | /* Initialize Publish Event Log subtrees */ |
14263 | 1.51k | for (unsigned i = 0; i < ZBEE_ZCL_SE_EVENTS_NUM_PUBLISH_EVENT_LOG_ETT; i++, j++) { |
14264 | 1.50k | ett[j] = &ett_zbee_zcl_events_publish_event_log_entry[i]; |
14265 | 1.50k | } |
14266 | | |
14267 | | /* Register the ZigBee ZCL Events cluster protocol name and description */ |
14268 | 15 | proto_zbee_zcl_events = proto_register_protocol("ZigBee ZCL Events", "ZCL Events", ZBEE_PROTOABBREV_ZCL_EVENTS); |
14269 | 15 | proto_register_field_array(proto_zbee_zcl_events, hf, array_length(hf)); |
14270 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
14271 | | |
14272 | | /* Register the ZigBee ZCL Events dissector. */ |
14273 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_EVENTS, dissect_zbee_zcl_events, proto_zbee_zcl_events); |
14274 | 15 | } /*proto_register_zbee_zcl_events*/ |
14275 | | |
14276 | | /** |
14277 | | *Hands off the ZCL Events dissector. |
14278 | | * |
14279 | | */ |
14280 | | void |
14281 | | proto_reg_handoff_zbee_zcl_events(void) |
14282 | 15 | { |
14283 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_EVENTS, |
14284 | 15 | proto_zbee_zcl_events, |
14285 | 15 | ett_zbee_zcl_events, |
14286 | 15 | ZBEE_ZCL_CID_EVENTS, |
14287 | 15 | ZBEE_MFG_CODE_NONE, |
14288 | 15 | -1, -1, |
14289 | 15 | hf_zbee_zcl_events_srv_rx_cmd_id, |
14290 | 15 | hf_zbee_zcl_events_srv_tx_cmd_id, |
14291 | 15 | NULL |
14292 | 15 | ); |
14293 | 15 | } /*proto_reg_handoff_zbee_zcl_events*/ |
14294 | | |
14295 | | /* ########################################################################## */ |
14296 | | /* #### (0x070A) MDU PAIRING CLUSTER ############################################ */ |
14297 | | /* ########################################################################## */ |
14298 | | |
14299 | | /* Attributes - None */ |
14300 | | |
14301 | | /* Server Commands Received */ |
14302 | | #define zbee_zcl_mdu_pairing_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14303 | | XXX(ZBEE_ZCL_CMD_ID_MDU_PAIRING_REQUEST, 0x00, "Pairing Request" ) |
14304 | | |
14305 | | VALUE_STRING_ENUM(zbee_zcl_mdu_pairing_srv_rx_cmd_names); |
14306 | | VALUE_STRING_ARRAY(zbee_zcl_mdu_pairing_srv_rx_cmd_names); |
14307 | | |
14308 | | /* Server Commands Generated */ |
14309 | | #define zbee_zcl_mdu_pairing_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14310 | | XXX(ZBEE_ZCL_CMD_ID_MDU_PAIRING_RESPONSE, 0x00, "Pairing Response" ) |
14311 | | |
14312 | | VALUE_STRING_ENUM(zbee_zcl_mdu_pairing_srv_tx_cmd_names); |
14313 | | VALUE_STRING_ARRAY(zbee_zcl_mdu_pairing_srv_tx_cmd_names); |
14314 | | |
14315 | | /*************************/ |
14316 | | /* Function Declarations */ |
14317 | | /*************************/ |
14318 | | void proto_register_zbee_zcl_mdu_pairing(void); |
14319 | | void proto_reg_handoff_zbee_zcl_mdu_pairing(void); |
14320 | | |
14321 | | /* Command Dissector Helpers */ |
14322 | | static void dissect_zcl_mdu_pairing_request (tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
14323 | | static void dissect_zcl_mdu_pairing_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
14324 | | |
14325 | | /*************************/ |
14326 | | /* Global Variables */ |
14327 | | /*************************/ |
14328 | | |
14329 | | /* Initialize the protocol and registered fields */ |
14330 | | static int proto_zbee_zcl_mdu_pairing; |
14331 | | |
14332 | | static int hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id; |
14333 | | static int hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id; |
14334 | | static int hf_zbee_zcl_mdu_pairing_info_version; |
14335 | | static int hf_zbee_zcl_mdu_pairing_total_devices_number; |
14336 | | static int hf_zbee_zcl_mdu_pairing_cmd_id; |
14337 | | static int hf_zbee_zcl_mdu_pairing_total_commands_number; |
14338 | | static int hf_zbee_zcl_mdu_pairing_device_eui64; |
14339 | | static int hf_zbee_zcl_mdu_pairing_local_info_version; |
14340 | | static int hf_zbee_zcl_mdu_pairing_requesting_device_eui64; |
14341 | | |
14342 | | /* Initialize the subtree pointers */ |
14343 | | static int ett_zbee_zcl_mdu_pairing; |
14344 | | |
14345 | | /*************************/ |
14346 | | /* Function Bodies */ |
14347 | | /*************************/ |
14348 | | |
14349 | | /** |
14350 | | *ZigBee ZCL MDU Pairing cluster dissector for wireshark. |
14351 | | * |
14352 | | *@param tvb pointer to buffer containing raw packet. |
14353 | | *@param pinfo pointer to packet information fields |
14354 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14355 | | */ |
14356 | | static int |
14357 | | dissect_zbee_zcl_mdu_pairing(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
14358 | 3 | { |
14359 | 3 | proto_tree *payload_tree; |
14360 | 3 | zbee_zcl_packet *zcl; |
14361 | 3 | unsigned offset = 0; |
14362 | 3 | uint8_t cmd_id; |
14363 | 3 | int rem_len; |
14364 | | |
14365 | | /* Reject the packet if data is NULL */ |
14366 | 3 | if (data == NULL) |
14367 | 0 | return 0; |
14368 | 3 | zcl = (zbee_zcl_packet *)data; |
14369 | 3 | cmd_id = zcl->cmd_id; |
14370 | | |
14371 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
14372 | 3 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
14373 | | /* Append the command name to the info column. */ |
14374 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
14375 | 0 | val_to_str_const(cmd_id, zbee_zcl_mdu_pairing_srv_rx_cmd_names, "Unknown Command"), |
14376 | 0 | zcl->tran_seqno); |
14377 | | |
14378 | | /* Add the command ID. */ |
14379 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
14380 | | |
14381 | | /* Check is this command has a payload, than add the payload tree */ |
14382 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
14383 | 0 | if (rem_len > 0) { |
14384 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_mdu_pairing, NULL, "Payload"); |
14385 | | |
14386 | | /* Call the appropriate command dissector */ |
14387 | 0 | switch (cmd_id) { |
14388 | | |
14389 | 0 | case ZBEE_ZCL_CMD_ID_MDU_PAIRING_REQUEST: |
14390 | 0 | dissect_zcl_mdu_pairing_request(tvb, payload_tree, &offset); |
14391 | 0 | break; |
14392 | | |
14393 | 0 | default: |
14394 | 0 | break; |
14395 | 0 | } |
14396 | 0 | } |
14397 | 0 | } |
14398 | 3 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
14399 | | /* Append the command name to the info column. */ |
14400 | 3 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
14401 | 3 | val_to_str_const(cmd_id, zbee_zcl_mdu_pairing_srv_tx_cmd_names, "Unknown Command"), |
14402 | 3 | zcl->tran_seqno); |
14403 | | |
14404 | | /* Add the command ID. */ |
14405 | 3 | proto_tree_add_uint(tree, hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
14406 | | |
14407 | | /* Check is this command has a payload, than add the payload tree */ |
14408 | 3 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
14409 | 3 | if (rem_len > 0) { |
14410 | 3 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_mdu_pairing, NULL, "Payload"); |
14411 | | |
14412 | | /* Call the appropriate command dissector */ |
14413 | 3 | switch (cmd_id) { |
14414 | | |
14415 | 3 | case ZBEE_ZCL_CMD_ID_MDU_PAIRING_RESPONSE: |
14416 | 3 | dissect_zcl_mdu_pairing_response(tvb, payload_tree, &offset); |
14417 | 3 | break; |
14418 | | |
14419 | 0 | default: |
14420 | 0 | break; |
14421 | 3 | } |
14422 | 3 | } |
14423 | 3 | } |
14424 | | |
14425 | 3 | return tvb_captured_length(tvb); |
14426 | 3 | } /*dissect_zbee_zcl_mdu_pairing*/ |
14427 | | |
14428 | | /** |
14429 | | *This function manages the Pairing Request payload |
14430 | | * |
14431 | | *@param tvb pointer to buffer containing raw packet. |
14432 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14433 | | *@param offset pointer to offset from caller |
14434 | | */ |
14435 | | static void |
14436 | | dissect_zcl_mdu_pairing_request(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14437 | 0 | { |
14438 | | /* Local pairing information version */ |
14439 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_local_info_version, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
14440 | 0 | *offset += 4; |
14441 | | |
14442 | | /* EUI64 of Requesting Device */ |
14443 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_requesting_device_eui64, tvb, *offset, 8, ENC_LITTLE_ENDIAN); |
14444 | 0 | *offset += 8; |
14445 | 0 | } /*dissect_zcl_mdu_pairing_request*/ |
14446 | | |
14447 | | /** |
14448 | | *This function manages the Pairing Response payload |
14449 | | * |
14450 | | *@param tvb pointer to buffer containing raw packet. |
14451 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14452 | | *@param offset pointer to offset from caller |
14453 | | */ |
14454 | | static void |
14455 | | dissect_zcl_mdu_pairing_response(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14456 | 3 | { |
14457 | 3 | uint8_t devices_num; |
14458 | | |
14459 | | /* Pairing information version */ |
14460 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_info_version, tvb, *offset, 4, ENC_LITTLE_ENDIAN); |
14461 | 3 | *offset += 4; |
14462 | | |
14463 | | /* Total Number of Devices */ |
14464 | 3 | devices_num = tvb_get_uint8(tvb, *offset); |
14465 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_total_devices_number, tvb, *offset, 1, ENC_NA); |
14466 | 3 | *offset += 1; |
14467 | | |
14468 | | /* Command index */ |
14469 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_cmd_id, tvb, *offset, 1, ENC_NA); |
14470 | 3 | *offset += 1; |
14471 | | |
14472 | | /* Total Number of Commands */ |
14473 | 3 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_total_commands_number, tvb, *offset, 1, ENC_NA); |
14474 | 3 | *offset += 1; |
14475 | | |
14476 | | /* EUI64 of Devices */ |
14477 | 9 | for (int i = 0; tvb_reported_length_remaining(tvb, *offset) >= 8 && i < devices_num; i++) { |
14478 | | /* EUI64 of Device i */ |
14479 | 6 | proto_tree_add_item(tree, hf_zbee_zcl_mdu_pairing_device_eui64, tvb, *offset, 8, ENC_LITTLE_ENDIAN); |
14480 | 6 | *offset += 8; |
14481 | 6 | } |
14482 | 3 | } /*dissect_zcl_mdu_pairing_response*/ |
14483 | | |
14484 | | /** |
14485 | | *This function registers the ZCL MDU Pairing dissector |
14486 | | * |
14487 | | */ |
14488 | | void |
14489 | | proto_register_zbee_zcl_mdu_pairing(void) |
14490 | 15 | { |
14491 | 15 | static hf_register_info hf[] = { |
14492 | | |
14493 | 15 | { &hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id, |
14494 | 15 | { "Command", "zbee_zcl_se.mdu_pairing.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_mdu_pairing_srv_tx_cmd_names), |
14495 | 15 | 0x00, NULL, HFILL } }, |
14496 | | |
14497 | 15 | { &hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id, |
14498 | 15 | { "Command", "zbee_zcl_se.mdu_pairing.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_mdu_pairing_srv_rx_cmd_names), |
14499 | 15 | 0x00, NULL, HFILL } }, |
14500 | | |
14501 | 15 | { &hf_zbee_zcl_mdu_pairing_info_version, |
14502 | 15 | { "Pairing information version", "zbee_zcl_se.mdu_pairing.info_version", FT_UINT32, BASE_DEC, NULL, |
14503 | 15 | 0x0, NULL, HFILL } }, |
14504 | | |
14505 | 15 | { &hf_zbee_zcl_mdu_pairing_total_devices_number, |
14506 | 15 | { "Total Number of Devices", "zbee_zcl_se.mdu_pairing.total_devices_number", FT_UINT8, BASE_DEC, NULL, |
14507 | 15 | 0x0, NULL, HFILL } }, |
14508 | | |
14509 | 15 | { &hf_zbee_zcl_mdu_pairing_cmd_id, |
14510 | 15 | { "Command Index", "zbee_zcl_se.mdu_pairing.command_index", FT_UINT8, BASE_HEX, NULL, |
14511 | 15 | 0x0, NULL, HFILL } }, |
14512 | | |
14513 | 15 | { &hf_zbee_zcl_mdu_pairing_total_commands_number, |
14514 | 15 | { "Total Number of Commands", "zbee_zcl_se.mdu_pairing.total_commands_number", FT_UINT8, BASE_DEC, NULL, |
14515 | 15 | 0x0, NULL, HFILL } }, |
14516 | | |
14517 | 15 | { &hf_zbee_zcl_mdu_pairing_device_eui64, |
14518 | 15 | { "Device EUI64", "zbee_zcl_se.mdu_pairing.device_eui64", FT_EUI64, BASE_NONE, NULL, |
14519 | 15 | 0x0, NULL, HFILL } }, |
14520 | | |
14521 | 15 | { &hf_zbee_zcl_mdu_pairing_local_info_version, |
14522 | 15 | { "Local Pairing Information Version", "zbee_zcl_se.mdu_pairing.local_info_version", FT_UINT32, BASE_DEC, NULL, |
14523 | 15 | 0x0, NULL, HFILL } }, |
14524 | | |
14525 | 15 | { &hf_zbee_zcl_mdu_pairing_requesting_device_eui64, |
14526 | 15 | { "EUI64 of Requesting Device", "zbee_zcl_se.mdu_pairing.requesting_device_eui64", FT_EUI64, BASE_NONE, NULL, |
14527 | 15 | 0x0, NULL, HFILL } }, |
14528 | 15 | }; |
14529 | | |
14530 | | /* ZCL MDU Pairing subtrees */ |
14531 | 15 | int *ett[] = { |
14532 | 15 | &ett_zbee_zcl_mdu_pairing |
14533 | 15 | }; |
14534 | | |
14535 | | /* Register the ZigBee ZCL MDU Pairing cluster protocol name and description */ |
14536 | 15 | proto_zbee_zcl_mdu_pairing = proto_register_protocol("ZigBee ZCL MDU Pairing", "ZCL MDU Pairing", ZBEE_PROTOABBREV_ZCL_MDU_PAIRING); |
14537 | 15 | proto_register_field_array(proto_zbee_zcl_mdu_pairing, hf, array_length(hf)); |
14538 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
14539 | | |
14540 | | /* Register the ZigBee ZCL MDU Pairing dissector. */ |
14541 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_MDU_PAIRING, dissect_zbee_zcl_mdu_pairing, proto_zbee_zcl_mdu_pairing); |
14542 | 15 | } /*proto_register_zbee_zcl_mdu_pairing*/ |
14543 | | |
14544 | | /** |
14545 | | *Hands off the ZCL MDU Pairing dissector. |
14546 | | * |
14547 | | */ |
14548 | | void |
14549 | | proto_reg_handoff_zbee_zcl_mdu_pairing(void) |
14550 | 15 | { |
14551 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_MDU_PAIRING, |
14552 | 15 | proto_zbee_zcl_mdu_pairing, |
14553 | 15 | ett_zbee_zcl_mdu_pairing, |
14554 | 15 | ZBEE_ZCL_CID_MDU_PAIRING, |
14555 | 15 | ZBEE_MFG_CODE_NONE, |
14556 | 15 | -1, -1, |
14557 | 15 | hf_zbee_zcl_mdu_pairing_srv_rx_cmd_id, |
14558 | 15 | hf_zbee_zcl_mdu_pairing_srv_tx_cmd_id, |
14559 | 15 | NULL |
14560 | 15 | ); |
14561 | 15 | } /*proto_reg_handoff_zbee_zcl_mdu_pairing*/ |
14562 | | |
14563 | | /* ########################################################################## */ |
14564 | | /* #### (0x070B) SUB-GHZ CLUSTER ############################################ */ |
14565 | | /* ########################################################################## */ |
14566 | | |
14567 | | /* Attributes */ |
14568 | | #define zbee_zcl_sub_ghz_attr_names_VALUE_STRING_LIST(XXX) \ |
14569 | | XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_CHANNEL_CHANGE, 0x0000, "Channel Change" ) \ |
14570 | | XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_28_CHANNEL_MASK, 0x0001, "Page 28 Channel Mask" ) \ |
14571 | | XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_29_CHANNEL_MASK, 0x0002, "Page 29 Channel Mask" ) \ |
14572 | | XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_30_CHANNEL_MASK, 0x0003, "Page 30 Channel Mask" ) \ |
14573 | | XXX(ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_31_CHANNEL_MASK, 0x0004, "Page 31 Channel Mask" ) \ |
14574 | | XXX(ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_SUB_GHZ, 0xFFFE, "Attribute Reporting Status" ) |
14575 | | |
14576 | | VALUE_STRING_ENUM(zbee_zcl_sub_ghz_attr_names); |
14577 | | VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_attr_names); |
14578 | | |
14579 | | /* Server Commands Received */ |
14580 | | #define zbee_zcl_sub_ghz_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14581 | | XXX(ZBEE_ZCL_CMD_ID_SUB_GHZ_GET_SUSPEND_ZCL_MESSAGES_STATUS, 0x00, "Get Suspend ZCL Messages Status" ) |
14582 | | |
14583 | | VALUE_STRING_ENUM(zbee_zcl_sub_ghz_srv_rx_cmd_names); |
14584 | | VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_srv_rx_cmd_names); |
14585 | | |
14586 | | /* Server Commands Generated */ |
14587 | | #define zbee_zcl_sub_ghz_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14588 | | XXX(ZBEE_ZCL_CMD_ID_SUB_GHZ_SUSPEND_ZCL_MESSAGES, 0x00, "Suspend ZCL Messages" ) |
14589 | | |
14590 | | VALUE_STRING_ENUM(zbee_zcl_sub_ghz_srv_tx_cmd_names); |
14591 | | VALUE_STRING_ARRAY(zbee_zcl_sub_ghz_srv_tx_cmd_names); |
14592 | | |
14593 | | /*************************/ |
14594 | | /* Function Declarations */ |
14595 | | /*************************/ |
14596 | | void proto_register_zbee_zcl_sub_ghz(void); |
14597 | | void proto_reg_handoff_zbee_zcl_sub_ghz(void); |
14598 | | |
14599 | | /* Command Dissector Helpers */ |
14600 | | static void dissect_zcl_sub_ghz_suspend_zcl_messages(tvbuff_t *tvb, proto_tree *tree, unsigned *offset); |
14601 | | |
14602 | | /*************************/ |
14603 | | /* Global Variables */ |
14604 | | /*************************/ |
14605 | | |
14606 | | /* Initialize the protocol and registered fields */ |
14607 | | static int proto_zbee_zcl_sub_ghz; |
14608 | | |
14609 | | static int hf_zbee_zcl_sub_ghz_srv_tx_cmd_id; |
14610 | | static int hf_zbee_zcl_sub_ghz_srv_rx_cmd_id; |
14611 | | static int hf_zbee_zcl_sub_ghz_attr_id; |
14612 | | static int hf_zbee_zcl_sub_ghz_attr_reporting_status; |
14613 | | static int hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period; |
14614 | | |
14615 | | /* Initialize the subtree pointers */ |
14616 | | static int ett_zbee_zcl_sub_ghz; |
14617 | | |
14618 | | /*************************/ |
14619 | | /* Function Bodies */ |
14620 | | /*************************/ |
14621 | | |
14622 | | /** |
14623 | | *This function is called by ZCL foundation dissector in order to decode |
14624 | | * |
14625 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14626 | | *@param tvb pointer to buffer containing raw packet. |
14627 | | *@param offset pointer to buffer offset |
14628 | | *@param attr_id attribute identifier |
14629 | | *@param data_type attribute data type |
14630 | | *@param client_attr ZCL client |
14631 | | */ |
14632 | | static void |
14633 | | dissect_zcl_sub_ghz_attr_data(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, unsigned *offset, uint16_t attr_id, unsigned data_type, bool client_attr) |
14634 | 0 | { |
14635 | | /* Dissect attribute data type and data */ |
14636 | 0 | switch (attr_id) { |
14637 | | /* applies to all SE clusters */ |
14638 | 0 | case ZBEE_ZCL_ATTR_ID_SE_ATTR_REPORT_STATUS_SUB_GHZ: |
14639 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_sub_ghz_attr_reporting_status, tvb, *offset, 1, ENC_NA); |
14640 | 0 | *offset += 1; |
14641 | 0 | break; |
14642 | | |
14643 | 0 | case ZBEE_ZCL_ATTR_ID_SUB_GHZ_CHANNEL_CHANGE: |
14644 | 0 | case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_28_CHANNEL_MASK: |
14645 | 0 | case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_29_CHANNEL_MASK: |
14646 | 0 | case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_30_CHANNEL_MASK: |
14647 | 0 | case ZBEE_ZCL_ATTR_ID_SUB_GHZ_PAGE_31_CHANNEL_MASK: |
14648 | 0 | default: /* Catch all */ |
14649 | 0 | dissect_zcl_attr_data(tvb, pinfo, tree, offset, data_type, client_attr); |
14650 | 0 | break; |
14651 | 0 | } |
14652 | 0 | } /*dissect_zcl_sub_ghz_attr_data*/ |
14653 | | |
14654 | | |
14655 | | /** |
14656 | | *ZigBee ZCL Sub-Ghz cluster dissector for wireshark. |
14657 | | * |
14658 | | *@param tvb pointer to buffer containing raw packet. |
14659 | | *@param pinfo pointer to packet information fields |
14660 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14661 | | */ |
14662 | | static int |
14663 | | dissect_zbee_zcl_sub_ghz(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
14664 | 0 | { |
14665 | 0 | proto_tree *payload_tree; |
14666 | 0 | zbee_zcl_packet *zcl; |
14667 | 0 | unsigned offset = 0; |
14668 | 0 | uint8_t cmd_id; |
14669 | 0 | int rem_len; |
14670 | | |
14671 | | /* Reject the packet if data is NULL */ |
14672 | 0 | if (data == NULL) |
14673 | 0 | return 0; |
14674 | 0 | zcl = (zbee_zcl_packet *)data; |
14675 | 0 | cmd_id = zcl->cmd_id; |
14676 | | |
14677 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
14678 | 0 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
14679 | | /* Append the command name to the info column. */ |
14680 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
14681 | 0 | val_to_str_const(cmd_id, zbee_zcl_sub_ghz_srv_rx_cmd_names, "Unknown Command"), |
14682 | 0 | zcl->tran_seqno); |
14683 | | |
14684 | | /* Add the command ID. */ |
14685 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_sub_ghz_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
14686 | | |
14687 | | /* Check is this command has a payload, than add the payload tree */ |
14688 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
14689 | 0 | if (rem_len > 0) { |
14690 | 0 | /* payload_tree = */proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_sub_ghz, NULL, "Payload"); |
14691 | | |
14692 | | /* Call the appropriate command dissector */ |
14693 | 0 | switch (cmd_id) { |
14694 | | |
14695 | 0 | case ZBEE_ZCL_CMD_ID_SUB_GHZ_GET_SUSPEND_ZCL_MESSAGES_STATUS: |
14696 | | /* No Payload */ |
14697 | 0 | break; |
14698 | | |
14699 | 0 | default: |
14700 | 0 | break; |
14701 | 0 | } |
14702 | 0 | } |
14703 | 0 | } |
14704 | 0 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
14705 | | /* Append the command name to the info column. */ |
14706 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
14707 | 0 | val_to_str_const(cmd_id, zbee_zcl_sub_ghz_srv_tx_cmd_names, "Unknown Command"), |
14708 | 0 | zcl->tran_seqno); |
14709 | | |
14710 | | /* Add the command ID. */ |
14711 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_sub_ghz_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
14712 | | |
14713 | | /* Check is this command has a payload, than add the payload tree */ |
14714 | 0 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
14715 | 0 | if (rem_len > 0) { |
14716 | 0 | payload_tree = proto_tree_add_subtree(tree, tvb, offset, rem_len, ett_zbee_zcl_sub_ghz, NULL, "Payload"); |
14717 | | |
14718 | | /* Call the appropriate command dissector */ |
14719 | 0 | switch (cmd_id) { |
14720 | | |
14721 | 0 | case ZBEE_ZCL_CMD_ID_SUB_GHZ_SUSPEND_ZCL_MESSAGES: |
14722 | 0 | dissect_zcl_sub_ghz_suspend_zcl_messages(tvb, payload_tree, &offset); |
14723 | 0 | break; |
14724 | | |
14725 | 0 | default: |
14726 | 0 | break; |
14727 | 0 | } |
14728 | 0 | } |
14729 | 0 | } |
14730 | | |
14731 | 0 | return tvb_captured_length(tvb); |
14732 | 0 | } /*dissect_zbee_zcl_sub_ghz*/ |
14733 | | |
14734 | | /** |
14735 | | *This function manages the Suspend ZCL Messages payload |
14736 | | * |
14737 | | *@param tvb pointer to buffer containing raw packet. |
14738 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14739 | | *@param offset pointer to offset from caller |
14740 | | */ |
14741 | | static void |
14742 | | dissect_zcl_sub_ghz_suspend_zcl_messages(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14743 | 0 | { |
14744 | | /* (Optional) Suspension Period */ |
14745 | 0 | if (tvb_reported_length_remaining(tvb, *offset) > 0) { |
14746 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period, tvb, *offset, 1, ENC_NA); |
14747 | 0 | *offset += 1; |
14748 | 0 | } |
14749 | 0 | } /*dissect_zcl_sub_ghz_suspend_zcl_messages*/ |
14750 | | |
14751 | | /** |
14752 | | *This function registers the ZCL Sub-Ghz dissector |
14753 | | * |
14754 | | */ |
14755 | | void |
14756 | | proto_register_zbee_zcl_sub_ghz(void) |
14757 | 15 | { |
14758 | 15 | static hf_register_info hf[] = { |
14759 | | |
14760 | 15 | { &hf_zbee_zcl_sub_ghz_attr_id, |
14761 | 15 | { "Attribute", "zbee_zcl_se.sub_ghz.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_sub_ghz_attr_names), |
14762 | 15 | 0x0, NULL, HFILL } }, |
14763 | | |
14764 | 15 | { &hf_zbee_zcl_sub_ghz_attr_reporting_status, /* common to all SE clusters */ |
14765 | 15 | { "Attribute Reporting Status", "zbee_zcl_se.sub_ghz.attr.attr_reporting_status", |
14766 | 15 | FT_UINT8, BASE_HEX, VALS(zbee_zcl_se_reporting_status_names), 0x00, NULL, HFILL } }, |
14767 | | |
14768 | 15 | { &hf_zbee_zcl_sub_ghz_srv_tx_cmd_id, |
14769 | 15 | { "Command", "zbee_zcl_se.sub_ghz.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_sub_ghz_srv_tx_cmd_names), |
14770 | 15 | 0x00, NULL, HFILL } }, |
14771 | | |
14772 | 15 | { &hf_zbee_zcl_sub_ghz_srv_rx_cmd_id, |
14773 | 15 | { "Command", "zbee_zcl_se.sub_ghz.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_sub_ghz_srv_rx_cmd_names), |
14774 | 15 | 0x00, NULL, HFILL } }, |
14775 | | |
14776 | 15 | { &hf_zbee_zcl_sub_ghz_zcl_messages_suspension_period, |
14777 | 15 | { "ZCL Messages Suspension Period", "zbee_zcl_se.sub_ghz.zcl_messages_suspension_period", FT_UINT8, BASE_DEC, NULL, |
14778 | 15 | 0x0, NULL, HFILL } }, |
14779 | 15 | }; |
14780 | | |
14781 | | /* ZCL Sub-Ghz subtrees */ |
14782 | 15 | int *ett[] = { |
14783 | 15 | &ett_zbee_zcl_sub_ghz |
14784 | 15 | }; |
14785 | | |
14786 | | /* Register the ZigBee ZCL Sub-Ghz cluster protocol name and description */ |
14787 | 15 | proto_zbee_zcl_sub_ghz = proto_register_protocol("ZigBee ZCL Sub-Ghz", "ZCL Sub-Ghz", ZBEE_PROTOABBREV_ZCL_SUB_GHZ); |
14788 | 15 | proto_register_field_array(proto_zbee_zcl_sub_ghz, hf, array_length(hf)); |
14789 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
14790 | | |
14791 | | /* Register the ZigBee ZCL Sub-Ghz dissector. */ |
14792 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_SUB_GHZ, dissect_zbee_zcl_sub_ghz, proto_zbee_zcl_sub_ghz); |
14793 | 15 | } /*proto_register_zbee_zcl_sub_ghz*/ |
14794 | | |
14795 | | /** |
14796 | | *Hands off the ZCL Sub-Ghz dissector. |
14797 | | * |
14798 | | */ |
14799 | | void |
14800 | | proto_reg_handoff_zbee_zcl_sub_ghz(void) |
14801 | 15 | { |
14802 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_SUB_GHZ, |
14803 | 15 | proto_zbee_zcl_sub_ghz, |
14804 | 15 | ett_zbee_zcl_sub_ghz, |
14805 | 15 | ZBEE_ZCL_CID_SUB_GHZ, |
14806 | 15 | ZBEE_MFG_CODE_NONE, |
14807 | 15 | hf_zbee_zcl_sub_ghz_attr_id, |
14808 | 15 | -1, |
14809 | 15 | hf_zbee_zcl_sub_ghz_srv_rx_cmd_id, |
14810 | 15 | hf_zbee_zcl_sub_ghz_srv_tx_cmd_id, |
14811 | 15 | dissect_zcl_sub_ghz_attr_data |
14812 | 15 | ); |
14813 | 15 | } /*proto_reg_handoff_zbee_zcl_sub_ghz*/ |
14814 | | |
14815 | | /* ########################################################################## */ |
14816 | | /* #### (0x0800) KEY ESTABLISHMENT ########################################## */ |
14817 | | /* ########################################################################## */ |
14818 | | |
14819 | | /*************************/ |
14820 | | /* Defines */ |
14821 | | /*************************/ |
14822 | | |
14823 | 15 | #define ZBEE_ZCL_KE_USAGE_KEY_AGREEMENT 0x08 |
14824 | 15 | #define ZBEE_ZCL_KE_USAGE_DIGITAL_SIGNATURE 0x80 |
14825 | | |
14826 | | /* Attributes */ |
14827 | | #define zbee_zcl_ke_attr_names_VALUE_STRING_LIST(XXX) \ |
14828 | | XXX(ZBEE_ZCL_ATTR_ID_KE_SUITE, 0x0000, "Supported Key Establishment Suites" ) |
14829 | | |
14830 | | VALUE_STRING_ARRAY(zbee_zcl_ke_attr_names); |
14831 | | |
14832 | | /* Server Commands Received */ |
14833 | | #define zbee_zcl_ke_srv_rx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14834 | | XXX(ZBEE_ZCL_CMD_ID_KE_INITIATE_REQ, 0x00, "Initiate Key Establishment Request" ) \ |
14835 | | XXX(ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_REQ, 0x01, "Ephemeral Data Request" ) \ |
14836 | | XXX(ZBEE_ZCL_CMD_ID_KE_CONFIRM_REQ, 0x02, "Confirm Key Data Request" ) \ |
14837 | | XXX(ZBEE_ZCL_CMD_ID_KE_CLNT_TERMINATE, 0x03, "Terminate Key Establishment" ) |
14838 | | |
14839 | | VALUE_STRING_ENUM(zbee_zcl_ke_srv_rx_cmd_names); |
14840 | | VALUE_STRING_ARRAY(zbee_zcl_ke_srv_rx_cmd_names); |
14841 | | |
14842 | | /* Server Commands Generated */ |
14843 | | #define zbee_zcl_ke_srv_tx_cmd_names_VALUE_STRING_LIST(XXX) \ |
14844 | | XXX(ZBEE_ZCL_CMD_ID_KE_INITIATE_RSP, 0x00, "Initiate Key Establishment Response" ) \ |
14845 | | XXX(ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_RSP, 0x01, "Ephemeral Data Response" ) \ |
14846 | | XXX(ZBEE_ZCL_CMD_ID_KE_CONFIRM_RSP, 0x02, "Confirm Key Data Response" ) \ |
14847 | | XXX(ZBEE_ZCL_CMD_ID_KE_SRV_TERMINATE, 0x03, "Terminate Key Establishment" ) |
14848 | | |
14849 | | VALUE_STRING_ENUM(zbee_zcl_ke_srv_tx_cmd_names); |
14850 | | VALUE_STRING_ARRAY(zbee_zcl_ke_srv_tx_cmd_names); |
14851 | | |
14852 | | /* Suite Names */ |
14853 | | #define zbee_zcl_ke_suite_names_VALUE_STRING_LIST(XXX) \ |
14854 | | XXX(ZBEE_ZCL_KE_SUITE_1, 0x0001, "Crypto Suite 1 (CBKE K163)" ) \ |
14855 | | XXX(ZBEE_ZCL_KE_SUITE_2, 0x0002, "Crypto Suite 2 (CBKE K283)" ) |
14856 | | |
14857 | | VALUE_STRING_ENUM(zbee_zcl_ke_suite_names); |
14858 | | VALUE_STRING_ARRAY(zbee_zcl_ke_suite_names); |
14859 | | |
14860 | | /* Crypto Suite 2 Type Names */ |
14861 | | #define zbee_zcl_ke_type_names_VALUE_STRING_LIST(XXX) \ |
14862 | | XXX(ZBEE_ZCL_KE_TYPE_NO_EXT, 0x00, "No Extensions" ) |
14863 | | |
14864 | | VALUE_STRING_ARRAY(zbee_zcl_ke_type_names); |
14865 | | |
14866 | | /* Crypto Suite 2 Curve Names */ |
14867 | | #define zbee_zcl_ke_curve_names_VALUE_STRING_LIST(XXX) \ |
14868 | | XXX(ZBEE_ZCL_KE_CURVE_SECT283K1, 0x0D, "sect283k1" ) |
14869 | | |
14870 | | VALUE_STRING_ARRAY(zbee_zcl_ke_curve_names); |
14871 | | |
14872 | | /* Crypto Suite 2 Hash Names */ |
14873 | | #define zbee_zcl_ke_hash_names_VALUE_STRING_LIST(XXX) \ |
14874 | | XXX(ZBEE_ZCL_KE_HASH_AES_MMO, 0x08, "AES MMO" ) |
14875 | | |
14876 | | VALUE_STRING_ARRAY(zbee_zcl_ke_hash_names); |
14877 | | |
14878 | | #define zbee_zcl_ke_status_names_VALUE_STRING_LIST(XXX) \ |
14879 | | XXX(ZBEE_ZCL_KE_STATUS_RESERVED, 0x00, "Reserved" ) \ |
14880 | | XXX(ZBEE_ZCL_KE_STATUS_UNKNOWN_ISSUER, 0x01, "Unknown Issuer" ) \ |
14881 | | XXX(ZBEE_ZCL_KE_STATUS_BAD_KEY_CONFIRM, 0x02, "Bad Key Confirm" ) \ |
14882 | | XXX(ZBEE_ZCL_KE_STATUS_BAD_MESSAGE, 0x03, "Bad Message" ) \ |
14883 | | XXX(ZBEE_ZCL_KE_STATUS_NO_RESOURCES, 0x04, "No Resources" ) \ |
14884 | | XXX(ZBEE_ZCL_KE_STATUS_UNSUPPORTED_SUITE, 0x05, "Unsupported Suite" ) \ |
14885 | | XXX(ZBEE_ZCL_KE_STATUS_INVALID_CERTIFICATE, 0x06, "Invalid Certificate" ) |
14886 | | |
14887 | | VALUE_STRING_ARRAY(zbee_zcl_ke_status_names); |
14888 | | |
14889 | | /*************************/ |
14890 | | /* Function Declarations */ |
14891 | | /*************************/ |
14892 | | |
14893 | | void proto_register_zbee_zcl_ke(void); |
14894 | | void proto_reg_handoff_zbee_zcl_ke(void); |
14895 | | |
14896 | | /* Private functions prototype */ |
14897 | | |
14898 | | /*************************/ |
14899 | | /* Global Variables */ |
14900 | | /*************************/ |
14901 | | |
14902 | | /* Initialize the protocol and registered fields */ |
14903 | | static int proto_zbee_zcl_ke; |
14904 | | static int hf_zbee_zcl_ke_srv_tx_cmd_id; |
14905 | | static int hf_zbee_zcl_ke_srv_rx_cmd_id; |
14906 | | static int hf_zbee_zcl_ke_attr_id; |
14907 | | static int hf_zbee_zcl_ke_attr_client_id; |
14908 | | static int hf_zbee_zcl_ke_suite; |
14909 | | static int hf_zbee_zcl_ke_ephemeral_time; |
14910 | | static int hf_zbee_zcl_ke_confirm_time; |
14911 | | static int hf_zbee_zcl_ke_status; |
14912 | | static int hf_zbee_zcl_ke_wait_time; |
14913 | | static int hf_zbee_zcl_ke_cert_reconstr; |
14914 | | static int hf_zbee_zcl_ke_cert_subject; |
14915 | | static int hf_zbee_zcl_ke_cert_issuer; |
14916 | | static int hf_zbee_zcl_ke_cert_profile_attr; |
14917 | | static int hf_zbee_zcl_ke_cert_type; |
14918 | | static int hf_zbee_zcl_ke_cert_serialno; |
14919 | | static int hf_zbee_zcl_ke_cert_curve; |
14920 | | static int hf_zbee_zcl_ke_cert_hash; |
14921 | | static int hf_zbee_zcl_ke_cert_valid_from; |
14922 | | static int hf_zbee_zcl_ke_cert_valid_to; |
14923 | | static int hf_zbee_zcl_ke_cert_key_usage_agreement; |
14924 | | static int hf_zbee_zcl_ke_cert_key_usage_signature; |
14925 | | static int hf_zbee_zcl_ke_ephemeral_qeu; |
14926 | | static int hf_zbee_zcl_ke_ephemeral_qev; |
14927 | | static int hf_zbee_zcl_ke_macu; |
14928 | | static int hf_zbee_zcl_ke_macv; |
14929 | | |
14930 | | /* Initialize the subtree pointers */ |
14931 | | static int ett_zbee_zcl_ke; |
14932 | | static int ett_zbee_zcl_ke_cert; |
14933 | | static int ett_zbee_zcl_ke_key_usage; |
14934 | | |
14935 | | /*************************/ |
14936 | | /* Function Bodies */ |
14937 | | /*************************/ |
14938 | | |
14939 | | /** |
14940 | | *This function dissects the Suite 1 Certificate |
14941 | | * |
14942 | | *@param tvb pointer to buffer containing raw packet. |
14943 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14944 | | *@param offset pointer to offset from caller |
14945 | | */ |
14946 | | static void |
14947 | | dissect_zcl_ke_suite1_certificate(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14948 | 0 | { |
14949 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_reconstr, tvb, *offset, 22, ENC_NA); |
14950 | 0 | *offset += 22; |
14951 | |
|
14952 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_subject, tvb, *offset, 8, ENC_NA); |
14953 | 0 | *offset += 8; |
14954 | |
|
14955 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_issuer, tvb, *offset, 8, ENC_NA); |
14956 | 0 | *offset += 8; |
14957 | |
|
14958 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_profile_attr, tvb, *offset, 10, ENC_NA); |
14959 | 0 | *offset += 10; |
14960 | |
|
14961 | 0 | } /*dissect_zcl_ke_suite1_certificate*/ |
14962 | | |
14963 | | /** |
14964 | | *This function dissects the Suite 2 Certificate |
14965 | | * |
14966 | | *@param tvb pointer to buffer containing raw packet. |
14967 | | *@param tree pointer to data tree Wireshark uses to display packet. |
14968 | | *@param offset pointer to offset from caller |
14969 | | */ |
14970 | | static void |
14971 | | dissect_zcl_ke_suite2_certificate(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
14972 | 0 | { |
14973 | 0 | nstime_t valid_from_time; |
14974 | 0 | nstime_t valid_to_time; |
14975 | 0 | uint32_t valid_to; |
14976 | 0 | uint8_t key_usage; |
14977 | 0 | proto_tree *usage_tree; |
14978 | |
|
14979 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_type, tvb, *offset, 1, ENC_NA); |
14980 | 0 | *offset += 1; |
14981 | |
|
14982 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_serialno, tvb, *offset, 8, ENC_BIG_ENDIAN); |
14983 | 0 | *offset += 8; |
14984 | |
|
14985 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_curve, tvb, *offset, 1, ENC_NA); |
14986 | 0 | *offset += 1; |
14987 | |
|
14988 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_hash, tvb, *offset, 1, ENC_NA); |
14989 | 0 | *offset += 1; |
14990 | |
|
14991 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_issuer, tvb, *offset, 8, ENC_NA); |
14992 | 0 | *offset += 8; |
14993 | |
|
14994 | 0 | valid_from_time.secs = (time_t)tvb_get_ntoh40(tvb, *offset); |
14995 | 0 | valid_from_time.nsecs = 0; |
14996 | 0 | proto_tree_add_time(tree, hf_zbee_zcl_ke_cert_valid_from, tvb, *offset, 5, &valid_from_time); |
14997 | 0 | *offset += 5; |
14998 | |
|
14999 | 0 | valid_to = tvb_get_ntohl(tvb, *offset); |
15000 | 0 | if (valid_to == 0xFFFFFFFF) { |
15001 | 0 | 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)"); |
15002 | 0 | } |
15003 | 0 | else { |
15004 | 0 | valid_to_time.secs = valid_from_time.secs + valid_to; |
15005 | 0 | valid_to_time.nsecs = 0; |
15006 | 0 | proto_tree_add_time(tree, hf_zbee_zcl_ke_cert_valid_to, tvb, *offset, 4, &valid_to_time); |
15007 | 0 | } |
15008 | 0 | *offset += 4; |
15009 | |
|
15010 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_subject, tvb, *offset, 8, ENC_NA); |
15011 | 0 | *offset += 8; |
15012 | |
|
15013 | 0 | key_usage = tvb_get_uint8(tvb, *offset); |
15014 | 0 | usage_tree = proto_tree_add_subtree_format(tree, tvb, *offset, 1, ett_zbee_zcl_ke_key_usage, NULL, "Key Usage (0x%02x)", key_usage); |
15015 | |
|
15016 | 0 | proto_tree_add_item(usage_tree, hf_zbee_zcl_ke_cert_key_usage_agreement, tvb, *offset, 1, ENC_NA); |
15017 | 0 | proto_tree_add_item(usage_tree, hf_zbee_zcl_ke_cert_key_usage_signature, tvb, *offset, 1, ENC_NA); |
15018 | 0 | *offset += 1; |
15019 | |
|
15020 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_cert_reconstr, tvb, *offset, 37, ENC_NA); |
15021 | 0 | *offset += 37; |
15022 | |
|
15023 | 0 | } /*dissect_zcl_ke_suite2_certificate*/ |
15024 | | |
15025 | | /** |
15026 | | *This function manages the Initiate Key Establishment message |
15027 | | * |
15028 | | *@param tvb pointer to buffer containing raw packet. |
15029 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15030 | | *@param offset pointer to offset from caller |
15031 | | */ |
15032 | | static void |
15033 | | dissect_zcl_ke_initiate(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15034 | 0 | { |
15035 | 0 | int rem_len; |
15036 | 0 | proto_tree *subtree; |
15037 | 0 | uint16_t suite; |
15038 | |
|
15039 | 0 | proto_tree_add_item_ret_uint16(tree, hf_zbee_zcl_ke_suite, tvb, *offset, 2, ENC_LITTLE_ENDIAN, &suite); |
15040 | 0 | *offset += 2; |
15041 | |
|
15042 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_ephemeral_time, tvb, *offset, 1, ENC_NA); |
15043 | 0 | *offset += 1; |
15044 | |
|
15045 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_confirm_time, tvb, *offset, 1, ENC_NA); |
15046 | 0 | *offset += 1; |
15047 | |
|
15048 | 0 | rem_len = tvb_reported_length_remaining(tvb, *offset); |
15049 | 0 | subtree = proto_tree_add_subtree(tree, tvb, *offset, rem_len, ett_zbee_zcl_ke_cert, NULL, "Implicit Certificate"); |
15050 | |
|
15051 | 0 | switch (suite) { |
15052 | 0 | case ZBEE_ZCL_KE_SUITE_1: |
15053 | 0 | dissect_zcl_ke_suite1_certificate(tvb, subtree, offset); |
15054 | 0 | break; |
15055 | | |
15056 | 0 | case ZBEE_ZCL_KE_SUITE_2: |
15057 | 0 | dissect_zcl_ke_suite2_certificate(tvb, subtree, offset); |
15058 | 0 | break; |
15059 | | |
15060 | 0 | default: |
15061 | 0 | break; |
15062 | 0 | } |
15063 | 0 | } /* dissect_zcl_ke_initiate */ |
15064 | | |
15065 | | /** |
15066 | | *This function dissects the Ephemeral Data QEU |
15067 | | * |
15068 | | *@param tvb pointer to buffer containing raw packet. |
15069 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15070 | | *@param offset pointer to offset from caller |
15071 | | */ |
15072 | | static int |
15073 | | dissect_zcl_ke_ephemeral_qeu(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15074 | 0 | { |
15075 | 0 | int length; |
15076 | | |
15077 | | /* size depends on suite but without a session we don't know that here */ |
15078 | | /* so just report what we have */ |
15079 | 0 | length = tvb_reported_length_remaining(tvb, *offset); |
15080 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_ephemeral_qeu, tvb, *offset, length, ENC_NA); |
15081 | 0 | *offset += length; |
15082 | 0 | return tvb_captured_length(tvb); |
15083 | 0 | } |
15084 | | |
15085 | | /** |
15086 | | *This function dissects the Ephemeral Data QEV |
15087 | | * |
15088 | | *@param tvb pointer to buffer containing raw packet. |
15089 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15090 | | *@param offset pointer to offset from caller |
15091 | | */ |
15092 | | static int |
15093 | | dissect_zcl_ke_ephemeral_qev(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15094 | 0 | { |
15095 | 0 | int length; |
15096 | | |
15097 | | /* size depends on suite but without a session we don't know that here */ |
15098 | | /* so just report what we have */ |
15099 | 0 | length = tvb_reported_length_remaining(tvb, *offset); |
15100 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_ephemeral_qev, tvb, *offset, length, ENC_NA); |
15101 | 0 | *offset += length; |
15102 | 0 | return tvb_captured_length(tvb); |
15103 | 0 | } |
15104 | | |
15105 | | /** |
15106 | | *This function dissects the Confirm MACU |
15107 | | * |
15108 | | *@param tvb pointer to buffer containing raw packet. |
15109 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15110 | | *@param offset pointer to offset from caller |
15111 | | */ |
15112 | | static int |
15113 | | dissect_zcl_ke_confirm_macu(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15114 | 0 | { |
15115 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_macu, tvb, *offset, ZBEE_SEC_CONST_BLOCKSIZE, ENC_NA); |
15116 | 0 | *offset += ZBEE_SEC_CONST_BLOCKSIZE; |
15117 | 0 | return tvb_captured_length(tvb); |
15118 | 0 | } |
15119 | | |
15120 | | /** |
15121 | | *This function dissects the Confirm MACV |
15122 | | * |
15123 | | *@param tvb pointer to buffer containing raw packet. |
15124 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15125 | | *@param offset pointer to offset from caller |
15126 | | */ |
15127 | | static int |
15128 | | dissect_zcl_ke_confirm_macv(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15129 | 0 | { |
15130 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_macv, tvb, *offset, ZBEE_SEC_CONST_BLOCKSIZE, ENC_NA); |
15131 | 0 | *offset += ZBEE_SEC_CONST_BLOCKSIZE; |
15132 | 0 | return tvb_captured_length(tvb); |
15133 | 0 | } |
15134 | | |
15135 | | /** |
15136 | | *This function dissects the Terminate Key Establishment message |
15137 | | * |
15138 | | *@param tvb pointer to buffer containing raw packet. |
15139 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15140 | | *@param offset pointer to offset from caller |
15141 | | */ |
15142 | | static void |
15143 | | dissect_zcl_ke_terminate(tvbuff_t *tvb, proto_tree *tree, unsigned *offset) |
15144 | 0 | { |
15145 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_status, tvb, *offset, 1, ENC_NA); |
15146 | 0 | *offset += 1; |
15147 | |
|
15148 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_wait_time, tvb, *offset, 1, ENC_NA); |
15149 | 0 | *offset += 1; |
15150 | |
|
15151 | 0 | proto_tree_add_item(tree, hf_zbee_zcl_ke_suite, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
15152 | 0 | *offset += 2; |
15153 | 0 | } |
15154 | | |
15155 | | /** |
15156 | | *ZigBee ZCL Key Establishment cluster dissector for wireshark. |
15157 | | * |
15158 | | *@param tvb pointer to buffer containing raw packet. |
15159 | | *@param pinfo pointer to packet information fields |
15160 | | *@param tree pointer to data tree Wireshark uses to display packet. |
15161 | | */ |
15162 | | static int |
15163 | | dissect_zbee_zcl_ke(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) |
15164 | 1 | { |
15165 | 1 | zbee_zcl_packet *zcl; |
15166 | 1 | unsigned offset = 0; |
15167 | 1 | uint8_t cmd_id; |
15168 | 1 | int rem_len; |
15169 | | |
15170 | | /* Reject the packet if data is NULL */ |
15171 | 1 | if (data == NULL) |
15172 | 0 | return 0; |
15173 | 1 | zcl = (zbee_zcl_packet *)data; |
15174 | 1 | cmd_id = zcl->cmd_id; |
15175 | | |
15176 | | /* Create a subtree for the ZCL Command frame, and add the command ID to it. */ |
15177 | 1 | if (zcl->direction == ZBEE_ZCL_FCF_TO_SERVER) { |
15178 | | /* Append the command name to the info column. */ |
15179 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
15180 | 0 | val_to_str_const(cmd_id, zbee_zcl_ke_srv_rx_cmd_names, "Unknown Command"), |
15181 | 0 | zcl->tran_seqno); |
15182 | | |
15183 | | /* Add the command ID. */ |
15184 | 0 | proto_tree_add_uint(tree, hf_zbee_zcl_ke_srv_rx_cmd_id, tvb, offset, 1, cmd_id); |
15185 | | |
15186 | | /* Check is this command has a payload, than add the payload tree */ |
15187 | 0 | rem_len = tvb_reported_length_remaining(tvb, offset); |
15188 | 0 | offset += 1; /* delay from last add_item */ |
15189 | 0 | if (rem_len > 0) { |
15190 | | |
15191 | | /* Call the appropriate command dissector */ |
15192 | 0 | switch (cmd_id) { |
15193 | 0 | case ZBEE_ZCL_CMD_ID_KE_INITIATE_REQ: |
15194 | 0 | dissect_zcl_ke_initiate(tvb, tree, &offset); |
15195 | 0 | break; |
15196 | | |
15197 | 0 | case ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_REQ: |
15198 | 0 | return dissect_zcl_ke_ephemeral_qeu(tvb, tree, &offset); |
15199 | | |
15200 | 0 | case ZBEE_ZCL_CMD_ID_KE_CONFIRM_REQ: |
15201 | 0 | return dissect_zcl_ke_confirm_macu(tvb, tree, &offset); |
15202 | | |
15203 | 0 | case ZBEE_ZCL_CMD_ID_KE_CLNT_TERMINATE: |
15204 | 0 | dissect_zcl_ke_terminate(tvb, tree, &offset); |
15205 | 0 | break; |
15206 | | |
15207 | 0 | default: |
15208 | 0 | break; |
15209 | 0 | } |
15210 | 0 | } |
15211 | 0 | } |
15212 | 1 | else { /* ZBEE_ZCL_FCF_TO_CLIENT */ |
15213 | | /* Append the command name to the info column. */ |
15214 | 1 | col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", |
15215 | 1 | val_to_str_const(cmd_id, zbee_zcl_ke_srv_tx_cmd_names, "Unknown Command"), |
15216 | 1 | zcl->tran_seqno); |
15217 | | |
15218 | | /* Add the command ID. */ |
15219 | 1 | proto_tree_add_uint(tree, hf_zbee_zcl_ke_srv_tx_cmd_id, tvb, offset, 1, cmd_id); |
15220 | | |
15221 | | /* Check is this command has a payload, than add the payload tree */ |
15222 | 1 | rem_len = tvb_reported_length_remaining(tvb, ++offset); |
15223 | 1 | if (rem_len > 0) { |
15224 | | /* Call the appropriate command dissector */ |
15225 | 1 | switch (cmd_id) { |
15226 | 0 | case ZBEE_ZCL_CMD_ID_KE_INITIATE_RSP: |
15227 | 0 | dissect_zcl_ke_initiate(tvb, tree, &offset); |
15228 | 0 | break; |
15229 | | |
15230 | 0 | case ZBEE_ZCL_CMD_ID_KE_EPHEMERAL_RSP: |
15231 | 0 | return dissect_zcl_ke_ephemeral_qev(tvb, tree, &offset); |
15232 | | |
15233 | 0 | case ZBEE_ZCL_CMD_ID_KE_CONFIRM_RSP: |
15234 | 0 | return dissect_zcl_ke_confirm_macv(tvb, tree, &offset); |
15235 | | |
15236 | 0 | case ZBEE_ZCL_CMD_ID_KE_SRV_TERMINATE: |
15237 | 0 | dissect_zcl_ke_terminate(tvb, tree, &offset); |
15238 | 0 | break; |
15239 | | |
15240 | 1 | default: |
15241 | 1 | break; |
15242 | 1 | } |
15243 | 1 | } |
15244 | 1 | } |
15245 | | |
15246 | 1 | return tvb_captured_length(tvb); |
15247 | 1 | } /*dissect_zbee_zcl_ke*/ |
15248 | | |
15249 | | |
15250 | | /** |
15251 | | *This function registers the ZCL Key Establishment dissector |
15252 | | * |
15253 | | */ |
15254 | | void |
15255 | | proto_register_zbee_zcl_ke(void) |
15256 | 15 | { |
15257 | 15 | static hf_register_info hf[] = { |
15258 | | |
15259 | 15 | { &hf_zbee_zcl_ke_attr_id, |
15260 | 15 | { "Attribute", "zbee_zcl_se.ke.attr_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_ke_attr_names), |
15261 | 15 | 0x00, NULL, HFILL } }, |
15262 | | |
15263 | | /* Server and client attributes are the same but should of cause be put in the correct field */ |
15264 | 15 | { &hf_zbee_zcl_ke_attr_client_id, |
15265 | 15 | { "Attribute", "zbee_zcl_se.ke.attr_client_id", FT_UINT16, BASE_HEX, VALS(zbee_zcl_ke_attr_names), |
15266 | 15 | 0x00, NULL, HFILL } }, |
15267 | | |
15268 | 15 | { &hf_zbee_zcl_ke_srv_tx_cmd_id, |
15269 | 15 | { "Command", "zbee_zcl_se.ke.cmd.srv_tx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_srv_tx_cmd_names), |
15270 | 15 | 0x00, NULL, HFILL } }, |
15271 | | |
15272 | 15 | { &hf_zbee_zcl_ke_srv_rx_cmd_id, |
15273 | 15 | { "Command", "zbee_zcl_se.ke.cmd.srv_rx.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_srv_rx_cmd_names), |
15274 | 15 | 0x00, NULL, HFILL } }, |
15275 | | |
15276 | 15 | { &hf_zbee_zcl_ke_suite, |
15277 | 15 | { "Key Establishment Suite", "zbee_zcl_se.ke.attr.suite", FT_UINT16, BASE_HEX, VALS(zbee_zcl_ke_suite_names), |
15278 | 15 | 0x00, NULL, HFILL } }, |
15279 | | |
15280 | 15 | { &hf_zbee_zcl_ke_ephemeral_time, |
15281 | 15 | { "Ephemeral Data Generate Time", "zbee_zcl_se.ke.init.ephemeral.time", FT_UINT8, BASE_DEC, NULL, |
15282 | 15 | 0, NULL, HFILL } }, |
15283 | | |
15284 | 15 | { &hf_zbee_zcl_ke_confirm_time, |
15285 | 15 | { "Confirm Key Generate Time", "zbee_zcl_se.ke.init.confirm.time", FT_UINT8, BASE_DEC, NULL, |
15286 | 15 | 0, NULL, HFILL } }, |
15287 | | |
15288 | 15 | { &hf_zbee_zcl_ke_status, |
15289 | 15 | { "Status", "zbee_zcl_se.ke.terminate.status", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_status_names), |
15290 | 15 | 0x00, NULL, HFILL } }, |
15291 | | |
15292 | 15 | { &hf_zbee_zcl_ke_wait_time, |
15293 | 15 | { "Wait Time", "zbee_zcl_se.ke.terminate.wait.time", FT_UINT8, BASE_DEC, NULL, |
15294 | 15 | 0, NULL, HFILL } }, |
15295 | | |
15296 | 15 | { &hf_zbee_zcl_ke_cert_reconstr, |
15297 | 15 | { "Public Key", "zbee_zcl_se.ke.cert.reconst", FT_BYTES, BASE_NONE, NULL, |
15298 | 15 | 0, NULL, HFILL } }, |
15299 | | |
15300 | 15 | { &hf_zbee_zcl_ke_cert_subject, |
15301 | 15 | { "Subject", "zbee_zcl_se.ke.cert.subject", FT_BYTES, BASE_NONE, NULL, |
15302 | 15 | 0, NULL, HFILL } }, |
15303 | | |
15304 | 15 | { &hf_zbee_zcl_ke_cert_issuer, |
15305 | 15 | { "Issuer", "zbee_zcl_se.ke.cert.issuer", FT_BYTES, BASE_NONE, NULL, |
15306 | 15 | 0, NULL, HFILL } }, |
15307 | | |
15308 | 15 | { &hf_zbee_zcl_ke_cert_profile_attr, |
15309 | 15 | { "Profile Attribute Data", "zbee_zcl_se.ke.cert.profile", FT_BYTES, BASE_NONE, NULL, |
15310 | 15 | 0, NULL, HFILL } }, |
15311 | | |
15312 | 15 | { &hf_zbee_zcl_ke_cert_type, |
15313 | 15 | { "Type", "zbee_zcl_se.ke.cert.type", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_type_names), |
15314 | 15 | 0, NULL, HFILL } }, |
15315 | | |
15316 | 15 | { &hf_zbee_zcl_ke_cert_serialno, |
15317 | 15 | { "Serial No", "zbee_zcl_se.ke.cert.serialno", FT_UINT64, BASE_HEX, NULL, |
15318 | 15 | 0, NULL, HFILL } }, |
15319 | | |
15320 | 15 | { &hf_zbee_zcl_ke_cert_curve, |
15321 | 15 | { "Curve", "zbee_zcl_se.ke.cert.curve", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_curve_names), |
15322 | 15 | 0, NULL, HFILL } }, |
15323 | | |
15324 | 15 | { &hf_zbee_zcl_ke_cert_hash, |
15325 | 15 | { "Hash", "zbee_zcl_se.ke.cert.hash", FT_UINT8, BASE_HEX, VALS(zbee_zcl_ke_hash_names), |
15326 | 15 | 0, NULL, HFILL } }, |
15327 | | |
15328 | 15 | { &hf_zbee_zcl_ke_cert_valid_from, |
15329 | 15 | { "Valid From", "zbee_zcl_se.ke.cert.valid.from", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
15330 | 15 | 0, NULL, HFILL } }, |
15331 | | |
15332 | 15 | { &hf_zbee_zcl_ke_cert_valid_to, |
15333 | 15 | { "Valid To", "zbee_zcl_se.ke.cert.valid.to", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, |
15334 | 15 | 0, NULL, HFILL } }, |
15335 | | |
15336 | 15 | { &hf_zbee_zcl_ke_cert_key_usage_agreement, |
15337 | 15 | { "Key Agreement", "zbee_zcl_se.ke.cert.key.usage.agreement", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), |
15338 | 15 | ZBEE_ZCL_KE_USAGE_KEY_AGREEMENT, NULL, HFILL }}, |
15339 | | |
15340 | 15 | { &hf_zbee_zcl_ke_cert_key_usage_signature, |
15341 | 15 | { "Digital Signature", "zbee_zcl_se.ke.cert.key.usage.signature", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), |
15342 | 15 | ZBEE_ZCL_KE_USAGE_DIGITAL_SIGNATURE, NULL, HFILL }}, |
15343 | | |
15344 | 15 | { &hf_zbee_zcl_ke_ephemeral_qeu, |
15345 | 15 | { "Ephemeral Data (QEU)", "zbee_zcl_se.ke.qeu", FT_BYTES, BASE_NONE, NULL, |
15346 | 15 | 0, NULL, HFILL } }, |
15347 | | |
15348 | 15 | { &hf_zbee_zcl_ke_ephemeral_qev, |
15349 | 15 | { "Ephemeral Data (QEV)", "zbee_zcl_se.ke.qev", FT_BYTES, BASE_NONE, NULL, |
15350 | 15 | 0, NULL, HFILL } }, |
15351 | | |
15352 | 15 | { &hf_zbee_zcl_ke_macu, |
15353 | 15 | { "Message Authentication Code (MACU)", "zbee_zcl_se.ke.macu", FT_BYTES, BASE_NONE, NULL, |
15354 | 15 | 0, NULL, HFILL } }, |
15355 | | |
15356 | 15 | { &hf_zbee_zcl_ke_macv, |
15357 | 15 | { "Message Authentication Code (MACV)", "zbee_zcl_se.ke.macv", FT_BYTES, BASE_NONE, NULL, |
15358 | 15 | 0, NULL, HFILL } }, |
15359 | 15 | }; |
15360 | | |
15361 | | /* subtrees */ |
15362 | 15 | int *ett[] = { |
15363 | 15 | &ett_zbee_zcl_ke, |
15364 | 15 | &ett_zbee_zcl_ke_cert, |
15365 | 15 | &ett_zbee_zcl_ke_key_usage, |
15366 | 15 | }; |
15367 | | |
15368 | | /* Register the ZigBee ZCL Key Establishment cluster protocol name and description */ |
15369 | 15 | proto_zbee_zcl_ke = proto_register_protocol("ZigBee ZCL Key Establishment", "ZCL Key Establishment", ZBEE_PROTOABBREV_ZCL_KE); |
15370 | 15 | proto_register_field_array(proto_zbee_zcl_ke, hf, array_length(hf)); |
15371 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
15372 | | |
15373 | | /* Register the ZigBee ZCL Key Establishment dissector. */ |
15374 | 15 | register_dissector(ZBEE_PROTOABBREV_ZCL_KE, dissect_zbee_zcl_ke, proto_zbee_zcl_ke); |
15375 | 15 | } /*proto_register_zbee_zcl_ke*/ |
15376 | | |
15377 | | /** |
15378 | | *Hands off the ZCL Key Establishment dissector. |
15379 | | * |
15380 | | */ |
15381 | | void |
15382 | | proto_reg_handoff_zbee_zcl_ke(void) |
15383 | 15 | { |
15384 | 15 | zbee_zcl_init_cluster( ZBEE_PROTOABBREV_ZCL_KE, |
15385 | 15 | proto_zbee_zcl_ke, |
15386 | 15 | ett_zbee_zcl_ke, |
15387 | 15 | ZBEE_ZCL_CID_KE, |
15388 | 15 | ZBEE_MFG_CODE_NONE, |
15389 | 15 | hf_zbee_zcl_ke_attr_id, |
15390 | 15 | hf_zbee_zcl_ke_attr_client_id, |
15391 | 15 | hf_zbee_zcl_ke_srv_rx_cmd_id, |
15392 | 15 | hf_zbee_zcl_ke_srv_tx_cmd_id, |
15393 | | NULL |
15394 | 15 | ); |
15395 | 15 | } /*proto_reg_handoff_zbee_zcl_ke*/ |
15396 | | |
15397 | | /* |
15398 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
15399 | | * |
15400 | | * Local variables: |
15401 | | * c-basic-offset: 4 |
15402 | | * tab-width: 8 |
15403 | | * indent-tabs-mode: nil |
15404 | | * End: |
15405 | | * |
15406 | | * vi: set shiftwidth=4 tabstop=8 expandtab: |
15407 | | * :indentSize=4:tabSize=8:noTabs=true: |
15408 | | */ |