2 * Routines for Bluetooth mesh dissection
4 * Copyright 2017, Anders Broman <anders.broman@ericsson.com>
5 * Copyright 2019-2021, Piotr Winiarczyk <wino45@gmail.com>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
13 * Ref: Mesh Profile v1.0
17 #include "packet-bluetooth.h"
18 #include "packet-btatt.h"
19 #include "packet-btmesh.h"
21 #include <epan/packet.h>
22 #include <epan/prefs.h>
23 #include <wsutil/wsgcrypt.h>
24 #include <epan/expert.h>
27 #include <epan/reassemble.h>
28 #include <epan/to_str.h>
30 #include <epan/unit_strings.h>
32 #define BTMESH_NOT_USED 0
33 #define BTMESH_KEY_ENTRY_VALID 4
34 #define BTMESH_DEVICE_KEY_ENTRY_VALID 2
35 #define BTMESH_LABEL_UUID_ENTRY_VALID 1
36 #define NO_LABEL_UUID_IDX_USED -1
37 #define PROPERTY_LENGTH_NO_HINT -1
39 #define SENSOR_CADENCE_TRIGGER_TYPE_PROPERTY 0
40 #define SENSOR_CADENCE_TRIGGER_TYPE_PERCENTAGE 1
42 #define MPID_FORMAT_A 0
43 #define MPID_FORMAT_B 1
45 #define DISSECTOR_SIMPLE 0
46 #define DISSECTOR_THREE_VALUES 1
48 #define NOT_SUPPORTED_PROPERTY 0
49 #define NOT_SUPPORTED_CHARACTERISTIC -1
51 #define CONFIG_APPKEY_ADD 0x0000
52 #define CONFIG_APPKEY_UPDATE 0x0001
53 #define CONFIG_COMPOSITION_DATA_STATUS 0x0002
54 #define CONFIG_MODEL_PUBLICATION_SET 0x0003
55 #define HEALTH_CURRENT_STATUS 0x0004
56 #define HEALTH_FAULT_STATUS 0x0005
57 #define CONFIG_HEARTBEAT_PUBLICATION_STATUS 0x0006
58 #define LIGHT_LC_PROPERTY_SET 0x0062
59 #define LIGHT_LC_PROPERTY_SET_UNACKNOWLEDGED 0x0063
60 #define LIGHT_LC_PROPERTY_STATUS 0x0064
61 #define CONFIG_APPKEY_DELETE 0x8000
62 #define CONFIG_APPKEY_GET 0x8001
63 #define CONFIG_APPKEY_LIST 0x8002
64 #define CONFIG_APPKEY_STATUS 0x8003
65 #define HEALTH_ATTENTION_GET 0x8004
66 #define HEALTH_ATTENTION_SET 0x8005
67 #define HEALTH_ATTENTION_SET_UNACKNOWLEDGED 0x8006
68 #define HEALTH_ATTENTION_STATUS 0x8007
69 #define CONFIG_COMPOSITION_DATA_GET 0x8008
70 #define CONFIG_BEACON_GET 0x8009
71 #define CONFIG_BEACON_SET 0x800a
72 #define CONFIG_BEACON_STATUS 0x800b
73 #define CONFIG_DEFAULT_TTL_GET 0x800c
74 #define CONFIG_DEFAULT_TTL_SET 0x800d
75 #define CONFIG_DEFAULT_TTL_STATUS 0x800e
76 #define CONFIG_FRIEND_GET 0x800f
77 #define CONFIG_FRIEND_SET 0x8010
78 #define CONFIG_FRIEND_STATUS 0x8011
79 #define CONFIG_GATT_PROXY_GET 0x8012
80 #define CONFIG_GATT_PROXY_SET 0x8013
81 #define CONFIG_GATT_PROXY_STATUS 0x8014
82 #define CONFIG_KEY_REFRESH_PHASE_GET 0x8015
83 #define CONFIG_KEY_REFRESH_PHASE_SET 0x8016
84 #define CONFIG_KEY_REFRESH_PHASE_STATUS 0x8017
85 #define CONFIG_MODEL_PUBLICATION_GET 0x8018
86 #define CONFIG_MODEL_PUBLICATION_STATUS 0x8019
87 #define CONFIG_MODEL_PUBLICATION_VIRTUAL_ADDRESS_SET 0x801a
88 #define CONFIG_MODEL_SUBSCRIPTION_ADD 0x801b
89 #define CONFIG_MODEL_SUBSCRIPTION_DELETE 0x801c
90 #define CONFIG_MODEL_SUBSCRIPTION_DELETE_ALL 0x801d
91 #define CONFIG_MODEL_SUBSCRIPTION_OVERWRITE 0x801e
92 #define CONFIG_MODEL_SUBSCRIPTION_STATUS 0x801f
93 #define CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_ADD 0x8020
94 #define CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_DELETE 0x8021
95 #define CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_OVERWRITE 0x8022
96 #define CONFIG_NETWORK_TRANSMIT_GET 0x8023
97 #define CONFIG_NETWORK_TRANSMIT_SET 0x8024
98 #define CONFIG_NETWORK_TRANSMIT_STATUS 0x8025
99 #define CONFIG_RELAY_GET 0x8026
100 #define CONFIG_RELAY_SET 0x8027
101 #define CONFIG_RELAY_STATUS 0x8028
102 #define CONFIG_SIG_MODEL_SUBSCRIPTION_GET 0x8029
103 #define CONFIG_SIG_MODEL_SUBSCRIPTION_LIST 0x802a
104 #define CONFIG_VENDOR_MODEL_SUBSCRIPTION_GET 0x802b
105 #define CONFIG_VENDOR_MODEL_SUBSCRIPTION_LIST 0x802c
106 #define CONFIG_LOW_POWER_NODE_POLLTIMEOUT_GET 0x802d
107 #define CONFIG_LOW_POWER_NODE_POLLTIMEOUT_STATUS 0x802e
108 #define HEALTH_FAULT_CLEAR 0x802f
109 #define HEALTH_FAULT_CLEAR_UNACKNOWLEDGED 0x8030
110 #define HEALTH_FAULT_GET 0x8031
111 #define HEALTH_FAULT_TEST 0x8032
112 #define HEALTH_FAULT_TEST_UNACKNOWLEDGED 0x8033
113 #define HEALTH_PERIOD_GET 0x8034
114 #define HEALTH_PERIOD_SET 0x8035
115 #define HEALTH_PERIOD_SET_UNACKNOWLEDGED 0x8036
116 #define HEALTH_PERIOD_STATUS 0x8037
117 #define CONFIG_HEARTBEAT_PUBLICATION_GET 0x8038
118 #define CONFIG_HEARTBEAT_PUBLICATION_SET 0x8039
119 #define CONFIG_HEARTBEAT_SUBSCRIPTION_GET 0x803a
120 #define CONFIG_HEARTBEAT_SUBSCRIPTION_SET 0x803b
121 #define CONFIG_HEARTBEAT_SUBSCRIPTION_STATUS 0x803c
122 #define CONFIG_MODEL_APP_BIND 0x803d
123 #define CONFIG_MODEL_APP_STATUS 0x803e
124 #define CONFIG_MODEL_APP_UNBIND 0x803f
125 #define CONFIG_NETKEY_ADD 0x8040
126 #define CONFIG_NETKEY_DELETE 0x8041
127 #define CONFIG_NETKEY_GET 0x8042
128 #define CONFIG_NETKEY_LIST 0x8043
129 #define CONFIG_NETKEY_STATUS 0x8044
130 #define CONFIG_NETKEY_UPDATE 0x8045
131 #define CONFIG_NODE_IDENTITY_GET 0x8046
132 #define CONFIG_NODE_IDENTITY_SET 0x8047
133 #define CONFIG_NODE_IDENTITY_STATUS 0x8048
134 #define CONFIG_NODE_RESET 0x8049
135 #define CONFIG_NODE_RESET_STATUS 0x804a
136 #define CONFIG_SIG_MODEL_APP_GET 0x804b
137 #define CONFIG_SIG_MODEL_APP_LIST 0x804c
138 #define CONFIG_VENDOR_MODEL_APP_GET 0x804d
139 #define CONFIG_VENDOR_MODEL_APP_LIST 0x804e
140 #define GENERIC_LOCATION_GLOBAL_STATUS 0x0040
141 #define GENERIC_LOCATION_GLOBAL_SET 0x0041
142 #define GENERIC_LOCATION_GLOBAL_SET_UNACKNOWLEDGED 0x0042
143 #define GENERIC_ONOFF_GET 0x8201
144 #define GENERIC_ONOFF_SET 0x8202
145 #define GENERIC_ONOFF_SET_UNACKNOWLEDGED 0x8203
146 #define GENERIC_ONOFF_STATUS 0x8204
147 #define GENERIC_LEVEL_GET 0x8205
148 #define GENERIC_LEVEL_SET 0x8206
149 #define GENERIC_LEVEL_SET_UNACKNOWLEDGED 0x8207
150 #define GENERIC_LEVEL_STATUS 0x8208
151 #define GENERIC_DELTA_SET 0x8209
152 #define GENERIC_DELTA_SET_UNACKNOWLEDGED 0x820a
153 #define GENERIC_MOVE_SET 0x820b
154 #define GENERIC_MOVE_SET_UNACKNOWLEDGED 0x820c
155 #define GENERIC_DEFAULT_TRANSITION_TIME_GET 0x820d
156 #define GENERIC_DEFAULT_TRANSITION_TIME_SET 0x820e
157 #define GENERIC_DEFAULT_TRANSITION_TIME_SET_UNACKNOWLEDGED 0x820f
158 #define GENERIC_DEFAULT_TRANSITION_TIME_STATUS 0x8210
159 #define GENERIC_ONPOWERUP_GET 0x8211
160 #define GENERIC_ONPOWERUP_STATUS 0x8212
161 #define GENERIC_ONPOWERUP_SET 0x8213
162 #define GENERIC_ONPOWERUP_SET_UNACKNOWLEDGED 0x8214
163 #define GENERIC_POWER_LEVEL_GET 0x8215
164 #define GENERIC_POWER_LEVEL_SET 0x8216
165 #define GENERIC_POWER_LEVEL_SET_UNACKNOWLEDGED 0x8217
166 #define GENERIC_POWER_LEVEL_STATUS 0x8218
167 #define GENERIC_POWER_LAST_GET 0x8219
168 #define GENERIC_POWER_LAST_STATUS 0x821a
169 #define GENERIC_POWER_DEFAULT_GET 0x821b
170 #define GENERIC_POWER_DEFAULT_STATUS 0x821c
171 #define GENERIC_POWER_RANGE_GET 0x821d
172 #define GENERIC_POWER_RANGE_STATUS 0x821e
173 #define GENERIC_POWER_DEFAULT_SET 0x821f
174 #define GENERIC_POWER_DEFAULT_SET_UNACKNOWLEDGED 0x8220
175 #define GENERIC_POWER_RANGE_SET 0x8221
176 #define GENERIC_POWER_RANGE_SET_UNACKNOWLEDGED 0x8222
177 #define GENERIC_BATTERY_GET 0x8223
178 #define GENERIC_BATTERY_STATUS 0x8224
179 #define GENERIC_LOCATION_GLOBAL_GET 0x8225
180 #define GENERIC_LOCATION_LOCAL_GET 0x8226
181 #define GENERIC_LOCATION_LOCAL_STATUS 0x8227
182 #define GENERIC_LOCATION_LOCAL_SET 0x8228
183 #define GENERIC_LOCATION_LOCAL_SET_UNACKNOWLEDGED 0x8229
184 #define SCENE_STATUS 0x005e
185 #define SCENE_GET 0x8241
186 #define SCENE_RECALL 0x8242
187 #define SCENE_RECALL_UNACKNOWLEDGED 0x8243
188 #define SCENE_REGISTER_GET 0x8244
189 #define SCENE_REGISTER_STATUS 0x8245
190 #define SCENE_STORE 0x8246
191 #define SCENE_STORE_UNACKNOWLEDGED 0x8247
192 #define SCENE_DELETE 0x829e
193 #define SCENE_DELETE_UNACKNOWLEDGED 0x829f
194 #define TIME_SET 0x005c
195 #define TIME_STATUS 0x005d
196 #define SCHEDULER_ACTION_STATUS 0x005f
197 #define SCHEDULER_ACTION_SET 0x0060
198 #define SCHEDULER_ACTION_SET_UNACKNOWLEDGED 0x0061
199 #define TIME_GET 0x8237
200 #define TIME_ROLE_GET 0x8238
201 #define TIME_ROLE_SET 0x8239
202 #define TIME_ROLE_STATUS 0x823a
203 #define TIME_ZONE_GET 0x823b
204 #define TIME_ZONE_SET 0x823c
205 #define TIME_ZONE_STATUS 0x823d
206 #define TAI_UTC_DELTA_GET 0x823e
207 #define TAI_UTC_DELTA_SET 0x823f
208 #define TAI_UTC_DELTA_STATUS 0x8240
209 #define SCHEDULER_ACTION_GET 0x8248
210 #define SCHEDULER_GET 0x8249
211 #define SCHEDULER_STATUS 0x824a
213 #define GENERIC_MANUFACTURER_PROPERTIES_STATUS 0x0043
214 #define GENERIC_MANUFACTURER_PROPERTY_SET 0x0044
215 #define GENERIC_MANUFACTURER_PROPERTY_SET_UNACKNOWLEDGED 0x0045
216 #define GENERIC_MANUFACTURER_PROPERTY_STATUS 0x0046
217 #define GENERIC_ADMIN_PROPERTIES_STATUS 0x0047
218 #define GENERIC_ADMIN_PROPERTY_SET 0x0048
219 #define GENERIC_ADMIN_PROPERTY_SET_UNACKNOWLEDGED 0x0049
220 #define GENERIC_ADMIN_PROPERTY_STATUS 0x004a
221 #define GENERIC_USER_PROPERTIES_STATUS 0x004b
222 #define GENERIC_USER_PROPERTY_SET 0x004c
223 #define GENERIC_USER_PROPERTY_SET_UNACKNOWLEDGED 0x004d
224 #define GENERIC_USER_PROPERTY_STATUS 0x004e
225 #define GENERIC_CLIENT_PROPERTIES_GET 0x004f
226 #define GENERIC_CLIENT_PROPERTIES_STATUS 0x0050
228 #define SENSOR_DESCRIPTOR_STATUS 0x0051
229 #define SENSOR_STATUS 0x0052
230 #define SENSOR_COLUMN_STATUS 0x0053
231 #define SENSOR_SERIES_STATUS 0x0054
232 #define SENSOR_CADENCE_SET 0x0055
233 #define SENSOR_CADENCE_SET_UNACKNOWLEDGED 0x0056
234 #define SENSOR_CADENCE_STATUS 0x0057
235 #define SENSOR_SETTINGS_STATUS 0x0058
236 #define SENSOR_SETTING_SET 0x0059
237 #define SENSOR_SETTING_SET_UNACKNOWLEDGED 0x005a
238 #define SENSOR_SETTING_STATUS 0x005b
239 #define GENERIC_MANUFACTURER_PROPERTIES_GET 0x822a
240 #define GENERIC_MANUFACTURER_PROPERTY_GET 0x822b
241 #define GENERIC_ADMIN_PROPERTIES_GET 0x822c
242 #define GENERIC_ADMIN_PROPERTY_GET 0x822d
243 #define GENERIC_USER_PROPERTIES_GET 0x822e
244 #define GENERIC_USER_PROPERTY_GET 0x822f
245 #define SENSOR_DESCRIPTOR_GET 0x8230
246 #define SENSOR_GET 0x8231
247 #define SENSOR_COLUMN_GET 0x8232
248 #define SENSOR_SERIES_GET 0x8233
249 #define SENSOR_CADENCE_GET 0x8234
250 #define SENSOR_SETTINGS_GET 0x8235
251 #define SENSOR_SETTING_GET 0x8236
253 #define LIGHT_LIGHTNESS_GET 0x824b
254 #define LIGHT_LIGHTNESS_SET 0x824c
255 #define LIGHT_LIGHTNESS_SET_UNACKNOWLEDGED 0x824d
256 #define LIGHT_LIGHTNESS_STATUS 0x824e
257 #define LIGHT_LIGHTNESS_LINEAR_GET 0x824f
258 #define LIGHT_LIGHTNESS_LINEAR_SET 0x8250
259 #define LIGHT_LIGHTNESS_LINEAR_SET_UNACKNOWLEDGED 0x8251
260 #define LIGHT_LIGHTNESS_LINEAR_STATUS 0x8252
261 #define LIGHT_LIGHTNESS_LAST_GET 0x8253
262 #define LIGHT_LIGHTNESS_LAST_STATUS 0x8254
263 #define LIGHT_LIGHTNESS_DEFAULT_GET 0x8255
264 #define LIGHT_LIGHTNESS_DEFAULT_STATUS 0x8256
265 #define LIGHT_LIGHTNESS_RANGE_GET 0x8257
266 #define LIGHT_LIGHTNESS_RANGE_STATUS 0x8258
267 #define LIGHT_LIGHTNESS_DEFAULT_SET 0x8259
268 #define LIGHT_LIGHTNESS_DEFAULT_SET_UNACKNOWLEDGED 0x825a
269 #define LIGHT_LIGHTNESS_RANGE_SET 0x825b
270 #define LIGHT_LIGHTNESS_RANGE_SET_UNACKNOWLEDGED 0x825c
271 #define LIGHT_CTL_GET 0x825d
272 #define LIGHT_CTL_SET 0x825e
273 #define LIGHT_CTL_SET_UNACKNOWLEDGED 0x825f
274 #define LIGHT_CTL_STATUS 0x8260
275 #define LIGHT_CTL_TEMPERATURE_GET 0x8261
276 #define LIGHT_CTL_TEMPERATURE_RANGE_GET 0x8262
277 #define LIGHT_CTL_TEMPERATURE_RANGE_STATUS 0x8263
278 #define LIGHT_CTL_TEMPERATURE_SET 0x8264
279 #define LIGHT_CTL_TEMPERATURE_SET_UNACKNOWLEDGED 0x8265
280 #define LIGHT_CTL_TEMPERATURE_STATUS 0x8266
281 #define LIGHT_CTL_DEFAULT_GET 0x8267
282 #define LIGHT_CTL_DEFAULT_STATUS 0x8268
283 #define LIGHT_CTL_DEFAULT_SET 0x8269
284 #define LIGHT_CTL_DEFAULT_SET_UNACKNOWLEDGED 0x826a
285 #define LIGHT_CTL_TEMPERATURE_RANGE_SET 0x826b
286 #define LIGHT_CTL_TEMPERATURE_RANGE_SET_UNACKNOWLEDGED 0x826c
287 #define LIGHT_HSL_GET 0x826d
288 #define LIGHT_HSL_HUE_GET 0x826e
289 #define LIGHT_HSL_HUE_SET 0x826f
290 #define LIGHT_HSL_HUE_SET_UNACKNOWLEDGED 0x8270
291 #define LIGHT_HSL_HUE_STATUS 0x8271
292 #define LIGHT_HSL_SATURATION_GET 0x8272
293 #define LIGHT_HSL_SATURATION_SET 0x8273
294 #define LIGHT_HSL_SATURATION_SET_UNACKNOWLEDGED 0x8274
295 #define LIGHT_HSL_SATURATION_STATUS 0x8275
296 #define LIGHT_HSL_SET 0x8276
297 #define LIGHT_HSL_SET_UNACKNOWLEDGED 0x8277
298 #define LIGHT_HSL_STATUS 0x8278
299 #define LIGHT_HSL_TARGET_GET 0x8279
300 #define LIGHT_HSL_TARGET_STATUS 0x827a
301 #define LIGHT_HSL_DEFAULT_GET 0x827b
302 #define LIGHT_HSL_DEFAULT_STATUS 0x827c
303 #define LIGHT_HSL_RANGE_GET 0x827d
304 #define LIGHT_HSL_RANGE_STATUS 0x827e
305 #define LIGHT_HSL_DEFAULT_SET 0x827f
306 #define LIGHT_HSL_DEFAULT_SET_UNACKNOWLEDGED 0x8280
307 #define LIGHT_HSL_RANGE_SET 0x8281
308 #define LIGHT_HSL_RANGE_SET_UNACKNOWLEDGED 0x8282
309 #define LIGHT_XYL_GET 0x8283
310 #define LIGHT_XYL_SET 0x8284
311 #define LIGHT_XYL_SET_UNACKNOWLEDGED 0x8285
312 #define LIGHT_XYL_STATUS 0x8286
313 #define LIGHT_XYL_TARGET_GET 0x8287
314 #define LIGHT_XYL_TARGET_STATUS 0x8288
315 #define LIGHT_XYL_DEFAULT_GET 0x8289
316 #define LIGHT_XYL_DEFAULT_STATUS 0x828a
317 #define LIGHT_XYL_RANGE_GET 0x828b
318 #define LIGHT_XYL_RANGE_STATUS 0x828c
319 #define LIGHT_XYL_DEFAULT_SET 0x828d
320 #define LIGHT_XYL_DEFAULT_SET_UNACKNOWLEDGED 0x828e
321 #define LIGHT_XYL_RANGE_SET 0x828f
322 #define LIGHT_XYL_RANGE_SET_UNACKNOWLEDGED 0x8290
323 #define LIGHT_LC_MODE_GET 0x8291
324 #define LIGHT_LC_MODE_SET 0x8292
325 #define LIGHT_LC_MODE_SET_UNACKNOWLEDGED 0x8293
326 #define LIGHT_LC_MODE_STATUS 0x8294
327 #define LIGHT_LC_OM_GET 0x8295
328 #define LIGHT_LC_OM_SET 0x8296
329 #define LIGHT_LC_OM_SET_UNACKNOWLEDGED 0x8297
330 #define LIGHT_LC_OM_STATUS 0x8298
331 #define LIGHT_LC_LIGHT_ONOFF_GET 0x8299
332 #define LIGHT_LC_LIGHT_ONOFF_SET 0x829a
333 #define LIGHT_LC_LIGHT_ONOFF_SET_UNACKNOWLEDGED 0x829b
334 #define LIGHT_LC_LIGHT_ONOFF_STATUS 0x829c
335 #define LIGHT_LC_PROPERTY_GET 0x829d
337 #define PHONY_PROPERTY_PERCENTAGE_CHANGE_16 0xFFFF
338 #define PHONY_PROPERTY_INDEX 0xFFFE
339 #define PROPERTY_AVERAGE_AMBIENT_TEMPERATURE_IN_A_PERIOD_OF_DAY 0x0001
340 #define PROPERTY_AVERAGE_INPUT_CURRENT 0x0002
341 #define PROPERTY_AVERAGE_INPUT_VOLTAGE 0x0003
342 #define PROPERTY_AVERAGE_OUTPUT_CURRENT 0x0004
343 #define PROPERTY_AVERAGE_OUTPUT_VOLTAGE 0x0005
344 #define PROPERTY_CENTER_BEAM_INTENSITY_AT_FULL_POWER 0x0006
345 #define PROPERTY_CHROMATICITY_TOLERANCE 0x0007
346 #define PROPERTY_COLOR_RENDERING_INDEX_R9 0x0008
347 #define PROPERTY_COLOR_RENDERING_INDEX_RA 0x0009
348 #define PROPERTY_DEVICE_APPEARANCE 0x000A
349 #define PROPERTY_DEVICE_COUNTRY_OF_ORIGIN 0x000B
350 #define PROPERTY_DEVICE_DATE_OF_MANUFACTURE 0x000C
351 #define PROPERTY_DEVICE_ENERGY_USE_SINCE_TURN_ON 0x000D
352 #define PROPERTY_DEVICE_FIRMWARE_REVISION 0x000E
353 #define PROPERTY_DEVICE_GLOBAL_TRADE_ITEM_NUMBER 0x000F
354 #define PROPERTY_DEVICE_HARDWARE_REVISION 0x0010
355 #define PROPERTY_DEVICE_MANUFACTURER_NAME 0x0011
356 #define PROPERTY_DEVICE_MODEL_NUMBER 0x0012
357 #define PROPERTY_DEVICE_OPERATING_TEMPERATURE_RANGE_SPECIFICATION 0x0013
358 #define PROPERTY_DEVICE_OPERATING_TEMPERATURE_STATISTICAL_VALUES 0x0014
359 #define PROPERTY_DEVICE_OVER_TEMPERATURE_EVENT_STATISTICS 0x0015
360 #define PROPERTY_DEVICE_POWER_RANGE_SPECIFICATION 0x0016
361 #define PROPERTY_DEVICE_RUNTIME_SINCE_TURN_ON 0x0017
362 #define PROPERTY_DEVICE_RUNTIME_WARRANTY 0x0018
363 #define PROPERTY_DEVICE_SERIAL_NUMBER 0x0019
364 #define PROPERTY_DEVICE_SOFTWARE_REVISION 0x001A
365 #define PROPERTY_DEVICE_UNDER_TEMPERATURE_EVENT_STATISTICS 0x001B
366 #define PROPERTY_INDOOR_AMBIENT_TEMPERATURE_STATISTICAL_VALUES 0x001C
367 #define PROPERTY_INITIAL_CIE_1931_CHROMATICITY_COORDINATES 0x001D
368 #define PROPERTY_INITIAL_CORRELATED_COLOR_TEMPERATURE 0x001E
369 #define PROPERTY_INITIAL_LUMINOUS_FLUX 0x001F
370 #define PROPERTY_INITIAL_PLANCKIAN_DISTANCE 0x0020
371 #define PROPERTY_INPUT_CURRENT_RANGE_SPECIFICATION 0x0021
372 #define PROPERTY_INPUT_CURRENT_STATISTICS 0x0022
373 #define PROPERTY_INPUT_OVER_CURRENT_EVENT_STATISTICS 0x0023
374 #define PROPERTY_INPUT_OVER_RIPPLE_VOLTAGE_EVENT_STATISTICS 0x0024
375 #define PROPERTY_INPUT_OVER_VOLTAGE_EVENT_STATISTICS 0x0025
376 #define PROPERTY_INPUT_UNDER_CURRENT_EVENT_STATISTICS 0x0026
377 #define PROPERTY_INPUT_UNDER_VOLTAGE_EVENT_STATISTICS 0x0027
378 #define PROPERTY_INPUT_VOLTAGE_RANGE_SPECIFICATION 0x0028
379 #define PROPERTY_INPUT_VOLTAGE_RIPPLE_SPECIFICATION 0x0029
380 #define PROPERTY_INPUT_VOLTAGE_STATISTICS 0x002A
381 #define PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_ON 0x002B
382 #define PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_PROLONG 0x002C
383 #define PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_STANDBY 0x002D
384 #define PROPERTY_LIGHT_CONTROL_LIGHTNESS_ON 0x002E
385 #define PROPERTY_LIGHT_CONTROL_LIGHTNESS_PROLONG 0x002F
386 #define PROPERTY_LIGHT_CONTROL_LIGHTNESS_STANDBY 0x0030
387 #define PROPERTY_LIGHT_CONTROL_REGULATOR_ACCURACY 0x0031
388 #define PROPERTY_LIGHT_CONTROL_REGULATOR_KID 0x0032
389 #define PROPERTY_LIGHT_CONTROL_REGULATOR_KIU 0x0033
390 #define PROPERTY_LIGHT_CONTROL_REGULATOR_KPD 0x0034
391 #define PROPERTY_LIGHT_CONTROL_REGULATOR_KPU 0x0035
392 #define PROPERTY_LIGHT_CONTROL_TIME_FADE 0x0036
393 #define PROPERTY_LIGHT_CONTROL_TIME_FADE_ON 0x0037
394 #define PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_AUTO 0x0038
395 #define PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_MANUAL 0x0039
396 #define PROPERTY_LIGHT_CONTROL_TIME_OCCUPANCY_DELAY 0x003A
397 #define PROPERTY_LIGHT_CONTROL_TIME_PROLONG 0x003B
398 #define PROPERTY_LIGHT_CONTROL_TIME_RUN_ON 0x003C
399 #define PROPERTY_LUMEN_MAINTENANCE_FACTOR 0x003D
400 #define PROPERTY_LUMINOUS_EFFICACY 0x003E
401 #define PROPERTY_LUMINOUS_ENERGY_SINCE_TURN_ON 0x003F
402 #define PROPERTY_LUMINOUS_EXPOSURE 0x0040
403 #define PROPERTY_LUMINOUS_FLUX_RANGE 0x0041
404 #define PROPERTY_MOTION_SENSED 0x0042
405 #define PROPERTY_MOTION_THRESHOLD 0x0043
406 #define PROPERTY_OPEN_CIRCUIT_EVENT_STATISTICS 0x0044
407 #define PROPERTY_OUTDOOR_STATISTICAL_VALUES 0x0045
408 #define PROPERTY_OUTPUT_CURRENT_RANGE 0x0046
409 #define PROPERTY_OUTPUT_CURRENT_STATISTICS 0x0047
410 #define PROPERTY_OUTPUT_RIPPLE_VOLTAGE_SPECIFICATION 0x0048
411 #define PROPERTY_OUTPUT_VOLTAGE_RANGE 0x0049
412 #define PROPERTY_OUTPUT_VOLTAGE_STATISTICS 0x004A
413 #define PROPERTY_OVER_OUTPUT_RIPPLE_VOLTAGE_EVENT_STATISTICS 0x004B
414 #define PROPERTY_PEOPLE_COUNT 0x004C
415 #define PROPERTY_PRESENCE_DETECTED 0x004D
416 #define PROPERTY_PRESENT_AMBIENT_LIGHT_LEVEL 0x004E
417 #define PROPERTY_PRESENT_AMBIENT_TEMPERATURE 0x004F
418 #define PROPERTY_PRESENT_CIE_1931_CHROMATICITY_COORDINATES 0x0050
419 #define PROPERTY_PRESENT_CORRELATED_COLOR_TEMPERATURE 0x0051
420 #define PROPERTY_PRESENT_DEVICE_INPUT_POWER 0x0052
421 #define PROPERTY_PRESENT_DEVICE_OPERATING_EFFICIENCY 0x0053
422 #define PROPERTY_PRESENT_DEVICE_OPERATING_TEMPERATURE 0x0054
423 #define PROPERTY_PRESENT_ILLUMINANCE 0x0055
424 #define PROPERTY_PRESENT_INDOOR_AMBIENT_TEMPERATURE 0x0056
425 #define PROPERTY_PRESENT_INPUT_CURRENT 0x0057
426 #define PROPERTY_PRESENT_INPUT_RIPPLE_VOLTAGE 0x0058
427 #define PROPERTY_PRESENT_INPUT_VOLTAGE 0x0059
428 #define PROPERTY_PRESENT_LUMINOUS_FLUX 0x005A
429 #define PROPERTY_PRESENT_OUTDOOR_AMBIENT_TEMPERATURE 0x005B
430 #define PROPERTY_PRESENT_OUTPUT_CURRENT 0x005C
431 #define PROPERTY_PRESENT_OUTPUT_VOLTAGE 0x005D
432 #define PROPERTY_PRESENT_PLANCKIAN_DISTANCE 0x005E
433 #define PROPERTY_PRESENT_RELATIVE_OUTPUT_RIPPLE_VOLTAGE 0x005F
434 #define PROPERTY_RELATIVE_DEVICE_ENERGY_USE_IN_A_PERIOD_OF_DAY 0x0060
435 #define PROPERTY_RELATIVE_DEVICE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE 0x0061
436 #define PROPERTY_RELATIVE_EXPOSURE_TIME_IN_AN_ILLUMINANCE_RANGE 0x0062
437 #define PROPERTY_RELATIVE_RUNTIME_IN_A_CORRELATED_COLOR_TEMPERATURE_RANGE 0x0063
438 #define PROPERTY_RELATIVE_RUNTIME_IN_A_DEVICE_OPERATING_TEMPERATURE_RANGE 0x0064
439 #define PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_CURRENT_RANGE 0x0065
440 #define PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_VOLTAGE_RANGE 0x0066
441 #define PROPERTY_SHORT_CIRCUIT_EVENT_STATISTICS 0x0067
442 #define PROPERTY_TIME_SINCE_MOTION_SENSED 0x0068
443 #define PROPERTY_TIME_SINCE_PRESENCE_DETECTED 0x0069
444 #define PROPERTY_TOTAL_DEVICE_ENERGY_USE 0x006A
445 #define PROPERTY_TOTAL_DEVICE_OFF_ON_CYCLES 0x006B
446 #define PROPERTY_TOTAL_DEVICE_POWER_ON_CYCLES 0x006C
447 #define PROPERTY_TOTAL_DEVICE_POWER_ON_TIME 0x006D
448 #define PROPERTY_TOTAL_DEVICE_RUNTIME 0x006E
449 #define PROPERTY_TOTAL_LIGHT_EXPOSURE_TIME 0x006F
450 #define PROPERTY_TOTAL_LUMINOUS_ENERGY 0x0070
451 #define PROPERTY_DESIRED_AMBIENT_TEMPERATURE 0x0071
452 #define PROPERTY_PRECISE_TOTAL_DEVICE_ENERGY_USE 0x0072
453 #define PROPERTY_POWER_FACTOR 0x0073
454 #define PROPERTY_SENSOR_GAIN 0x0074
455 #define PROPERTY_PRECISE_PRESENT_AMBIENT_TEMPERATURE 0x0075
456 #define PROPERTY_PRESENT_AMBIENT_RELATIVE_HUMIDITY 0x0076
457 #define PROPERTY_PRESENT_AMBIENT_CARBON_DIOXIDE_CONCENTRATION 0x0077
458 #define PROPERTY_PRESENT_AMBIENT_VOLATILE_ORGANIC_COMPOUNDS_CONCENTRATION 0x0078
459 #define PROPERTY_PRESENT_AMBIENT_NOISE 0x0079
460 #define PROPERTY_ACTIVE_ENERGY_LOADSIDE 0x0080
461 #define PROPERTY_ACTIVE_POWER_LOADSIDE 0x0081
462 #define PROPERTY_AIR_PRESSURE 0x0082
463 #define PROPERTY_APPARENT_ENERGY 0x0083
464 #define PROPERTY_APPARENT_POWER 0x0084
465 #define PROPERTY_APPARENT_WIND_DIRECTION 0x0085
466 #define PROPERTY_APPARENT_WIND_SPEED 0x0086
467 #define PROPERTY_DEW_POINT 0x0087
468 #define PROPERTY_EXTERNAL_SUPPLY_VOLTAGE 0x0088
469 #define PROPERTY_EXTERNAL_SUPPLY_VOLTAGE_FREQUENCY 0x0089
470 #define PROPERTY_GUST_FACTOR 0x008A
471 #define PROPERTY_HEAT_INDEX 0x008B
472 #define PROPERTY_LIGHT_DISTRIBUTION 0x008C
473 #define PROPERTY_LIGHT_SOURCE_CURRENT 0x008D
474 #define PROPERTY_LIGHT_SOURCE_ON_TIME_NOT_RESETTABLE 0x008E
475 #define PROPERTY_LIGHT_SOURCE_ON_TIME_RESETTABLE 0x008F
476 #define PROPERTY_LIGHT_SOURCE_OPEN_CIRCUIT_STATISTICS 0x0090
477 #define PROPERTY_LIGHT_SOURCE_OVERALL_FAILURES_STATISTICS 0x0091
478 #define PROPERTY_LIGHT_SOURCE_SHORT_CIRCUIT_STATISTICS 0x0092
479 #define PROPERTY_LIGHT_SOURCE_START_COUNTER_RESETTABLE 0x0093
480 #define PROPERTY_LIGHT_SOURCE_TEMPERATURE 0x0094
481 #define PROPERTY_LIGHT_SOURCE_THERMAL_DERATING_STATISTICS 0x0095
482 #define PROPERTY_LIGHT_SOURCE_THERMAL_SHUTDOWN_STATISTICS 0x0096
483 #define PROPERTY_LIGHT_SOURCE_TOTAL_POWER_ON_CYCLES 0x0097
484 #define PROPERTY_LIGHT_SOURCE_VOLTAGE 0x0098
485 #define PROPERTY_LUMINAIRE_COLOR 0x0099
486 #define PROPERTY_LUMINAIRE_IDENTIFICATION_NUMBER 0x009A
487 #define PROPERTY_LUMINAIRE_MANUFACTURER_GTIN 0x009B
488 #define PROPERTY_LUMINAIRE_NOMINAL_INPUT_POWER 0x009C
489 #define PROPERTY_LUMINAIRE_NOMINAL_MAXIMUM_AC_MAINS_VOLTAGE 0x009D
490 #define PROPERTY_LUMINAIRE_NOMINAL_MINIMUM_AC_MAINS_VOLTAGE 0x009E
491 #define PROPERTY_LUMINAIRE_POWER_AT_MINIMUM_DIM_LEVEL 0x009F
492 #define PROPERTY_LUMINAIRE_TIME_OF_MANUFACTURE 0x00A0
493 #define PROPERTY_MAGNETIC_DECLINATION 0x00A1
494 #define PROPERTY_MAGNETIC_FLUX_DENSITY_2_D 0x00A2
495 #define PROPERTY_MAGNETIC_FLUX_DENSITY_3_D 0x00A3
496 #define PROPERTY_NOMINAL_LIGHT_OUTPUT 0x00A4
497 #define PROPERTY_OVERALL_FAILURE_CONDITION 0x00A5
498 #define PROPERTY_POLLEN_CONCENTRATION 0x00A6
499 #define PROPERTY_PRESENT_INDOOR_RELATIVE_HUMIDITY 0x00A7
500 #define PROPERTY_PRESENT_OUTDOOR_RELATIVE_HUMIDITY 0x00A8
501 #define PROPERTY_PRESSURE 0x00A9
502 #define PROPERTY_RAINFALL 0x00AA
503 #define PROPERTY_RATED_MEDIAN_USEFUL_LIFE_OF_LUMINAIRE 0x00AB
504 #define PROPERTY_RATED_MEDIAN_USEFUL_LIGHT_SOURCE_STARTS 0x00AC
505 #define PROPERTY_REFERENCE_TEMPERATURE 0x00AD
506 #define PROPERTY_TOTAL_DEVICE_STARTS 0x00AE
507 #define PROPERTY_TRUE_WIND_DIRECTION 0x00AF
508 #define PROPERTY_TRUE_WIND_SPEED 0x00B0
509 #define PROPERTY_UV_INDEX 0x00B1
510 #define PROPERTY_WIND_CHILL 0x00B2
511 #define PROPERTY_LIGHT_SOURCE_TYPE 0x00B3
512 #define PROPERTY_LUMINAIRE_IDENTIFICATION_STRING 0x00B4
513 #define PROPERTY_OUTPUT_POWER_LIMITATION 0x00B5
514 #define PROPERTY_THERMAL_DERATING 0x00B6
515 #define PROPERTY_OUTPUT_CURRENT_PERCENT 0x00B7
517 #define PHONY_CHARACTERISTIC_PERCENTAGE_CHANGE_16 0xFFFF
518 #define PHONY_CHARACTERISTIC_INDEX 0xFFFE
519 #define CHARACTERISTIC_APPARENT_ENERGY32 0x2BCF
520 #define CHARACTERISTIC_APPARENT_POWER 0x2BD0
521 #define CHARACTERISTIC_APPARENT_WIND_DIRECTION 0x2A73
522 #define CHARACTERISTIC_APPARENT_WIND_SPEED 0x2A72
523 #define CHARACTERISTIC_APPEARANCE 0x2A01
524 #define CHARACTERISTIC_AVERAGE_CURRENT 0x2AE0
525 #define CHARACTERISTIC_AVERAGE_VOLTAGE 0x2AE1
526 #define CHARACTERISTIC_BOOLEAN 0x2AE2
527 #define CHARACTERISTIC_CHROMATIC_DISTANCE_FROM_PLANCKIAN 0x2AE3
528 #define CHARACTERISTIC_CHROMATICITY_COORDINATES 0x2AE4
529 #define CHARACTERISTIC_CHROMATICITY_TOLERANCE 0x2AE6
530 #define CHARACTERISTIC_CIE_13_3_1995_COLOR_RENDERING_INDEX 0x2AE7
531 #define CHARACTERISTIC_CO2_CONCENTRATION 0x2BD1
532 #define CHARACTERISTIC_COEFFICIENT 0x2AE8
533 #define CHARACTERISTIC_CORRELATED_COLOR_TEMPERATURE 0x2AE9
534 #define CHARACTERISTIC_COSINE_OF_THE_ANGLE 0x2BD2
535 #define CHARACTERISTIC_COUNT_16 0x2AEA
536 #define CHARACTERISTIC_COUNT_24 0x2AEB
537 #define CHARACTERISTIC_COUNTRY_CODE 0x2AEC
538 #define CHARACTERISTIC_DATE_UTC 0x2AED
539 #define CHARACTERISTIC_DECIHOUR_8 0x2B12
540 #define CHARACTERISTIC_DEW_POINT 0x2BD3
541 #define CHARACTERISTIC_ELECTRIC_CURRENT 0x2AEE
542 #define CHARACTERISTIC_ELECTRIC_CURRENT_RANGE 0x2AEF
543 #define CHARACTERISTIC_ELECTRIC_CURRENT_SPECIFICATION 0x2AF0
544 #define CHARACTERISTIC_ELECTRIC_CURRENT_STATISTICS 0x2AF1
545 #define CHARACTERISTIC_ENERGY 0x2AF2
546 #define CHARACTERISTIC_ENERGY_IN_A_PERIOD_OF_DAY 0x2AF3
547 #define CHARACTERISTIC_ENERGY32 0x2BD4
548 #define CHARACTERISTIC_EVENT_STATISTICS 0x2AF4
549 #define CHARACTERISTIC_FIXED_STRING_16 0x2AF5
550 #define CHARACTERISTIC_FIXED_STRING_24 0x2AF6
551 #define CHARACTERISTIC_FIXED_STRING_36 0x2AF7
552 #define CHARACTERISTIC_FIXED_STRING_64 0x2BD5
553 #define CHARACTERISTIC_FIXED_STRING_8 0x2AF8
554 #define CHARACTERISTIC_GENERIC_LEVEL 0X2AF9
555 #define CHARACTERISTIC_GLOBAL_TRADE_ITEM_NUMBER 0x2AFA
556 #define CHARACTERISTIC_GUST_FACTOR 0x2A74
557 #define CHARACTERISTIC_HEAT_INDEX 0x2A7A
558 #define CHARACTERISTIC_HIGH_TEMPERATURE 0x2BD6
559 #define CHARACTERISTIC_HIGH_VOLTAGE 0x2BD7
560 #define CHARACTERISTIC_HUMIDITY 0x2A6F
561 #define CHARACTERISTIC_ILLUMINANCE 0x2AFB
562 #define CHARACTERISTIC_LIGHT_DISTRIBUTION 0x2BD8
563 #define CHARACTERISTIC_LIGHT_OUTPUT 0x2BD9
564 #define CHARACTERISTIC_LIGHT_SOURCE_TYPE 0x2BDA
565 #define CHARACTERISTIC_LUMINOUS_EFFICACY 0x2AFC
566 #define CHARACTERISTIC_LUMINOUS_ENERGY 0x2AFD
567 #define CHARACTERISTIC_LUMINOUS_EXPOSURE 0x2AFE
568 #define CHARACTERISTIC_LUMINOUS_FLUX 0x2AFF
569 #define CHARACTERISTIC_LUMINOUS_FLUX_RANGE 0x2B00
570 #define CHARACTERISTIC_LUMINOUS_INTENSITY 0x2B01
571 #define CHARACTERISTIC_MAGNETIC_DECLINATION 0x2BDB
572 #define CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_2_D 0x2AA0
573 #define CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_3_D 0x2AA1
574 #define CHARACTERISTIC_NOISE 0x2BDC
575 #define CHARACTERISTIC_PERCEIVED_LIGHTNESS 0x2B03
576 #define CHARACTERISTIC_PERCENTAGE_8 0x2B04
577 #define CHARACTERISTIC_POLLEN_CONCENTRATION 0x2A75
578 #define CHARACTERISTIC_POWER 0x2B05
579 #define CHARACTERISTIC_POWER_SPECIFICATION 0x2B06
580 #define CHARACTERISTIC_PRESSURE 0x2A6D
581 #define CHARACTERISTIC_RAINFALL 0x2A78
582 #define CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_CURRENT_RANGE 0x2B07
583 #define CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE 0x2B08
584 #define CHARACTERISTIC_RELATIVE_VALUE_IN_A_TEMPERATURE_RANGE 0x2B0C
585 #define CHARACTERISTIC_RELATIVE_VALUE_IN_A_VOLTAGE_RANGE 0x2B09
586 #define CHARACTERISTIC_RELATIVE_VALUE_IN_AN_ILLUMINANCE_RANGE 0x2B0A
587 #define CHARACTERISTIC_TEMPERATURE 0x2A6E
588 #define CHARACTERISTIC_TEMPERATURE_8 0x2B0D
589 #define CHARACTERISTIC_TEMPERATURE_8_IN_A_PERIOD_OF_DAY 0x2B0E
590 #define CHARACTERISTIC_TEMPERATURE_8_STATISTICS 0x2B0F
591 #define CHARACTERISTIC_TEMPERATURE_RANGE 0x2B10
592 #define CHARACTERISTIC_TEMPERATURE_STATISTICS 0x2B11
593 #define CHARACTERISTIC_TIME_HOUR_24 0x2B14
594 #define CHARACTERISTIC_TIME_MILLISECOND_24 0x2B15
595 #define CHARACTERISTIC_TIME_SECOND_16 0x2B16
596 #define CHARACTERISTIC_TIME_SECOND_32 0x2BDE
597 #define CHARACTERISTIC_TRUE_WIND_DIRECTION 0x2A71
598 #define CHARACTERISTIC_TRUE_WIND_SPEED 0x2A70
599 #define CHARACTERISTIC_UV_INDEX 0x2A76
600 #define CHARACTERISTIC_VOC_CONCENTRATION 0x2BDF
601 #define CHARACTERISTIC_VOLTAGE 0x2B18
602 #define CHARACTERISTIC_VOLTAGE_FREQUENCY 0x2BE0
603 #define CHARACTERISTIC_VOLTAGE_SPECIFICATION 0x2B19
604 #define CHARACTERISTIC_VOLTAGE_STATISTICS 0x2B1A
605 #define CHARACTERISTIC_WIND_CHILL 0x2A79
607 void proto_register_btmesh(void);
609 static int proto_btmesh
;
610 static dissector_table_t btmesh_model_vendor_dissector_table
;
612 /*-------------------------------------
614 *-------------------------------------
616 static uat_t
*btmesh_uat
;
617 static unsigned num_btmesh_uat
;
619 /* UAT Network, Application and IVIndex entry structure. */
621 char *network_key_string
;
622 uint8_t *network_key
;
623 int network_key_length
;
624 char *ivindex_string
;
625 int ivindex_string_length
;
628 uint8_t *encryptionkey
;
630 char *application_key_string
;
631 uint8_t *application_key
;
632 int application_key_length
;
634 uint8_t valid
; /* this counter must be equal to BTMESH_KEY_ENTRY_VALID make UAT entry valid */
635 uint32_t net_key_iv_index_hash
; /* Used to identify net key / IV index pair */
636 } uat_btmesh_record_t
;
638 static uat_btmesh_record_t
*uat_btmesh_records
;
640 static uat_t
*btmesh_dev_key_uat
;
641 static unsigned num_btmesh_dev_key_uat
;
643 /* UAT Device Key entry structure. */
645 char *device_key_string
;
647 int device_key_length
;
651 uint8_t valid
; /* this counter must be equal to BTMESH_DEVICE_KEY_ENTRY_VALID make UAT entry valid */
652 } uat_btmesh_dev_key_record_t
;
654 static uat_btmesh_dev_key_record_t
*uat_btmesh_dev_key_records
;
656 static uat_t
* btmesh_label_uuid_uat
;
657 static unsigned num_btmesh_label_uuid_uat
;
659 /* UAT Label UUID entry structure. */
661 char *label_uuid_string
;
663 int label_uuid_length
;
665 uint8_t valid
; /* this counter must be equal to BTMESH_LABEL_UUID_ENTRY_VALID make UAT entry valid */
666 } uat_btmesh_label_uuid_record_t
;
668 static uat_btmesh_label_uuid_record_t
*uat_btmesh_label_uuid_records
;
671 uint16_t property_id
;
672 uint16_t characteristic_id
;
676 uint16_t characteristic_id
;
677 uint16_t characteristic_value_length
;
679 uint8_t dissector_type
;
680 } bt_gatt_characteristic_t
;
683 uint16_t characteristic_id
;
684 uint16_t x_characteristic_id
;
685 uint16_t y_characteristic_id
;
686 } btmesh_column_property_t
;
689 int *hf_status_trigger_delta_up
;
690 int *hf_status_trigger_delta_down
;
691 int *hf_status_min_interval
;
692 int *hf_fast_cadence_low
;
693 int *hf_fast_cadence_high
;
694 int *hf_remainder_not_dissected
;
695 } bt_sensor_cadence_dissector_t
;
701 } bt_property_raw_value_entry_t
;
704 int *hf_raw_value_a1
;
705 int *hf_raw_value_a2
;
706 } bt_property_columns_raw_value_t
;
708 static int hf_btmesh_ivi
;
709 static int hf_btmesh_nid
;
710 static int hf_btmesh_obfuscated
;
711 static int hf_btmesh_encrypted
;
712 static int hf_btmesh_netmic
;
714 static int hf_btmesh_ctl
;
715 static int hf_btmesh_ttl
;
716 static int hf_btmesh_seq
;
717 static int hf_btmesh_src
;
718 static int hf_btmesh_dst
;
720 static int hf_btmesh_transp_pdu
;
721 static int hf_btmesh_cntr_seg
;
722 static int hf_btmesh_acc_seg
;
723 static int hf_btmesh_cntr_opcode
;
724 static int hf_btmesh_acc_akf
;
725 static int hf_btmesh_acc_aid
;
726 static int hf_btmesh_obo
;
727 static int hf_btmesh_seqzero
;
728 static int hf_btmesh_rfu
;
729 static int hf_btmesh_blockack
;
730 static int hf_btmesh_cntr_criteria_rfu
;
731 static int hf_btmesh_cntr_padding
;
732 static int hf_btmesh_cntr_fsn
;
734 static int hf_btmesh_cntr_key_refresh_flag
;
735 static int hf_btmesh_cntr_iv_update_flag
;
736 static int hf_btmesh_cntr_flags_rfu
;
737 static int hf_btmesh_cntr_iv_index
;
738 static int hf_btmesh_cntr_md
;
740 static int hf_btmesh_cntr_heartbeat_rfu
;
741 static int hf_btmesh_cntr_init_ttl
;
742 static int hf_btmesh_cntr_feature_relay
;
743 static int hf_btmesh_cntr_feature_proxy
;
744 static int hf_btmesh_cntr_feature_friend
;
745 static int hf_btmesh_cntr_feature_low_power
;
746 static int hf_btmesh_cntr_feature_rfu
;
748 static int hf_btmesh_cntr_criteria_rssifactor
;
749 static int hf_btmesh_cntr_criteria_receivewindowfactor
;
750 static int hf_btmesh_cntr_criteria_minqueuesizelog
;
751 static int hf_btmesh_cntr_receivedelay
;
752 static int hf_btmesh_cntr_polltimeout
;
753 static int hf_btmesh_cntr_previousaddress
;
754 static int hf_btmesh_cntr_numelements
;
755 static int hf_btmesh_cntr_lpncounter
;
756 static int hf_btmesh_cntr_receivewindow
;
757 static int hf_btmesh_cntr_queuesize
;
758 static int hf_btmesh_cntr_subscriptionlistsize
;
759 static int hf_btmesh_cntr_rssi
;
760 static int hf_btmesh_cntr_friendcounter
;
761 static int hf_btmesh_cntr_lpnaddress
;
762 static int hf_btmesh_cntr_transactionnumber
;
763 static int hf_btmesh_enc_access_pld
;
764 static int hf_btmesh_transtmic
;
765 static int hf_btmesh_szmic
;
766 static int hf_btmesh_seqzero_data
;
767 static int hf_btmesh_sego
;
768 static int hf_btmesh_segn
;
769 static int hf_btmesh_seg_rfu
;
770 static int hf_btmesh_segment
;
771 static int hf_btmesh_cntr_unknown_payload
;
773 static int hf_btmesh_segmented_access_fragments
;
774 static int hf_btmesh_segmented_access_fragment
;
775 static int hf_btmesh_segmented_access_fragment_overlap
;
776 static int hf_btmesh_segmented_access_fragment_overlap_conflict
;
777 static int hf_btmesh_segmented_access_fragment_multiple_tails
;
778 static int hf_btmesh_segmented_access_fragment_too_long_fragment
;
779 static int hf_btmesh_segmented_access_fragment_error
;
780 static int hf_btmesh_segmented_access_fragment_count
;
781 static int hf_btmesh_segmented_access_reassembled_length
;
783 static int hf_btmesh_segmented_control_fragments
;
784 static int hf_btmesh_segmented_control_fragment
;
785 static int hf_btmesh_segmented_control_fragment_overlap
;
786 static int hf_btmesh_segmented_control_fragment_overlap_conflict
;
787 static int hf_btmesh_segmented_control_fragment_multiple_tails
;
788 static int hf_btmesh_segmented_control_fragment_too_long_fragment
;
789 static int hf_btmesh_segmented_control_fragment_error
;
790 static int hf_btmesh_segmented_control_fragment_count
;
791 static int hf_btmesh_segmented_control_reassembled_length
;
793 static int hf_btmesh_decrypted_access
;
794 static int hf_btmesh_model_layer_opcode
;
795 static int hf_btmesh_model_layer_parameters
;
796 static int hf_btmesh_model_layer_vendor_opcode
;
797 static int hf_btmesh_model_layer_vendor
;
799 static int hf_btmesh_config_appkey_add_netkeyindexandappkeyindex
;
800 static int hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_net
;
801 static int hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_app
;
802 static int hf_btmesh_config_appkey_add_appkey
;
803 static int hf_btmesh_config_appkey_update_netkeyindexandappkeyindex
;
804 static int hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_net
;
805 static int hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_app
;
806 static int hf_btmesh_config_appkey_update_appkey
;
807 static int hf_btmesh_config_composition_data_status_page
;
808 static int hf_btmesh_config_composition_data_status_cid
;
809 static int hf_btmesh_config_composition_data_status_pid
;
810 static int hf_btmesh_config_composition_data_status_vid
;
811 static int hf_btmesh_config_composition_data_status_crpl
;
812 static int hf_btmesh_config_composition_data_status_features_relay
;
813 static int hf_btmesh_config_composition_data_status_features_proxy
;
814 static int hf_btmesh_config_composition_data_status_features_friend
;
815 static int hf_btmesh_config_composition_data_status_features_low_power
;
816 static int hf_btmesh_config_composition_data_status_features_rfu
;
817 static int hf_btmesh_config_composition_data_status_features
;
818 static int hf_btmesh_config_composition_data_status_loc
;
819 static int hf_btmesh_config_composition_data_status_nums
;
820 static int hf_btmesh_config_composition_data_status_numv
;
821 static int hf_btmesh_config_composition_data_status_sig_model
;
822 static int hf_btmesh_config_composition_data_status_vendor_model
;
823 static int hf_btmesh_config_model_publication_set_elementaddress
;
824 static int hf_btmesh_config_model_publication_set_publishaddress
;
825 static int hf_btmesh_config_model_publication_set_appkey
;
826 static int hf_btmesh_config_model_publication_set_appkeyindex
;
827 static int hf_btmesh_config_model_publication_set_credentialflag
;
828 static int hf_btmesh_config_model_publication_set_rfu
;
829 static int hf_btmesh_config_model_publication_set_publishttl
;
830 static int hf_btmesh_config_model_publication_set_publishperiod
;
831 static int hf_btmesh_config_model_publication_set_publishperiod_resolution
;
832 static int hf_btmesh_config_model_publication_set_publishperiod_steps
;
833 static int hf_btmesh_config_model_publication_set_publishretransmit
;
834 static int hf_btmesh_config_model_publication_set_publishretransmit_count
;
835 static int hf_btmesh_config_model_publication_set_publishretransmit_intervalsteps
;
836 static int hf_btmesh_config_model_publication_set_modelidentifier
;
837 static int hf_btmesh_config_model_publication_set_vendormodelidentifier
;
838 static int hf_btmesh_health_current_status_test_id
;
839 static int hf_btmesh_health_current_status_company_id
;
840 static int hf_btmesh_health_current_status_fault
;
841 static int hf_btmesh_health_fault_status_test_id
;
842 static int hf_btmesh_health_fault_status_company_id
;
843 static int hf_btmesh_health_fault_status_fault
;
844 static int hf_btmesh_config_heartbeat_publication_status_status
;
845 static int hf_btmesh_config_heartbeat_publication_status_destination
;
846 static int hf_btmesh_config_heartbeat_publication_status_countlog
;
847 static int hf_btmesh_config_heartbeat_publication_status_periodlog
;
848 static int hf_btmesh_config_heartbeat_publication_status_ttl
;
849 static int hf_btmesh_config_heartbeat_publication_status_features_relay
;
850 static int hf_btmesh_config_heartbeat_publication_status_features_proxy
;
851 static int hf_btmesh_config_heartbeat_publication_status_features_friend
;
852 static int hf_btmesh_config_heartbeat_publication_status_features_low_power
;
853 static int hf_btmesh_config_heartbeat_publication_status_features_rfu
;
854 static int hf_btmesh_config_heartbeat_publication_status_features
;
855 static int hf_btmesh_config_heartbeat_publication_status_netkeyindex
;
856 static int hf_btmesh_config_heartbeat_publication_status_netkeyindex_idx
;
857 static int hf_btmesh_config_heartbeat_publication_status_netkeyindex_rfu
;
858 static int hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex
;
859 static int hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_net
;
860 static int hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_app
;
861 static int hf_btmesh_config_appkey_get_netkeyindex
;
862 static int hf_btmesh_config_appkey_get_netkeyindex_idx
;
863 static int hf_btmesh_config_appkey_get_netkeyindex_rfu
;
864 static int hf_btmesh_config_appkey_list_status
;
865 static int hf_btmesh_config_appkey_list_netkeyindex
;
866 static int hf_btmesh_config_appkey_list_netkeyindex_idx
;
867 static int hf_btmesh_config_appkey_list_netkeyindex_rfu
;
868 static int hf_btmesh_config_appkey_list_appkeyindex
;
869 static int hf_btmesh_config_appkey_list_appkeyindex_rfu
;
870 static int hf_btmesh_config_appkey_status_status
;
871 static int hf_btmesh_config_appkey_status_netkeyindexandappkeyindex
;
872 static int hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_net
;
873 static int hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_app
;
874 static int hf_btmesh_health_attention_set_attention
;
875 static int hf_btmesh_health_attention_set_unacknowledged_attention
;
876 static int hf_btmesh_health_attention_status_attention
;
877 static int hf_btmesh_config_composition_data_get_page
;
878 static int hf_btmesh_config_beacon_set_beacon
;
879 static int hf_btmesh_config_beacon_status_beacon
;
880 static int hf_btmesh_config_default_ttl_set_ttl
;
881 static int hf_btmesh_config_default_ttl_status_ttl
;
882 static int hf_btmesh_config_friend_set_friend
;
883 static int hf_btmesh_config_friend_status_friend
;
884 static int hf_btmesh_config_gatt_proxy_set_gattproxy
;
885 static int hf_btmesh_config_gatt_proxy_status_gattproxy
;
886 static int hf_btmesh_config_key_refresh_phase_get_netkeyindex
;
887 static int hf_btmesh_config_key_refresh_phase_get_netkeyindex_idx
;
888 static int hf_btmesh_config_key_refresh_phase_get_netkeyindex_rfu
;
889 static int hf_btmesh_config_key_refresh_phase_set_netkeyindex
;
890 static int hf_btmesh_config_key_refresh_phase_set_netkeyindex_idx
;
891 static int hf_btmesh_config_key_refresh_phase_set_netkeyindex_rfu
;
892 static int hf_btmesh_config_key_refresh_phase_set_transition
;
893 static int hf_btmesh_config_key_refresh_phase_status_status
;
894 static int hf_btmesh_config_key_refresh_phase_status_netkeyindex
;
895 static int hf_btmesh_config_key_refresh_phase_status_netkeyindex_idx
;
896 static int hf_btmesh_config_key_refresh_phase_status_netkeyindex_rfu
;
897 static int hf_btmesh_config_key_refresh_phase_status_phase
;
898 static int hf_btmesh_config_model_publication_get_elementaddress
;
899 static int hf_btmesh_config_model_publication_get_modelidentifier
;
900 static int hf_btmesh_config_model_publication_get_vendormodelidentifier
;
901 static int hf_btmesh_config_model_publication_status_status
;
902 static int hf_btmesh_config_model_publication_status_elementaddress
;
903 static int hf_btmesh_config_model_publication_status_publishaddress
;
904 static int hf_btmesh_config_model_publication_status_appkey
;
905 static int hf_btmesh_config_model_publication_status_appkeyindex
;
906 static int hf_btmesh_config_model_publication_status_credentialflag
;
907 static int hf_btmesh_config_model_publication_status_rfu
;
908 static int hf_btmesh_config_model_publication_status_publishttl
;
909 static int hf_btmesh_config_model_publication_status_publishperiod
;
910 static int hf_btmesh_config_model_publication_status_publishperiod_resolution
;
911 static int hf_btmesh_config_model_publication_status_publishperiod_steps
;
912 static int hf_btmesh_config_model_publication_status_publishretransmit
;
913 static int hf_btmesh_config_model_publication_status_publishretransmit_count
;
914 static int hf_btmesh_config_model_publication_status_publishretransmit_intervalsteps
;
915 static int hf_btmesh_config_model_publication_status_modelidentifier
;
916 static int hf_btmesh_config_model_publication_status_vendormodelidentifier
;
917 static int hf_btmesh_config_model_publication_virtual_address_set_elementaddress
;
918 static int hf_btmesh_config_model_publication_virtual_address_set_publishaddress
;
919 static int hf_btmesh_config_model_publication_virtual_address_set_appkey
;
920 static int hf_btmesh_config_model_publication_virtual_address_set_appkeyindex
;
921 static int hf_btmesh_config_model_publication_virtual_address_set_credentialflag
;
922 static int hf_btmesh_config_model_publication_virtual_address_set_rfu
;
923 static int hf_btmesh_config_model_publication_virtual_address_set_publishttl
;
924 static int hf_btmesh_config_model_publication_virtual_address_set_publishperiod
;
925 static int hf_btmesh_config_model_publication_virtual_address_set_publishperiod_resolution
;
926 static int hf_btmesh_config_model_publication_virtual_address_set_publishperiod_steps
;
927 static int hf_btmesh_config_model_publication_virtual_address_set_publishretransmit
;
928 static int hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_count
;
929 static int hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_intervalsteps
;
930 static int hf_btmesh_config_model_publication_virtual_address_set_modelidentifier
;
931 static int hf_btmesh_config_model_publication_virtual_address_set_vendormodelidentifier
;
932 static int hf_btmesh_config_model_subscription_add_elementaddress
;
933 static int hf_btmesh_config_model_subscription_add_address
;
934 static int hf_btmesh_config_model_subscription_add_modelidentifier
;
935 static int hf_btmesh_config_model_subscription_add_vendormodelidentifier
;
936 static int hf_btmesh_config_model_subscription_delete_elementaddress
;
937 static int hf_btmesh_config_model_subscription_delete_address
;
938 static int hf_btmesh_config_model_subscription_delete_modelidentifier
;
939 static int hf_btmesh_config_model_subscription_delete_vendormodelidentifier
;
940 static int hf_btmesh_config_model_subscription_delete_all_elementaddress
;
941 static int hf_btmesh_config_model_subscription_delete_all_modelidentifier
;
942 static int hf_btmesh_config_model_subscription_delete_all_vendormodelidentifier
;
943 static int hf_btmesh_config_model_subscription_overwrite_elementaddress
;
944 static int hf_btmesh_config_model_subscription_overwrite_address
;
945 static int hf_btmesh_config_model_subscription_overwrite_modelidentifier
;
946 static int hf_btmesh_config_model_subscription_overwrite_vendormodelidentifier
;
947 static int hf_btmesh_config_model_subscription_status_status
;
948 static int hf_btmesh_config_model_subscription_status_elementaddress
;
949 static int hf_btmesh_config_model_subscription_status_address
;
950 static int hf_btmesh_config_model_subscription_status_modelidentifier
;
951 static int hf_btmesh_config_model_subscription_status_vendormodelidentifier
;
952 static int hf_btmesh_config_model_subscription_virtual_address_add_elementaddress
;
953 static int hf_btmesh_config_model_subscription_virtual_address_add_label
;
954 static int hf_btmesh_config_model_subscription_virtual_address_add_modelidentifier
;
955 static int hf_btmesh_config_model_subscription_virtual_address_add_vendormodelidentifier
;
956 static int hf_btmesh_config_model_subscription_virtual_address_delete_elementaddress
;
957 static int hf_btmesh_config_model_subscription_virtual_address_delete_label
;
958 static int hf_btmesh_config_model_subscription_virtual_address_delete_modelidentifier
;
959 static int hf_btmesh_config_model_subscription_virtual_address_delete_vendormodelidentifier
;
960 static int hf_btmesh_config_model_subscription_virtual_address_overwrite_elementaddress
;
961 static int hf_btmesh_config_model_subscription_virtual_address_overwrite_label
;
962 static int hf_btmesh_config_model_subscription_virtual_address_overwrite_modelidentifier
;
963 static int hf_btmesh_config_model_subscription_virtual_address_overwrite_vendormodelidentifier
;
964 static int hf_btmesh_config_network_transmit_set_networktransmit
;
965 static int hf_btmesh_config_network_transmit_set_networktransmit_count
;
966 static int hf_btmesh_config_network_transmit_set_networktransmit_intervalsteps
;
967 static int hf_btmesh_config_network_transmit_status_networktransmit
;
968 static int hf_btmesh_config_network_transmit_status_networktransmit_count
;
969 static int hf_btmesh_config_network_transmit_status_networktransmit_intervalsteps
;
970 static int hf_btmesh_config_relay_set_relay
;
971 static int hf_btmesh_config_relay_set_relayretransmit
;
972 static int hf_btmesh_config_relay_set_relayretransmit_count
;
973 static int hf_btmesh_config_relay_set_relayretransmit_intervalsteps
;
974 static int hf_btmesh_config_relay_status_relay
;
975 static int hf_btmesh_config_relay_status_relayretransmit
;
976 static int hf_btmesh_config_relay_status_relayretransmit_count
;
977 static int hf_btmesh_config_relay_status_relayretransmit_intervalsteps
;
978 static int hf_btmesh_config_sig_model_subscription_get_elementaddress
;
979 static int hf_btmesh_config_sig_model_subscription_get_modelidentifier
;
980 static int hf_btmesh_config_sig_model_subscription_list_status
;
981 static int hf_btmesh_config_sig_model_subscription_list_elementaddress
;
982 static int hf_btmesh_config_sig_model_subscription_list_modelidentifier
;
983 static int hf_btmesh_config_sig_model_subscription_list_address
;
984 static int hf_btmesh_config_vendor_model_subscription_get_elementaddress
;
985 static int hf_btmesh_config_vendor_model_subscription_get_modelidentifier
;
986 static int hf_btmesh_config_vendor_model_subscription_list_status
;
987 static int hf_btmesh_config_vendor_model_subscription_list_elementaddress
;
988 static int hf_btmesh_config_vendor_model_subscription_list_modelidentifier
;
989 static int hf_btmesh_config_vendor_model_subscription_list_address
;
990 static int hf_btmesh_config_low_power_node_polltimeout_get_lpnaddress
;
991 static int hf_btmesh_config_low_power_node_polltimeout_status_lpnaddress
;
992 static int hf_btmesh_config_low_power_node_polltimeout_status_polltimeout
;
993 static int hf_btmesh_health_fault_clear_company_id
;
994 static int hf_btmesh_health_fault_clear_unacknowledged_company_id
;
995 static int hf_btmesh_health_fault_get_company_id
;
996 static int hf_btmesh_health_fault_test_test_id
;
997 static int hf_btmesh_health_fault_test_company_id
;
998 static int hf_btmesh_health_fault_test_unacknowledged_test_id
;
999 static int hf_btmesh_health_fault_test_unacknowledged_company_id
;
1000 static int hf_btmesh_health_period_set_fast_period_divisor
;
1001 static int hf_btmesh_health_period_set_unacknowledged_fast_period_divisor
;
1002 static int hf_btmesh_health_period_status_fast_period_divisor
;
1003 static int hf_btmesh_config_heartbeat_publication_set_destination
;
1004 static int hf_btmesh_config_heartbeat_publication_set_countlog
;
1005 static int hf_btmesh_config_heartbeat_publication_set_periodlog
;
1006 static int hf_btmesh_config_heartbeat_publication_set_ttl
;
1007 static int hf_btmesh_config_heartbeat_publication_set_features_relay
;
1008 static int hf_btmesh_config_heartbeat_publication_set_features_proxy
;
1009 static int hf_btmesh_config_heartbeat_publication_set_features_friend
;
1010 static int hf_btmesh_config_heartbeat_publication_set_features_low_power
;
1011 static int hf_btmesh_config_heartbeat_publication_set_features_rfu
;
1012 static int hf_btmesh_config_heartbeat_publication_set_features
;
1013 static int hf_btmesh_config_heartbeat_publication_set_netkeyindex
;
1014 static int hf_btmesh_config_heartbeat_publication_set_netkeyindex_idx
;
1015 static int hf_btmesh_config_heartbeat_publication_set_netkeyindex_rfu
;
1016 static int hf_btmesh_config_heartbeat_subscription_set_source
;
1017 static int hf_btmesh_config_heartbeat_subscription_set_destination
;
1018 static int hf_btmesh_config_heartbeat_subscription_set_periodlog
;
1019 static int hf_btmesh_config_heartbeat_subscription_status_status
;
1020 static int hf_btmesh_config_heartbeat_subscription_status_source
;
1021 static int hf_btmesh_config_heartbeat_subscription_status_destination
;
1022 static int hf_btmesh_config_heartbeat_subscription_status_periodlog
;
1023 static int hf_btmesh_config_heartbeat_subscription_status_countlog
;
1024 static int hf_btmesh_config_heartbeat_subscription_status_minhops
;
1025 static int hf_btmesh_config_heartbeat_subscription_status_maxhops
;
1026 static int hf_btmesh_config_model_app_bind_elementaddress
;
1027 static int hf_btmesh_config_model_app_bind_appkeyindex
;
1028 static int hf_btmesh_config_model_app_bind_appkeyindex_idx
;
1029 static int hf_btmesh_config_model_app_bind_appkeyindex_rfu
;
1030 static int hf_btmesh_config_model_app_bind_modelidentifier
;
1031 static int hf_btmesh_config_model_app_bind_vendormodelidentifier
;
1032 static int hf_btmesh_config_model_app_status_status
;
1033 static int hf_btmesh_config_model_app_status_elementaddress
;
1034 static int hf_btmesh_config_model_app_status_appkeyindex
;
1035 static int hf_btmesh_config_model_app_status_appkeyindex_idx
;
1036 static int hf_btmesh_config_model_app_status_appkeyindex_rfu
;
1037 static int hf_btmesh_config_model_app_status_modelidentifier
;
1038 static int hf_btmesh_config_model_app_status_vendormodelidentifier
;
1039 static int hf_btmesh_config_model_app_unbind_elementaddress
;
1040 static int hf_btmesh_config_model_app_unbind_appkeyindex
;
1041 static int hf_btmesh_config_model_app_unbind_appkeyindex_idx
;
1042 static int hf_btmesh_config_model_app_unbind_appkeyindex_rfu
;
1043 static int hf_btmesh_config_model_app_unbind_modelidentifier
;
1044 static int hf_btmesh_config_model_app_unbind_vendormodelidentifier
;
1045 static int hf_btmesh_config_netkey_add_netkeyindex
;
1046 static int hf_btmesh_config_netkey_add_netkeyindex_idx
;
1047 static int hf_btmesh_config_netkey_add_netkeyindex_rfu
;
1048 static int hf_btmesh_config_netkey_add_netkey
;
1049 static int hf_btmesh_config_netkey_delete_netkeyindex
;
1050 static int hf_btmesh_config_netkey_delete_netkeyindex_idx
;
1051 static int hf_btmesh_config_netkey_delete_netkeyindex_rfu
;
1052 static int hf_btmesh_config_netkey_list_netkeyindex
;
1053 static int hf_btmesh_config_netkey_list_netkeyindex_rfu
;
1054 static int hf_btmesh_config_netkey_status_status
;
1055 static int hf_btmesh_config_netkey_status_netkeyindex
;
1056 static int hf_btmesh_config_netkey_status_netkeyindex_idx
;
1057 static int hf_btmesh_config_netkey_status_netkeyindex_rfu
;
1058 static int hf_btmesh_config_netkey_update_netkeyindex
;
1059 static int hf_btmesh_config_netkey_update_netkeyindex_idx
;
1060 static int hf_btmesh_config_netkey_update_netkeyindex_rfu
;
1061 static int hf_btmesh_config_netkey_update_netkey
;
1062 static int hf_btmesh_config_node_identity_get_netkeyindex
;
1063 static int hf_btmesh_config_node_identity_get_netkeyindex_idx
;
1064 static int hf_btmesh_config_node_identity_get_netkeyindex_rfu
;
1065 static int hf_btmesh_config_node_identity_set_netkeyindex
;
1066 static int hf_btmesh_config_node_identity_set_netkeyindex_idx
;
1067 static int hf_btmesh_config_node_identity_set_netkeyindex_rfu
;
1068 static int hf_btmesh_config_node_identity_set_identity
;
1069 static int hf_btmesh_config_node_identity_status_status
;
1070 static int hf_btmesh_config_node_identity_status_netkeyindex
;
1071 static int hf_btmesh_config_node_identity_status_netkeyindex_idx
;
1072 static int hf_btmesh_config_node_identity_status_netkeyindex_rfu
;
1073 static int hf_btmesh_config_node_identity_status_identity
;
1074 static int hf_btmesh_config_sig_model_app_get_elementaddress
;
1075 static int hf_btmesh_config_sig_model_app_get_modelidentifier
;
1076 static int hf_btmesh_config_sig_model_app_list_status
;
1077 static int hf_btmesh_config_sig_model_app_list_elementaddress
;
1078 static int hf_btmesh_config_sig_model_app_list_modelidentifier
;
1079 static int hf_btmesh_config_sig_model_app_list_appkeyindex
;
1080 static int hf_btmesh_config_sig_model_app_list_appkeyindex_rfu
;
1081 static int hf_btmesh_config_vendor_model_app_get_elementaddress
;
1082 static int hf_btmesh_config_vendor_model_app_get_modelidentifier
;
1083 static int hf_btmesh_config_vendor_model_app_list_status
;
1084 static int hf_btmesh_config_vendor_model_app_list_elementaddress
;
1085 static int hf_btmesh_config_vendor_model_app_list_modelidentifier
;
1086 static int hf_btmesh_config_vendor_model_app_list_appkeyindex
;
1087 static int hf_btmesh_config_vendor_model_app_list_appkeyindex_rfu
;
1088 static int hf_btmesh_generic_location_global_status_global_latitude
;
1089 static int hf_btmesh_generic_location_global_status_global_longitude
;
1090 static int hf_btmesh_generic_location_global_status_global_altitude
;
1091 static int hf_btmesh_generic_location_global_set_global_latitude
;
1092 static int hf_btmesh_generic_location_global_set_global_longitude
;
1093 static int hf_btmesh_generic_location_global_set_global_altitude
;
1094 static int hf_btmesh_generic_location_global_set_unacknowledged_global_latitude
;
1095 static int hf_btmesh_generic_location_global_set_unacknowledged_global_longitude
;
1096 static int hf_btmesh_generic_location_global_set_unacknowledged_global_altitude
;
1097 static int hf_btmesh_generic_onoff_set_onoff
;
1098 static int hf_btmesh_generic_onoff_set_tid
;
1099 static int hf_btmesh_generic_onoff_set_transition_time
;
1100 static int hf_btmesh_generic_onoff_set_transition_time_steps
;
1101 static int hf_btmesh_generic_onoff_set_transition_time_resolution
;
1102 static int hf_btmesh_generic_onoff_set_delay
;
1103 static int hf_btmesh_generic_onoff_set_unacknowledged_onoff
;
1104 static int hf_btmesh_generic_onoff_set_unacknowledged_tid
;
1105 static int hf_btmesh_generic_onoff_set_unacknowledged_transition_time
;
1106 static int hf_btmesh_generic_onoff_set_unacknowledged_transition_time_steps
;
1107 static int hf_btmesh_generic_onoff_set_unacknowledged_transition_time_resolution
;
1108 static int hf_btmesh_generic_onoff_set_unacknowledged_delay
;
1109 static int hf_btmesh_generic_onoff_status_present_onoff
;
1110 static int hf_btmesh_generic_onoff_status_target_onoff
;
1111 static int hf_btmesh_generic_onoff_status_remaining_time
;
1112 static int hf_btmesh_generic_onoff_status_remaining_time_steps
;
1113 static int hf_btmesh_generic_onoff_status_remaining_time_resolution
;
1114 static int hf_btmesh_generic_level_set_level
;
1115 static int hf_btmesh_generic_level_set_tid
;
1116 static int hf_btmesh_generic_level_set_transition_time
;
1117 static int hf_btmesh_generic_level_set_transition_time_steps
;
1118 static int hf_btmesh_generic_level_set_transition_time_resolution
;
1119 static int hf_btmesh_generic_level_set_delay
;
1120 static int hf_btmesh_generic_level_set_unacknowledged_level
;
1121 static int hf_btmesh_generic_level_set_unacknowledged_tid
;
1122 static int hf_btmesh_generic_level_set_unacknowledged_transition_time
;
1123 static int hf_btmesh_generic_level_set_unacknowledged_transition_time_steps
;
1124 static int hf_btmesh_generic_level_set_unacknowledged_transition_time_resolution
;
1125 static int hf_btmesh_generic_level_set_unacknowledged_delay
;
1126 static int hf_btmesh_generic_level_status_present_level
;
1127 static int hf_btmesh_generic_level_status_target_level
;
1128 static int hf_btmesh_generic_level_status_remaining_time
;
1129 static int hf_btmesh_generic_level_status_remaining_time_steps
;
1130 static int hf_btmesh_generic_level_status_remaining_time_resolution
;
1131 static int hf_btmesh_generic_delta_set_delta_level
;
1132 static int hf_btmesh_generic_delta_set_tid
;
1133 static int hf_btmesh_generic_delta_set_transition_time
;
1134 static int hf_btmesh_generic_delta_set_transition_time_steps
;
1135 static int hf_btmesh_generic_delta_set_transition_time_resolution
;
1136 static int hf_btmesh_generic_delta_set_delay
;
1137 static int hf_btmesh_generic_delta_set_unacknowledged_delta_level
;
1138 static int hf_btmesh_generic_delta_set_unacknowledged_tid
;
1139 static int hf_btmesh_generic_delta_set_unacknowledged_transition_time
;
1140 static int hf_btmesh_generic_delta_set_unacknowledged_transition_time_steps
;
1141 static int hf_btmesh_generic_delta_set_unacknowledged_transition_time_resolution
;
1142 static int hf_btmesh_generic_delta_set_unacknowledged_delay
;
1143 static int hf_btmesh_generic_move_set_delta_level
;
1144 static int hf_btmesh_generic_move_set_tid
;
1145 static int hf_btmesh_generic_move_set_transition_time
;
1146 static int hf_btmesh_generic_move_set_transition_time_steps
;
1147 static int hf_btmesh_generic_move_set_transition_time_resolution
;
1148 static int hf_btmesh_generic_move_set_delay
;
1149 static int hf_btmesh_generic_move_set_unacknowledged_delta_level
;
1150 static int hf_btmesh_generic_move_set_unacknowledged_tid
;
1151 static int hf_btmesh_generic_move_set_unacknowledged_transition_time
;
1152 static int hf_btmesh_generic_move_set_unacknowledged_transition_time_steps
;
1153 static int hf_btmesh_generic_move_set_unacknowledged_transition_time_resolution
;
1154 static int hf_btmesh_generic_move_set_unacknowledged_delay
;
1155 static int hf_btmesh_generic_default_transition_time_set_transition_time
;
1156 static int hf_btmesh_generic_default_transition_time_set_transition_time_steps
;
1157 static int hf_btmesh_generic_default_transition_time_set_transition_time_resolution
;
1158 static int hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time
;
1159 static int hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_steps
;
1160 static int hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_resolution
;
1161 static int hf_btmesh_generic_default_transition_time_status_transition_time
;
1162 static int hf_btmesh_generic_default_transition_time_status_transition_time_steps
;
1163 static int hf_btmesh_generic_default_transition_time_status_transition_time_resolution
;
1164 static int hf_btmesh_generic_onpowerup_status_onpowerup
;
1165 static int hf_btmesh_generic_onpowerup_set_onpowerup
;
1166 static int hf_btmesh_generic_onpowerup_set_unacknowledged_onpowerup
;
1167 static int hf_btmesh_generic_power_level_set_power
;
1168 static int hf_btmesh_generic_power_level_set_tid
;
1169 static int hf_btmesh_generic_power_level_set_transition_time
;
1170 static int hf_btmesh_generic_power_level_set_transition_time_steps
;
1171 static int hf_btmesh_generic_power_level_set_transition_time_resolution
;
1172 static int hf_btmesh_generic_power_level_set_delay
;
1173 static int hf_btmesh_generic_power_level_set_unacknowledged_power
;
1174 static int hf_btmesh_generic_power_level_set_unacknowledged_tid
;
1175 static int hf_btmesh_generic_power_level_set_unacknowledged_transition_time
;
1176 static int hf_btmesh_generic_power_level_set_unacknowledged_transition_time_steps
;
1177 static int hf_btmesh_generic_power_level_set_unacknowledged_transition_time_resolution
;
1178 static int hf_btmesh_generic_power_level_set_unacknowledged_delay
;
1179 static int hf_btmesh_generic_power_level_status_present_power
;
1180 static int hf_btmesh_generic_power_level_status_target_power
;
1181 static int hf_btmesh_generic_power_level_status_remaining_time
;
1182 static int hf_btmesh_generic_power_level_status_remaining_time_steps
;
1183 static int hf_btmesh_generic_power_level_status_remaining_time_resolution
;
1184 static int hf_btmesh_generic_power_last_status_power
;
1185 static int hf_btmesh_generic_power_default_status_power
;
1186 static int hf_btmesh_generic_power_range_status_status_code
;
1187 static int hf_btmesh_generic_power_range_status_range_min
;
1188 static int hf_btmesh_generic_power_range_status_range_max
;
1189 static int hf_btmesh_generic_power_default_set_power
;
1190 static int hf_btmesh_generic_power_default_set_unacknowledged_power
;
1191 static int hf_btmesh_generic_power_range_set_range_min
;
1192 static int hf_btmesh_generic_power_range_set_range_max
;
1193 static int hf_btmesh_generic_power_range_set_unacknowledged_range_min
;
1194 static int hf_btmesh_generic_power_range_set_unacknowledged_range_max
;
1195 static int hf_btmesh_generic_battery_status_battery_level
;
1196 static int hf_btmesh_generic_battery_status_time_to_discharge
;
1197 static int hf_btmesh_generic_battery_status_time_to_charge
;
1198 static int hf_btmesh_generic_battery_status_flags_presence
;
1199 static int hf_btmesh_generic_battery_status_flags_indicator
;
1200 static int hf_btmesh_generic_battery_status_flags_charging
;
1201 static int hf_btmesh_generic_battery_status_flags_serviceability
;
1202 static int hf_btmesh_generic_location_local_status_local_north
;
1203 static int hf_btmesh_generic_location_local_status_local_east
;
1204 static int hf_btmesh_generic_location_local_status_local_altitude
;
1205 static int hf_btmesh_generic_location_local_status_floor_number
;
1206 static int hf_btmesh_generic_location_local_status_uncertainty_stationary
;
1207 static int hf_btmesh_generic_location_local_status_uncertainty_rfu
;
1208 static int hf_btmesh_generic_location_local_status_uncertainty_update_time
;
1209 static int hf_btmesh_generic_location_local_status_uncertainty_precision
;
1210 static int hf_btmesh_generic_location_local_set_local_north
;
1211 static int hf_btmesh_generic_location_local_set_local_east
;
1212 static int hf_btmesh_generic_location_local_set_local_altitude
;
1213 static int hf_btmesh_generic_location_local_set_floor_number
;
1214 static int hf_btmesh_generic_location_local_set_uncertainty_stationary
;
1215 static int hf_btmesh_generic_location_local_set_uncertainty_rfu
;
1216 static int hf_btmesh_generic_location_local_set_uncertainty_update_time
;
1217 static int hf_btmesh_generic_location_local_set_uncertainty_precision
;
1218 static int hf_btmesh_generic_location_local_set_unacknowledged_local_north
;
1219 static int hf_btmesh_generic_location_local_set_unacknowledged_local_east
;
1220 static int hf_btmesh_generic_location_local_set_unacknowledged_local_altitude
;
1221 static int hf_btmesh_generic_location_local_set_unacknowledged_floor_number
;
1222 static int hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_stationary
;
1223 static int hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_rfu
;
1224 static int hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_update_time
;
1225 static int hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_precision
;
1226 static int hf_btmesh_scene_status_status_code
;
1227 static int hf_btmesh_scene_status_current_scene
;
1228 static int hf_btmesh_scene_status_target_scene
;
1229 static int hf_btmesh_scene_status_remaining_time
;
1230 static int hf_btmesh_scene_status_remaining_time_steps
;
1231 static int hf_btmesh_scene_status_remaining_time_resolution
;
1232 static int hf_btmesh_scene_recall_scene_number
;
1233 static int hf_btmesh_scene_recall_tid
;
1234 static int hf_btmesh_scene_recall_transition_time
;
1235 static int hf_btmesh_scene_recall_transition_time_steps
;
1236 static int hf_btmesh_scene_recall_transition_time_resolution
;
1237 static int hf_btmesh_scene_recall_delay
;
1238 static int hf_btmesh_scene_recall_unacknowledged_scene_number
;
1239 static int hf_btmesh_scene_recall_unacknowledged_tid
;
1240 static int hf_btmesh_scene_recall_unacknowledged_transition_time
;
1241 static int hf_btmesh_scene_recall_unacknowledged_transition_time_steps
;
1242 static int hf_btmesh_scene_recall_unacknowledged_transition_time_resolution
;
1243 static int hf_btmesh_scene_recall_unacknowledged_delay
;
1244 static int hf_btmesh_scene_register_status_status_code
;
1245 static int hf_btmesh_scene_register_status_current_scene
;
1246 static int hf_btmesh_scene_register_status_scene
;
1247 static int hf_btmesh_scene_store_scene_number
;
1248 static int hf_btmesh_scene_store_unacknowledged_scene_number
;
1249 static int hf_btmesh_scene_delete_scene_number
;
1250 static int hf_btmesh_scene_delete_unacknowledged_scene_number
;
1251 static int hf_btmesh_time_set_tai_seconds
;
1252 static int hf_btmesh_time_set_subsecond
;
1253 static int hf_btmesh_time_set_uncertainty
;
1254 static int hf_btmesh_time_set_time_authority
;
1255 static int hf_btmesh_time_set_tai_utc_delta
;
1256 static int hf_btmesh_time_set_time_zone_offset
;
1257 static int hf_btmesh_time_status_tai_seconds
;
1258 static int hf_btmesh_time_status_subsecond
;
1259 static int hf_btmesh_time_status_uncertainty
;
1260 static int hf_btmesh_time_status_time_authority
;
1261 static int hf_btmesh_time_status_tai_utc_delta
;
1262 static int hf_btmesh_time_status_time_zone_offset
;
1263 static int hf_btmesh_scheduler_action_status_index
;
1264 static int hf_btmesh_scheduler_action_status_schedule_register_year
;
1265 static int hf_btmesh_scheduler_action_status_schedule_register_month
;
1266 static int hf_btmesh_scheduler_action_status_schedule_register_day
;
1267 static int hf_btmesh_scheduler_action_status_schedule_register_hour
;
1268 static int hf_btmesh_scheduler_action_status_schedule_register_minute
;
1269 static int hf_btmesh_scheduler_action_status_schedule_register_second
;
1270 static int hf_btmesh_scheduler_action_status_schedule_register_day_of_week
;
1271 static int hf_btmesh_scheduler_action_status_schedule_register_action
;
1272 static int hf_btmesh_scheduler_action_status_schedule_register_transition_time
;
1273 static int hf_btmesh_scheduler_action_status_schedule_register_transition_time_steps
;
1274 static int hf_btmesh_scheduler_action_status_schedule_register_transition_time_resolution
;
1275 static int hf_btmesh_scheduler_action_status_schedule_register_scene_number
;
1276 static int hf_btmesh_scheduler_schedule_register_month_january
;
1277 static int hf_btmesh_scheduler_schedule_register_month_february
;
1278 static int hf_btmesh_scheduler_schedule_register_month_march
;
1279 static int hf_btmesh_scheduler_schedule_register_month_april
;
1280 static int hf_btmesh_scheduler_schedule_register_month_may
;
1281 static int hf_btmesh_scheduler_schedule_register_month_june
;
1282 static int hf_btmesh_scheduler_schedule_register_month_july
;
1283 static int hf_btmesh_scheduler_schedule_register_month_august
;
1284 static int hf_btmesh_scheduler_schedule_register_month_september
;
1285 static int hf_btmesh_scheduler_schedule_register_month_october
;
1286 static int hf_btmesh_scheduler_schedule_register_month_november
;
1287 static int hf_btmesh_scheduler_schedule_register_month_december
;
1288 static int hf_btmesh_scheduler_schedule_register_day_of_week_monday
;
1289 static int hf_btmesh_scheduler_schedule_register_day_of_week_tuesday
;
1290 static int hf_btmesh_scheduler_schedule_register_day_of_week_wednesday
;
1291 static int hf_btmesh_scheduler_schedule_register_day_of_week_thursday
;
1292 static int hf_btmesh_scheduler_schedule_register_day_of_week_friday
;
1293 static int hf_btmesh_scheduler_schedule_register_day_of_week_saturday
;
1294 static int hf_btmesh_scheduler_schedule_register_day_of_week_sunday
;
1295 static int hf_btmesh_scheduler_action_set_index
;
1296 static int hf_btmesh_scheduler_action_set_schedule_register_year
;
1297 static int hf_btmesh_scheduler_action_set_schedule_register_month
;
1298 static int hf_btmesh_scheduler_action_set_schedule_register_day
;
1299 static int hf_btmesh_scheduler_action_set_schedule_register_hour
;
1300 static int hf_btmesh_scheduler_action_set_schedule_register_minute
;
1301 static int hf_btmesh_scheduler_action_set_schedule_register_second
;
1302 static int hf_btmesh_scheduler_action_set_schedule_register_day_of_week
;
1303 static int hf_btmesh_scheduler_action_set_schedule_register_action
;
1304 static int hf_btmesh_scheduler_action_set_schedule_register_transition_time
;
1305 static int hf_btmesh_scheduler_action_set_schedule_register_transition_time_steps
;
1306 static int hf_btmesh_scheduler_action_set_schedule_register_transition_time_resolution
;
1307 static int hf_btmesh_scheduler_action_set_schedule_register_scene_number
;
1308 static int hf_btmesh_scheduler_action_set_unacknowledged_index
;
1309 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_year
;
1310 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_month
;
1311 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day
;
1312 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_hour
;
1313 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_minute
;
1314 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_second
;
1315 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day_of_week
;
1316 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_action
;
1317 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time
;
1318 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_steps
;
1319 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_resolution
;
1320 static int hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_scene_number
;
1321 static int hf_btmesh_time_role_set_time_role
;
1322 static int hf_btmesh_time_role_status_time_role
;
1323 static int hf_btmesh_time_zone_set_time_zone_offset_new
;
1324 static int hf_btmesh_time_zone_set_tai_of_zone_change
;
1325 static int hf_btmesh_time_zone_status_time_zone_offset_current
;
1326 static int hf_btmesh_time_zone_status_time_zone_offset_new
;
1327 static int hf_btmesh_time_zone_status_tai_of_zone_change
;
1328 static int hf_btmesh_tai_utc_delta_set_tai_utc_delta_new
;
1329 static int hf_btmesh_tai_utc_delta_set_padding
;
1330 static int hf_btmesh_tai_utc_delta_set_tai_of_delta_change
;
1331 static int hf_btmesh_tai_utc_delta_status_tai_utc_delta_current
;
1332 static int hf_btmesh_tai_utc_delta_status_padding_1
;
1333 static int hf_btmesh_tai_utc_delta_status_tai_utc_delta_new
;
1334 static int hf_btmesh_tai_utc_delta_status_padding_2
;
1335 static int hf_btmesh_tai_utc_delta_status_tai_of_delta_change
;
1336 static int hf_btmesh_scheduler_action_get_index
;
1337 static int hf_btmesh_scheduler_status_schedules
;
1338 static int hf_btmesh_scheduler_status_schedules_schedule_0
;
1339 static int hf_btmesh_scheduler_status_schedules_schedule_1
;
1340 static int hf_btmesh_scheduler_status_schedules_schedule_2
;
1341 static int hf_btmesh_scheduler_status_schedules_schedule_3
;
1342 static int hf_btmesh_scheduler_status_schedules_schedule_4
;
1343 static int hf_btmesh_scheduler_status_schedules_schedule_5
;
1344 static int hf_btmesh_scheduler_status_schedules_schedule_6
;
1345 static int hf_btmesh_scheduler_status_schedules_schedule_7
;
1346 static int hf_btmesh_scheduler_status_schedules_schedule_8
;
1347 static int hf_btmesh_scheduler_status_schedules_schedule_9
;
1348 static int hf_btmesh_scheduler_status_schedules_schedule_10
;
1349 static int hf_btmesh_scheduler_status_schedules_schedule_11
;
1350 static int hf_btmesh_scheduler_status_schedules_schedule_12
;
1351 static int hf_btmesh_scheduler_status_schedules_schedule_13
;
1352 static int hf_btmesh_scheduler_status_schedules_schedule_14
;
1353 static int hf_btmesh_scheduler_status_schedules_schedule_15
;
1355 static int hf_btmesh_light_lc_property_set_light_lc_property_id
;
1356 static int hf_btmesh_light_lc_property_set_light_lc_property_value
;
1357 static int hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_id
;
1358 static int hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_value
;
1359 static int hf_btmesh_light_lc_property_status_light_lc_property_id
;
1360 static int hf_btmesh_light_lc_property_status_light_lc_property_value
;
1361 static int hf_btmesh_light_lightness_set_lightness
;
1362 static int hf_btmesh_light_lightness_set_tid
;
1363 static int hf_btmesh_light_lightness_set_transition_time
;
1364 static int hf_btmesh_light_lightness_set_transition_time_steps
;
1365 static int hf_btmesh_light_lightness_set_transition_time_resolution
;
1366 static int hf_btmesh_light_lightness_set_delay
;
1367 static int hf_btmesh_light_lightness_set_unacknowledged_lightness
;
1368 static int hf_btmesh_light_lightness_set_unacknowledged_tid
;
1369 static int hf_btmesh_light_lightness_set_unacknowledged_transition_time
;
1370 static int hf_btmesh_light_lightness_set_unacknowledged_transition_time_steps
;
1371 static int hf_btmesh_light_lightness_set_unacknowledged_transition_time_resolution
;
1372 static int hf_btmesh_light_lightness_set_unacknowledged_delay
;
1373 static int hf_btmesh_light_lightness_status_present_lightness
;
1374 static int hf_btmesh_light_lightness_status_target_lightness
;
1375 static int hf_btmesh_light_lightness_status_remaining_time
;
1376 static int hf_btmesh_light_lightness_status_remaining_time_steps
;
1377 static int hf_btmesh_light_lightness_status_remaining_time_resolution
;
1378 static int hf_btmesh_light_lightness_linear_set_lightness
;
1379 static int hf_btmesh_light_lightness_linear_set_tid
;
1380 static int hf_btmesh_light_lightness_linear_set_transition_time
;
1381 static int hf_btmesh_light_lightness_linear_set_transition_time_steps
;
1382 static int hf_btmesh_light_lightness_linear_set_transition_time_resolution
;
1383 static int hf_btmesh_light_lightness_linear_set_delay
;
1384 static int hf_btmesh_light_lightness_linear_set_unacknowledged_lightness
;
1385 static int hf_btmesh_light_lightness_linear_set_unacknowledged_tid
;
1386 static int hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time
;
1387 static int hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_steps
;
1388 static int hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_resolution
;
1389 static int hf_btmesh_light_lightness_linear_set_unacknowledged_delay
;
1390 static int hf_btmesh_light_lightness_linear_status_present_lightness
;
1391 static int hf_btmesh_light_lightness_linear_status_target_lightness
;
1392 static int hf_btmesh_light_lightness_linear_status_remaining_time
;
1393 static int hf_btmesh_light_lightness_linear_status_remaining_time_steps
;
1394 static int hf_btmesh_light_lightness_linear_status_remaining_time_resolution
;
1395 static int hf_btmesh_light_lightness_last_status_lightness
;
1396 static int hf_btmesh_light_lightness_default_status_lightness
;
1397 static int hf_btmesh_light_lightness_range_status_status_code
;
1398 static int hf_btmesh_light_lightness_range_status_range_min
;
1399 static int hf_btmesh_light_lightness_range_status_range_max
;
1400 static int hf_btmesh_light_lightness_default_set_lightness
;
1401 static int hf_btmesh_light_lightness_default_set_unacknowledged_lightness
;
1402 static int hf_btmesh_light_lightness_range_set_range_min
;
1403 static int hf_btmesh_light_lightness_range_set_range_max
;
1404 static int hf_btmesh_light_lightness_range_set_unacknowledged_range_min
;
1405 static int hf_btmesh_light_lightness_range_set_unacknowledged_range_max
;
1406 static int hf_btmesh_light_ctl_set_ctl_lightness
;
1407 static int hf_btmesh_light_ctl_set_ctl_temperature
;
1408 static int hf_btmesh_light_ctl_set_ctl_delta_uv
;
1409 static int hf_btmesh_light_ctl_set_tid
;
1410 static int hf_btmesh_light_ctl_set_transition_time
;
1411 static int hf_btmesh_light_ctl_set_transition_time_steps
;
1412 static int hf_btmesh_light_ctl_set_transition_time_resolution
;
1413 static int hf_btmesh_light_ctl_set_delay
;
1414 static int hf_btmesh_light_ctl_set_unacknowledged_ctl_lightness
;
1415 static int hf_btmesh_light_ctl_set_unacknowledged_ctl_temperature
;
1416 static int hf_btmesh_light_ctl_set_unacknowledged_ctl_delta_uv
;
1417 static int hf_btmesh_light_ctl_set_unacknowledged_tid
;
1418 static int hf_btmesh_light_ctl_set_unacknowledged_transition_time
;
1419 static int hf_btmesh_light_ctl_set_unacknowledged_transition_time_steps
;
1420 static int hf_btmesh_light_ctl_set_unacknowledged_transition_time_resolution
;
1421 static int hf_btmesh_light_ctl_set_unacknowledged_delay
;
1422 static int hf_btmesh_light_ctl_status_present_ctl_lightness
;
1423 static int hf_btmesh_light_ctl_status_present_ctl_temperature
;
1424 static int hf_btmesh_light_ctl_status_target_ctl_lightness
;
1425 static int hf_btmesh_light_ctl_status_target_ctl_temperature
;
1426 static int hf_btmesh_light_ctl_status_remaining_time
;
1427 static int hf_btmesh_light_ctl_status_remaining_time_steps
;
1428 static int hf_btmesh_light_ctl_status_remaining_time_resolution
;
1429 static int hf_btmesh_light_ctl_temperature_range_status_status_code
;
1430 static int hf_btmesh_light_ctl_temperature_range_status_range_min
;
1431 static int hf_btmesh_light_ctl_temperature_range_status_range_max
;
1432 static int hf_btmesh_light_ctl_temperature_set_ctl_temperature
;
1433 static int hf_btmesh_light_ctl_temperature_set_ctl_delta_uv
;
1434 static int hf_btmesh_light_ctl_temperature_set_tid
;
1435 static int hf_btmesh_light_ctl_temperature_set_transition_time
;
1436 static int hf_btmesh_light_ctl_temperature_set_transition_time_steps
;
1437 static int hf_btmesh_light_ctl_temperature_set_transition_time_resolution
;
1438 static int hf_btmesh_light_ctl_temperature_set_delay
;
1439 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_temperature
;
1440 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_delta_uv
;
1441 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_tid
;
1442 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time
;
1443 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_steps
;
1444 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_resolution
;
1445 static int hf_btmesh_light_ctl_temperature_set_unacknowledged_delay
;
1446 static int hf_btmesh_light_ctl_temperature_status_present_ctl_temperature
;
1447 static int hf_btmesh_light_ctl_temperature_status_present_ctl_delta_uv
;
1448 static int hf_btmesh_light_ctl_temperature_status_target_ctl_temperature
;
1449 static int hf_btmesh_light_ctl_temperature_status_target_ctl_delta_uv
;
1450 static int hf_btmesh_light_ctl_temperature_status_remaining_time
;
1451 static int hf_btmesh_light_ctl_temperature_status_remaining_time_steps
;
1452 static int hf_btmesh_light_ctl_temperature_status_remaining_time_resolution
;
1453 static int hf_btmesh_light_ctl_default_status_lightness
;
1454 static int hf_btmesh_light_ctl_default_status_temperature
;
1455 static int hf_btmesh_light_ctl_default_status_delta_uv
;
1456 static int hf_btmesh_light_ctl_default_set_lightness
;
1457 static int hf_btmesh_light_ctl_default_set_temperature
;
1458 static int hf_btmesh_light_ctl_default_set_delta_uv
;
1459 static int hf_btmesh_light_ctl_default_set_unacknowledged_lightness
;
1460 static int hf_btmesh_light_ctl_default_set_unacknowledged_temperature
;
1461 static int hf_btmesh_light_ctl_default_set_unacknowledged_delta_uv
;
1462 static int hf_btmesh_light_ctl_temperature_range_set_range_min
;
1463 static int hf_btmesh_light_ctl_temperature_range_set_range_max
;
1464 static int hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_min
;
1465 static int hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_max
;
1466 static int hf_btmesh_light_hsl_hue_set_hue
;
1467 static int hf_btmesh_light_hsl_hue_set_tid
;
1468 static int hf_btmesh_light_hsl_hue_set_transition_time
;
1469 static int hf_btmesh_light_hsl_hue_set_transition_time_steps
;
1470 static int hf_btmesh_light_hsl_hue_set_transition_time_resolution
;
1471 static int hf_btmesh_light_hsl_hue_set_delay
;
1472 static int hf_btmesh_light_hsl_hue_set_unacknowledged_hue
;
1473 static int hf_btmesh_light_hsl_hue_set_unacknowledged_tid
;
1474 static int hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time
;
1475 static int hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_steps
;
1476 static int hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_resolution
;
1477 static int hf_btmesh_light_hsl_hue_set_unacknowledged_delay
;
1478 static int hf_btmesh_light_hsl_hue_status_present_hue
;
1479 static int hf_btmesh_light_hsl_hue_status_target_hue
;
1480 static int hf_btmesh_light_hsl_hue_status_remaining_time
;
1481 static int hf_btmesh_light_hsl_hue_status_remaining_time_steps
;
1482 static int hf_btmesh_light_hsl_hue_status_remaining_time_resolution
;
1483 static int hf_btmesh_light_hsl_saturation_set_saturation
;
1484 static int hf_btmesh_light_hsl_saturation_set_tid
;
1485 static int hf_btmesh_light_hsl_saturation_set_transition_time
;
1486 static int hf_btmesh_light_hsl_saturation_set_transition_time_steps
;
1487 static int hf_btmesh_light_hsl_saturation_set_transition_time_resolution
;
1488 static int hf_btmesh_light_hsl_saturation_set_delay
;
1489 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_saturation
;
1490 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_tid
;
1491 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time
;
1492 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_steps
;
1493 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_resolution
;
1494 static int hf_btmesh_light_hsl_saturation_set_unacknowledged_delay
;
1495 static int hf_btmesh_light_hsl_saturation_status_present_saturation
;
1496 static int hf_btmesh_light_hsl_saturation_status_target_saturation
;
1497 static int hf_btmesh_light_hsl_saturation_status_remaining_time
;
1498 static int hf_btmesh_light_hsl_saturation_status_remaining_time_steps
;
1499 static int hf_btmesh_light_hsl_saturation_status_remaining_time_resolution
;
1500 static int hf_btmesh_light_hsl_set_hsl_lightness
;
1501 static int hf_btmesh_light_hsl_set_hsl_hue
;
1502 static int hf_btmesh_light_hsl_set_hsl_saturation
;
1503 static int hf_btmesh_light_hsl_set_tid
;
1504 static int hf_btmesh_light_hsl_set_transition_time
;
1505 static int hf_btmesh_light_hsl_set_transition_time_steps
;
1506 static int hf_btmesh_light_hsl_set_transition_time_resolution
;
1507 static int hf_btmesh_light_hsl_set_delay
;
1508 static int hf_btmesh_light_hsl_set_unacknowledged_hsl_lightness
;
1509 static int hf_btmesh_light_hsl_set_unacknowledged_hsl_hue
;
1510 static int hf_btmesh_light_hsl_set_unacknowledged_hsl_saturation
;
1511 static int hf_btmesh_light_hsl_set_unacknowledged_tid
;
1512 static int hf_btmesh_light_hsl_set_unacknowledged_transition_time
;
1513 static int hf_btmesh_light_hsl_set_unacknowledged_transition_time_steps
;
1514 static int hf_btmesh_light_hsl_set_unacknowledged_transition_time_resolution
;
1515 static int hf_btmesh_light_hsl_set_unacknowledged_delay
;
1516 static int hf_btmesh_light_hsl_status_hsl_lightness
;
1517 static int hf_btmesh_light_hsl_status_hsl_hue
;
1518 static int hf_btmesh_light_hsl_status_hsl_saturation
;
1519 static int hf_btmesh_light_hsl_status_remaining_time
;
1520 static int hf_btmesh_light_hsl_status_remaining_time_steps
;
1521 static int hf_btmesh_light_hsl_status_remaining_time_resolution
;
1522 static int hf_btmesh_light_hsl_target_status_hsl_lightness_target
;
1523 static int hf_btmesh_light_hsl_target_status_hsl_hue_target
;
1524 static int hf_btmesh_light_hsl_target_status_hsl_saturation_target
;
1525 static int hf_btmesh_light_hsl_target_status_remaining_time
;
1526 static int hf_btmesh_light_hsl_target_status_remaining_time_steps
;
1527 static int hf_btmesh_light_hsl_target_status_remaining_time_resolution
;
1528 static int hf_btmesh_light_hsl_default_status_lightness
;
1529 static int hf_btmesh_light_hsl_default_status_hue
;
1530 static int hf_btmesh_light_hsl_default_status_saturation
;
1531 static int hf_btmesh_light_hsl_range_status_status_code
;
1532 static int hf_btmesh_light_hsl_range_status_hue_range_min
;
1533 static int hf_btmesh_light_hsl_range_status_hue_range_max
;
1534 static int hf_btmesh_light_hsl_range_status_saturation_range_min
;
1535 static int hf_btmesh_light_hsl_range_status_saturation_range_max
;
1536 static int hf_btmesh_light_hsl_default_set_lightness
;
1537 static int hf_btmesh_light_hsl_default_set_hue
;
1538 static int hf_btmesh_light_hsl_default_set_saturation
;
1539 static int hf_btmesh_light_hsl_default_set_unacknowledged_lightness
;
1540 static int hf_btmesh_light_hsl_default_set_unacknowledged_hue
;
1541 static int hf_btmesh_light_hsl_default_set_unacknowledged_saturation
;
1542 static int hf_btmesh_light_hsl_range_set_hue_range_min
;
1543 static int hf_btmesh_light_hsl_range_set_hue_range_max
;
1544 static int hf_btmesh_light_hsl_range_set_saturation_range_min
;
1545 static int hf_btmesh_light_hsl_range_set_saturation_range_max
;
1546 static int hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_min
;
1547 static int hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_max
;
1548 static int hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_min
;
1549 static int hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_max
;
1550 static int hf_btmesh_light_xyl_set_xyl_lightness
;
1551 static int hf_btmesh_light_xyl_set_xyl_x
;
1552 static int hf_btmesh_light_xyl_set_xyl_y
;
1553 static int hf_btmesh_light_xyl_set_tid
;
1554 static int hf_btmesh_light_xyl_set_transition_time
;
1555 static int hf_btmesh_light_xyl_set_transition_time_steps
;
1556 static int hf_btmesh_light_xyl_set_transition_time_resolution
;
1557 static int hf_btmesh_light_xyl_set_delay
;
1558 static int hf_btmesh_light_xyl_set_unacknowledged_xyl_lightness
;
1559 static int hf_btmesh_light_xyl_set_unacknowledged_xyl_x
;
1560 static int hf_btmesh_light_xyl_set_unacknowledged_xyl_y
;
1561 static int hf_btmesh_light_xyl_set_unacknowledged_tid
;
1562 static int hf_btmesh_light_xyl_set_unacknowledged_transition_time
;
1563 static int hf_btmesh_light_xyl_set_unacknowledged_transition_time_steps
;
1564 static int hf_btmesh_light_xyl_set_unacknowledged_transition_time_resolution
;
1565 static int hf_btmesh_light_xyl_set_unacknowledged_delay
;
1566 static int hf_btmesh_light_xyl_status_xyl_lightness
;
1567 static int hf_btmesh_light_xyl_status_xyl_x
;
1568 static int hf_btmesh_light_xyl_status_xyl_y
;
1569 static int hf_btmesh_light_xyl_status_remaining_time
;
1570 static int hf_btmesh_light_xyl_status_remaining_time_steps
;
1571 static int hf_btmesh_light_xyl_status_remaining_time_resolution
;
1572 static int hf_btmesh_light_xyl_target_status_target_xyl_lightness
;
1573 static int hf_btmesh_light_xyl_target_status_target_xyl_x
;
1574 static int hf_btmesh_light_xyl_target_status_target_xyl_y
;
1575 static int hf_btmesh_light_xyl_target_status_remaining_time
;
1576 static int hf_btmesh_light_xyl_target_status_remaining_time_steps
;
1577 static int hf_btmesh_light_xyl_target_status_remaining_time_resolution
;
1578 static int hf_btmesh_light_xyl_default_status_lightness
;
1579 static int hf_btmesh_light_xyl_default_status_xyl_x
;
1580 static int hf_btmesh_light_xyl_default_status_xyl_y
;
1581 static int hf_btmesh_light_xyl_range_status_status_code
;
1582 static int hf_btmesh_light_xyl_range_status_xyl_x_range_min
;
1583 static int hf_btmesh_light_xyl_range_status_xyl_x_range_max
;
1584 static int hf_btmesh_light_xyl_range_status_xyl_y_range_min
;
1585 static int hf_btmesh_light_xyl_range_status_xyl_y_range_max
;
1586 static int hf_btmesh_light_xyl_default_set_lightness
;
1587 static int hf_btmesh_light_xyl_default_set_xyl_x
;
1588 static int hf_btmesh_light_xyl_default_set_xyl_y
;
1589 static int hf_btmesh_light_xyl_default_set_unacknowledged_lightness
;
1590 static int hf_btmesh_light_xyl_default_set_unacknowledged_xyl_x
;
1591 static int hf_btmesh_light_xyl_default_set_unacknowledged_xyl_y
;
1592 static int hf_btmesh_light_xyl_range_set_xyl_x_range_min
;
1593 static int hf_btmesh_light_xyl_range_set_xyl_x_range_max
;
1594 static int hf_btmesh_light_xyl_range_set_xyl_y_range_min
;
1595 static int hf_btmesh_light_xyl_range_set_xyl_y_range_max
;
1596 static int hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_min
;
1597 static int hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_max
;
1598 static int hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_min
;
1599 static int hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_max
;
1600 static int hf_btmesh_light_lc_mode_set_mode
;
1601 static int hf_btmesh_light_lc_mode_set_unacknowledged_mode
;
1602 static int hf_btmesh_light_lc_mode_status_mode
;
1603 static int hf_btmesh_light_lc_om_set_mode
;
1604 static int hf_btmesh_light_lc_om_set_unacknowledged_mode
;
1605 static int hf_btmesh_light_lc_om_status_mode
;
1606 static int hf_btmesh_light_lc_light_onoff_set_light_onoff
;
1607 static int hf_btmesh_light_lc_light_onoff_set_tid
;
1608 static int hf_btmesh_light_lc_light_onoff_set_transition_time
;
1609 static int hf_btmesh_light_lc_light_onoff_set_transition_time_steps
;
1610 static int hf_btmesh_light_lc_light_onoff_set_transition_time_resolution
;
1611 static int hf_btmesh_light_lc_light_onoff_set_delay
;
1612 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_light_onoff
;
1613 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_tid
;
1614 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time
;
1615 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_steps
;
1616 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_resolution
;
1617 static int hf_btmesh_light_lc_light_onoff_set_unacknowledged_delay
;
1618 static int hf_btmesh_light_lc_light_onoff_status_present_light_onoff
;
1619 static int hf_btmesh_light_lc_light_onoff_status_target_light_onoff
;
1620 static int hf_btmesh_light_lc_light_onoff_status_remaining_time
;
1621 static int hf_btmesh_light_lc_light_onoff_status_remaining_time_steps
;
1622 static int hf_btmesh_light_lc_light_onoff_status_remaining_time_resolution
;
1623 static int hf_btmesh_light_lc_property_get_light_lc_property_id
;
1625 static int hf_btmesh_generic_manufacturer_properties_status_manufacturer_property_id
;
1626 static int hf_btmesh_generic_manufacturer_property_set_manufacturer_property_id
;
1627 static int hf_btmesh_generic_manufacturer_property_set_manufacturer_user_access
;
1628 static int hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_property_id
;
1629 static int hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_user_access
;
1630 static int hf_btmesh_generic_manufacturer_property_status_manufacturer_property_id
;
1631 static int hf_btmesh_generic_manufacturer_property_status_manufacturer_user_access
;
1632 static int hf_btmesh_generic_manufacturer_property_status_manufacturer_property_value
;
1633 static int hf_btmesh_generic_admin_properties_status_admin_property_id
;
1634 static int hf_btmesh_generic_admin_property_set_admin_property_id
;
1635 static int hf_btmesh_generic_admin_property_set_admin_user_access
;
1636 static int hf_btmesh_generic_admin_property_set_admin_property_value
;
1637 static int hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_id
;
1638 static int hf_btmesh_generic_admin_property_set_unacknowledged_admin_user_access
;
1639 static int hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_value
;
1640 static int hf_btmesh_generic_admin_property_status_admin_property_id
;
1641 static int hf_btmesh_generic_admin_property_status_admin_user_access
;
1642 static int hf_btmesh_generic_admin_property_status_admin_property_value
;
1643 static int hf_btmesh_generic_user_properties_status_user_property_id
;
1644 static int hf_btmesh_generic_user_property_set_user_property_id
;
1645 static int hf_btmesh_generic_user_property_set_user_property_value
;
1646 static int hf_btmesh_generic_user_property_set_unacknowledged_user_property_id
;
1647 static int hf_btmesh_generic_user_property_set_unacknowledged_user_property_value
;
1648 static int hf_btmesh_generic_user_property_status_user_property_id
;
1649 static int hf_btmesh_generic_user_property_status_user_access
;
1650 static int hf_btmesh_generic_user_property_status_user_property_value
;
1651 static int hf_btmesh_generic_client_properties_get_client_property_id
;
1652 static int hf_btmesh_generic_client_properties_status_client_property_id
;
1653 static int hf_btmesh_sensor_descriptor_get_property_id
;
1654 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_property_id
;
1655 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_positive_tolerance
;
1656 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_negative_tolerance
;
1657 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_sampling_function
;
1658 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_measurement_period
;
1659 static int hf_btmesh_sensor_descriptor_status_descriptor_sensor_update_interval
;
1660 static int hf_btmesh_sensor_status_mpid_format
;
1661 static int hf_btmesh_sensor_status_mpid_format_a_length
;
1662 static int hf_btmesh_sensor_status_mpid_format_a_property_id
;
1663 static int hf_btmesh_sensor_status_mpid_format_b_length
;
1664 static int hf_btmesh_sensor_status_mpid_format_b_property_id
;
1665 static int hf_btmesh_sensor_status_raw_value
;
1666 static int hf_btmesh_sensor_column_status_property_id
;
1667 static int hf_btmesh_sensor_column_status_raw_value_a
;
1668 static int hf_btmesh_sensor_column_status_raw_value_b
;
1669 static int hf_btmesh_sensor_column_status_raw_value_c
;
1670 static int hf_btmesh_sensor_series_status_property_id
;
1671 static int hf_btmesh_sensor_series_status_raw_value_a
;
1672 static int hf_btmesh_sensor_series_status_raw_value_b
;
1673 static int hf_btmesh_sensor_series_status_raw_value_c
;
1674 static int hf_btmesh_sensor_cadence_set_property_id
;
1675 static int hf_btmesh_sensor_cadence_set_fast_cadence_period_divisor
;
1676 static int hf_btmesh_sensor_cadence_set_status_trigger_type
;
1677 static int hf_btmesh_sensor_cadence_set_status_trigger_delta_down
;
1678 static int hf_btmesh_sensor_cadence_set_status_trigger_delta_up
;
1679 static int hf_btmesh_sensor_cadence_set_status_min_interval
;
1680 static int hf_btmesh_sensor_cadence_set_fast_cadence_low
;
1681 static int hf_btmesh_sensor_cadence_set_fast_cadence_high
;
1682 static int hf_btmesh_sensor_cadence_set_remainder_not_dissected
;
1683 static int hf_btmesh_sensor_cadence_set_unacknowledged_property_id
;
1684 static int hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_period_divisor
;
1685 static int hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_type
;
1686 static int hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_down
;
1687 static int hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_up
;
1688 static int hf_btmesh_sensor_cadence_set_unacknowledged_status_min_interval
;
1689 static int hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_low
;
1690 static int hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_high
;
1691 static int hf_btmesh_sensor_cadence_set_unacknowledged_remainder_not_dissected
;
1692 static int hf_btmesh_sensor_cadence_status_property_id
;
1693 static int hf_btmesh_sensor_cadence_status_fast_cadence_period_divisor
;
1694 static int hf_btmesh_sensor_cadence_status_status_trigger_type
;
1695 static int hf_btmesh_sensor_cadence_status_status_trigger_delta_down
;
1696 static int hf_btmesh_sensor_cadence_status_status_trigger_delta_up
;
1697 static int hf_btmesh_sensor_cadence_status_status_min_interval
;
1698 static int hf_btmesh_sensor_cadence_status_fast_cadence_low
;
1699 static int hf_btmesh_sensor_cadence_status_fast_cadence_high
;
1700 static int hf_btmesh_sensor_cadence_status_remainder_not_dissected
;
1701 static int hf_btmesh_sensor_settings_status_sensor_property_id
;
1702 static int hf_btmesh_sensor_settings_status_sensor_setting_property_id
;
1703 static int hf_btmesh_sensor_setting_set_sensor_property_id
;
1704 static int hf_btmesh_sensor_setting_set_sensor_setting_property_id
;
1705 static int hf_btmesh_sensor_setting_set_sensor_setting_raw
;
1706 static int hf_btmesh_sensor_setting_set_unacknowledged_sensor_property_id
;
1707 static int hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_property_id
;
1708 static int hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_raw
;
1709 static int hf_btmesh_sensor_setting_status_sensor_property_id
;
1710 static int hf_btmesh_sensor_setting_status_sensor_setting_property_id
;
1711 static int hf_btmesh_sensor_setting_status_sensor_setting_access
;
1712 static int hf_btmesh_sensor_setting_status_sensor_setting_raw
;
1713 static int hf_btmesh_generic_manufacturer_property_get_manufacturer_property_id
;
1714 static int hf_btmesh_generic_admin_property_get_admin_property_id
;
1715 static int hf_btmesh_generic_user_property_get_user_property_id
;
1717 static int hf_btmesh_sensor_get_property_id
;
1718 static int hf_btmesh_sensor_column_get_property_id
;
1719 static int hf_btmesh_sensor_column_get_raw_value_a
;
1720 static int hf_btmesh_sensor_series_get_property_id
;
1721 static int hf_btmesh_sensor_series_get_raw_value_a1
;
1722 static int hf_btmesh_sensor_series_get_raw_value_a2
;
1723 static int hf_btmesh_sensor_cadence_get_property_id
;
1724 static int hf_btmesh_sensor_settings_get_sensor_property_id
;
1725 static int hf_btmesh_sensor_setting_get_sensor_property_id
;
1726 static int hf_btmesh_sensor_setting_get_sensor_setting_property_id
;
1728 static int hf_bt_phony_characteristic_percentage_change_16
;
1729 static int hf_bt_phony_characteristic_index
;
1730 static int hf_bt_characteristic_time_decihour_8
;
1731 static int hf_bt_characteristic_temperature_8
;
1732 static int hf_bt_characteristic_temperature
;
1733 static int hf_bt_characteristic_electric_current
;
1734 static int hf_bt_characteristic_energy
;
1735 static int hf_bt_characteristic_generic_level
;
1736 static int hf_bt_characteristic_boolean
;
1737 static int hf_bt_characteristic_coefficient
;
1738 static int hf_bt_characteristic_count_16
;
1739 static int hf_bt_characteristic_illuminance
;
1740 static int hf_bt_characteristic_perceived_lightness
;
1741 static int hf_bt_characteristic_percentage_8
;
1742 static int hf_bt_characteristic_time_millisecond_24
;
1743 static int hf_bt_characteristic_time_second_16
;
1746 bt_property_raw_value_entry_t sensor_column_status_hfs
= {
1747 .hf_raw_value_a
= &hf_btmesh_sensor_column_status_raw_value_a
,
1748 .hf_raw_value_b
= &hf_btmesh_sensor_column_status_raw_value_b
,
1749 .hf_raw_value_c
= &hf_btmesh_sensor_column_status_raw_value_c
1753 bt_property_raw_value_entry_t sensor_series_status_hfs
= {
1754 .hf_raw_value_a
= &hf_btmesh_sensor_series_status_raw_value_a
,
1755 .hf_raw_value_b
= &hf_btmesh_sensor_series_status_raw_value_b
,
1756 .hf_raw_value_c
= &hf_btmesh_sensor_series_status_raw_value_c
1760 bt_sensor_cadence_dissector_t sensor_cadence_set_hfs
= {
1761 .hf_status_trigger_delta_up
= &hf_btmesh_sensor_cadence_set_status_trigger_delta_down
,
1762 .hf_status_trigger_delta_down
= &hf_btmesh_sensor_cadence_set_status_trigger_delta_up
,
1763 .hf_status_min_interval
= &hf_btmesh_sensor_cadence_set_status_min_interval
,
1764 .hf_fast_cadence_low
= &hf_btmesh_sensor_cadence_set_fast_cadence_low
,
1765 .hf_fast_cadence_high
= &hf_btmesh_sensor_cadence_set_fast_cadence_high
,
1766 .hf_remainder_not_dissected
= &hf_btmesh_sensor_cadence_set_remainder_not_dissected
1770 bt_sensor_cadence_dissector_t sensor_cadence_set_unacknowledged_hfs
= {
1771 .hf_status_trigger_delta_up
= &hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_down
,
1772 .hf_status_trigger_delta_down
= &hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_up
,
1773 .hf_status_min_interval
= &hf_btmesh_sensor_cadence_set_unacknowledged_status_min_interval
,
1774 .hf_fast_cadence_low
= &hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_low
,
1775 .hf_fast_cadence_high
= &hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_high
,
1776 .hf_remainder_not_dissected
= &hf_btmesh_sensor_cadence_set_unacknowledged_remainder_not_dissected
1780 bt_sensor_cadence_dissector_t sensor_cadence_status_hfs
= {
1781 .hf_status_trigger_delta_up
= &hf_btmesh_sensor_cadence_status_status_trigger_delta_down
,
1782 .hf_status_trigger_delta_down
= &hf_btmesh_sensor_cadence_status_status_trigger_delta_up
,
1783 .hf_status_min_interval
= &hf_btmesh_sensor_cadence_status_status_min_interval
,
1784 .hf_fast_cadence_low
= &hf_btmesh_sensor_cadence_status_fast_cadence_low
,
1785 .hf_fast_cadence_high
= &hf_btmesh_sensor_cadence_status_fast_cadence_high
,
1786 .hf_remainder_not_dissected
= &hf_btmesh_sensor_cadence_status_remainder_not_dissected
1790 bt_property_columns_raw_value_t sensor_column_get_hfs
= {
1791 .hf_raw_value_a1
= &hf_btmesh_sensor_column_get_raw_value_a
,
1792 .hf_raw_value_a2
= NULL
1796 bt_property_columns_raw_value_t sensor_series_get_hfs
= {
1797 .hf_raw_value_a1
= &hf_btmesh_sensor_series_get_raw_value_a1
,
1798 .hf_raw_value_a2
= &hf_btmesh_sensor_series_get_raw_value_a2
1801 static int ett_btmesh
;
1802 static int ett_btmesh_net_pdu
;
1803 static int ett_btmesh_transp_pdu
;
1804 static int ett_btmesh_transp_ctrl_msg
;
1805 static int ett_btmesh_upper_transp_acc_pdu
;
1806 static int ett_btmesh_segmented_access_fragments
;
1807 static int ett_btmesh_segmented_access_fragment
;
1808 static int ett_btmesh_segmented_control_fragments
;
1809 static int ett_btmesh_segmented_control_fragment
;
1810 static int ett_btmesh_access_pdu
;
1811 static int ett_btmesh_model_layer
;
1813 static int ett_btmesh_config_model_netapp_index
;
1814 static int ett_btmesh_config_model_publishperiod
;
1815 static int ett_btmesh_config_model_publishretransmit
;
1816 static int ett_btmesh_config_model_relayretransmit
;
1817 static int ett_btmesh_config_model_network_transmit
;
1818 static int ett_btmesh_config_model_element
;
1819 static int ett_btmesh_config_model_model
;
1820 static int ett_btmesh_config_model_vendor
;
1821 static int ett_btmesh_config_composition_data_status_features
;
1822 static int ett_btmesh_config_model_pub_app_index
;
1823 static int ett_btmesh_config_model_addresses
;
1824 static int ett_btmesh_config_model_netkey_list
;
1825 static int ett_btmesh_config_model_appkey_list
;
1826 static int ett_btmesh_config_model_net_index
;
1827 static int ett_btmesh_config_model_app_index
;
1828 static int ett_btmesh_config_heartbeat_publication_set_features
;
1829 static int ett_btmesh_config_heartbeat_publication_status_features
;
1830 static int ett_btmesh_config_model_fault_array
;
1831 static int ett_btmesh_scene_register_status_scenes
;
1832 static int ett_btmesh_scheduler_model_month
;
1833 static int ett_btmesh_scheduler_model_day_of_week
;
1834 static int ett_btmesh_scheduler_schedules
;
1835 static int ett_btmesh_user_property_ids
;
1836 static int ett_btmesh_admin_property_ids
;
1837 static int ett_btmesh_manufacturer_property_ids
;
1838 static int ett_btmesh_generic_client_property_ids
;
1839 static int ett_btmesh_sensor_setting_property_ids
;
1841 static expert_field ei_btmesh_not_decoded_yet
;
1842 static expert_field ei_btmesh_unknown_payload
;
1844 static const value_string btmesh_ctl_vals
[] = {
1845 { 0, "Access Message" },
1846 { 1, "Control Message" },
1850 static const value_string btmesh_ctrl_seg_vals
[] = {
1851 { 0, "Unsegmented Control Message" },
1852 { 1, "Segmented Control Message" },
1856 static const value_string btmesh_acc_seg_vals
[] = {
1857 { 0, "Unsegmented Access Message" },
1858 { 1, "Segmented Access Message" },
1862 static const value_string btmesh_acc_akf_vals
[] = {
1863 { 0, "Device key" },
1864 { 1, "Application key" },
1868 static const value_string btmesh_ctrl_opcode_vals
[] = {
1869 { 0x0, "Segment Acknowledgment" }, /* Reserved for lower transport layer */
1870 { 0x1, "Friend Poll" },
1871 { 0x2, "Friend Update" },
1872 { 0x3, "Friend Request" },
1873 { 0x4, "Friend Offer" },
1874 { 0x5, "Friend Clear" },
1875 { 0x6, "Friend Clear Confirm" },
1876 { 0x7, "Friend Subscription List Add" },
1877 { 0x8, "Friend Subscription List Remove" },
1878 { 0x9, "Friend Subscription List Confirm" },
1879 { 0xa, "Heartbeat" },
1883 static const value_string btmesh_cntr_key_refresh_flag_vals
[] = {
1884 { 0x0, "Not-In-Phase2" },
1885 { 0x1, "In-Phase2" },
1889 static const value_string btmesh_cntr_iv_update_flag_vals
[] = {
1890 { 0x0, "Normal operation" },
1891 { 0x1, "IV Update active" },
1895 static const value_string btmesh_cntr_md_vals
[] = {
1896 { 0x0, "Friend Queue is empty" },
1897 { 0x1, "Friend Queue is not empty" },
1901 static const true_false_string btmesh_obo
= {
1902 "Friend node that is acknowledging this message on behalf of a Low Power node",
1903 "Node that is directly addressed by the received message"
1906 static const value_string btmesh_criteria_rssifactor_vals
[] = {
1914 static const value_string btmesh_criteria_receivewindowfactor_vals
[] = {
1922 static const value_string btmesh_criteria_minqueuesizelog_vals
[] = {
1923 { 0x0, "Prohibited" },
1934 static const value_string btmesh_szmic_vals
[] = {
1940 static const value_string btmesh_models_opcode_vals
[] = {
1941 /* Bluetooth Mesh Foundation messages */
1942 { CONFIG_APPKEY_ADD
, "Config AppKey Add" },
1943 { CONFIG_APPKEY_UPDATE
, "Config AppKey Update" },
1944 { CONFIG_COMPOSITION_DATA_STATUS
, "Config Composition Data Status" },
1945 { CONFIG_MODEL_PUBLICATION_SET
, "Config Model Publication Set" },
1946 { HEALTH_CURRENT_STATUS
, "Health Current Status" },
1947 { HEALTH_FAULT_STATUS
, "Health Fault Status" },
1948 { CONFIG_HEARTBEAT_PUBLICATION_STATUS
, "Config Heartbeat Publication Status" },
1949 { CONFIG_APPKEY_DELETE
, "Config AppKey Delete" },
1950 { CONFIG_APPKEY_GET
, "Config AppKey Get" },
1951 { CONFIG_APPKEY_LIST
, "Config AppKey List" },
1952 { CONFIG_APPKEY_STATUS
, "Config AppKey Status" },
1953 { HEALTH_ATTENTION_GET
, "Health Attention Get" },
1954 { HEALTH_ATTENTION_SET
, "Health Attention Set" },
1955 { HEALTH_ATTENTION_SET_UNACKNOWLEDGED
, "Health Attention Set Unacknowledged" },
1956 { HEALTH_ATTENTION_STATUS
, "Health Attention Status" },
1957 { CONFIG_COMPOSITION_DATA_GET
, "Config Composition Data Get" },
1958 { CONFIG_BEACON_GET
, "Config Beacon Get" },
1959 { CONFIG_BEACON_SET
, "Config Beacon Set" },
1960 { CONFIG_BEACON_STATUS
, "Config Beacon Status" },
1961 { CONFIG_DEFAULT_TTL_GET
, "Config Default TTL Get" },
1962 { CONFIG_DEFAULT_TTL_SET
, "Config Default TTL Set" },
1963 { CONFIG_DEFAULT_TTL_STATUS
, "Config Default TTL Status" },
1964 { CONFIG_FRIEND_GET
, "Config Friend Get" },
1965 { CONFIG_FRIEND_SET
, "Config Friend Set" },
1966 { CONFIG_FRIEND_STATUS
, "Config Friend Status" },
1967 { CONFIG_GATT_PROXY_GET
, "Config GATT Proxy Get" },
1968 { CONFIG_GATT_PROXY_SET
, "Config GATT Proxy Set" },
1969 { CONFIG_GATT_PROXY_STATUS
, "Config GATT Proxy Status" },
1970 { CONFIG_KEY_REFRESH_PHASE_GET
, "Config Key Refresh Phase Get" },
1971 { CONFIG_KEY_REFRESH_PHASE_SET
, "Config Key Refresh Phase Set" },
1972 { CONFIG_KEY_REFRESH_PHASE_STATUS
, "Config Key Refresh Phase Status" },
1973 { CONFIG_MODEL_PUBLICATION_GET
, "Config Model Publication Get" },
1974 { CONFIG_MODEL_PUBLICATION_STATUS
, "Config Model Publication Status" },
1975 { CONFIG_MODEL_PUBLICATION_VIRTUAL_ADDRESS_SET
, "Config Model Publication Virtual Address Set" },
1976 { CONFIG_MODEL_SUBSCRIPTION_ADD
, "Config Model Subscription Add" },
1977 { CONFIG_MODEL_SUBSCRIPTION_DELETE
, "Config Model Subscription Delete" },
1978 { CONFIG_MODEL_SUBSCRIPTION_DELETE_ALL
, "Config Model Subscription Delete All" },
1979 { CONFIG_MODEL_SUBSCRIPTION_OVERWRITE
, "Config Model Subscription Overwrite" },
1980 { CONFIG_MODEL_SUBSCRIPTION_STATUS
, "Config Model Subscription Status" },
1981 { CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_ADD
, "Config Model Subscription Virtual Address Add" },
1982 { CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_DELETE
, "Config Model Subscription Virtual Address Delete" },
1983 { CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_OVERWRITE
, "Config Model Subscription Virtual Address Overwrite"},
1984 { CONFIG_NETWORK_TRANSMIT_GET
, "Config Network Transmit Get" },
1985 { CONFIG_NETWORK_TRANSMIT_SET
, "Config Network Transmit Set" },
1986 { CONFIG_NETWORK_TRANSMIT_STATUS
, "Config Network Transmit Status" },
1987 { CONFIG_RELAY_GET
, "Config Relay Get" },
1988 { CONFIG_RELAY_SET
, "Config Relay Set" },
1989 { CONFIG_RELAY_STATUS
, "Config Relay Status" },
1990 { CONFIG_SIG_MODEL_SUBSCRIPTION_GET
, "Config SIG Model Subscription Get" },
1991 { CONFIG_SIG_MODEL_SUBSCRIPTION_LIST
, "Config SIG Model Subscription List" },
1992 { CONFIG_VENDOR_MODEL_SUBSCRIPTION_GET
, "Config Vendor Model Subscription Get" },
1993 { CONFIG_VENDOR_MODEL_SUBSCRIPTION_LIST
, "Config Vendor Model Subscription List" },
1994 { CONFIG_LOW_POWER_NODE_POLLTIMEOUT_GET
, "Config Low Power Node PollTimeout Get" },
1995 { CONFIG_LOW_POWER_NODE_POLLTIMEOUT_STATUS
, "Config Low Power Node PollTimeout Status" },
1996 { HEALTH_FAULT_CLEAR
, "Health Fault Clear" },
1997 { HEALTH_FAULT_CLEAR_UNACKNOWLEDGED
, "Health Fault Clear Unacknowledged" },
1998 { HEALTH_FAULT_GET
, "Health Fault Get" },
1999 { HEALTH_FAULT_TEST
, "Health Fault Test" },
2000 { HEALTH_FAULT_TEST_UNACKNOWLEDGED
, "Health Fault Test Unacknowledged" },
2001 { HEALTH_PERIOD_GET
, "Health Period Get" },
2002 { HEALTH_PERIOD_SET
, "Health Period Set" },
2003 { HEALTH_PERIOD_SET_UNACKNOWLEDGED
, "Health Period Set Unacknowledged" },
2004 { HEALTH_PERIOD_STATUS
, "Health Period Status" },
2005 { CONFIG_HEARTBEAT_PUBLICATION_GET
, "Config Heartbeat Publication Get" },
2006 { CONFIG_HEARTBEAT_PUBLICATION_SET
, "Config Heartbeat Publication Set" },
2007 { CONFIG_HEARTBEAT_SUBSCRIPTION_GET
, "Config Heartbeat Subscription Get" },
2008 { CONFIG_HEARTBEAT_SUBSCRIPTION_SET
, "Config Heartbeat Subscription Set" },
2009 { CONFIG_HEARTBEAT_SUBSCRIPTION_STATUS
, "Config Heartbeat Subscription Status" },
2010 { CONFIG_MODEL_APP_BIND
, "Config Model App Bind" },
2011 { CONFIG_MODEL_APP_STATUS
, "Config Model App Status" },
2012 { CONFIG_MODEL_APP_UNBIND
, "Config Model App Unbind" },
2013 { CONFIG_NETKEY_ADD
, "Config NetKey Add" },
2014 { CONFIG_NETKEY_DELETE
, "Config NetKey Delete" },
2015 { CONFIG_NETKEY_GET
, "Config NetKey Get" },
2016 { CONFIG_NETKEY_LIST
, "Config NetKey List" },
2017 { CONFIG_NETKEY_STATUS
, "Config NetKey Status" },
2018 { CONFIG_NETKEY_UPDATE
, "Config NetKey Update" },
2019 { CONFIG_NODE_IDENTITY_GET
, "Config Node Identity Get" },
2020 { CONFIG_NODE_IDENTITY_SET
, "Config Node Identity Set" },
2021 { CONFIG_NODE_IDENTITY_STATUS
, "Config Node Identity Status" },
2022 { CONFIG_NODE_RESET
, "Config Node Reset" },
2023 { CONFIG_NODE_RESET_STATUS
, "Config Node Reset Status" },
2024 { CONFIG_SIG_MODEL_APP_GET
, "Config SIG Model App Get" },
2025 { CONFIG_SIG_MODEL_APP_LIST
, "Config SIG Model App List" },
2026 { CONFIG_VENDOR_MODEL_APP_GET
, "Config Vendor Model App Get" },
2027 { CONFIG_VENDOR_MODEL_APP_LIST
, "Config Vendor Model App List" },
2029 /* Bluetooth Mesh Model messages */
2030 { GENERIC_ONOFF_GET
, "Generic OnOff Get" },
2031 { GENERIC_ONOFF_SET
, "Generic OnOff Set" },
2032 { GENERIC_ONOFF_SET_UNACKNOWLEDGED
, "Generic OnOff Set Unacknowledged" },
2033 { GENERIC_ONOFF_STATUS
, "Generic OnOff Status" },
2034 { GENERIC_LEVEL_GET
, "Generic Level Get" },
2035 { GENERIC_LEVEL_SET
, "Generic Level Set" },
2036 { GENERIC_LEVEL_SET_UNACKNOWLEDGED
, "Generic Level Set Unacknowledged" },
2037 { GENERIC_LEVEL_STATUS
, "Generic Level Status" },
2038 { GENERIC_DELTA_SET
, "Generic Delta Set" },
2039 { GENERIC_DELTA_SET_UNACKNOWLEDGED
, "Generic Delta Set Unacknowledged" },
2040 { GENERIC_MOVE_SET
, "Generic Move Set" },
2041 { GENERIC_MOVE_SET_UNACKNOWLEDGED
, "Generic Move Set Unacknowledged" },
2042 { GENERIC_DEFAULT_TRANSITION_TIME_GET
, "Generic Default Transition Time Get" },
2043 { GENERIC_DEFAULT_TRANSITION_TIME_SET
, "Generic Default Transition Time Set" },
2044 { GENERIC_DEFAULT_TRANSITION_TIME_SET_UNACKNOWLEDGED
, "Generic Default Transition Time Set Unacknowledged" },
2045 { GENERIC_DEFAULT_TRANSITION_TIME_STATUS
, "Generic Default Transition Time Status" },
2046 { GENERIC_ONPOWERUP_GET
, "Generic OnPowerUp Get" },
2047 { GENERIC_ONPOWERUP_STATUS
, "Generic OnPowerUp Status" },
2048 { GENERIC_ONPOWERUP_SET
, "Generic OnPowerUp Set" },
2049 { GENERIC_ONPOWERUP_SET_UNACKNOWLEDGED
, "Generic OnPowerUp Set Unacknowledged" },
2050 { GENERIC_POWER_LEVEL_GET
, "Generic Power Level Get" },
2051 { GENERIC_POWER_LEVEL_SET
, "Generic Power Level Set" },
2052 { GENERIC_POWER_LEVEL_SET_UNACKNOWLEDGED
, "Generic Power Level Set Unacknowledged" },
2053 { GENERIC_POWER_LEVEL_STATUS
, "Generic Power Level Status" },
2054 { GENERIC_POWER_LAST_GET
, "Generic Power Last Get" },
2055 { GENERIC_POWER_LAST_STATUS
, "Generic Power Last Status" },
2056 { GENERIC_POWER_DEFAULT_GET
, "Generic Power Default Get" },
2057 { GENERIC_POWER_DEFAULT_STATUS
, "Generic Power Default Status" },
2058 { GENERIC_POWER_RANGE_GET
, "Generic Power Range Get" },
2059 { GENERIC_POWER_RANGE_STATUS
, "Generic Power Range Status" },
2060 { GENERIC_POWER_DEFAULT_SET
, "Generic Power Default Set" },
2061 { GENERIC_POWER_DEFAULT_SET_UNACKNOWLEDGED
, "Generic Power Default Set Unacknowledged" },
2062 { GENERIC_POWER_RANGE_SET
, "Generic Power Range Set" },
2063 { GENERIC_POWER_RANGE_SET_UNACKNOWLEDGED
, "Generic Power Range Set Unacknowledged" },
2064 { GENERIC_BATTERY_GET
, "Generic Battery Get" },
2065 { GENERIC_BATTERY_STATUS
, "Generic Battery Status" },
2066 { GENERIC_LOCATION_GLOBAL_GET
, "Generic Location Global Get" },
2067 { GENERIC_LOCATION_GLOBAL_STATUS
, "Generic Location Global Status" },
2068 { GENERIC_LOCATION_LOCAL_GET
, "Generic Location Local Get" },
2069 { GENERIC_LOCATION_LOCAL_STATUS
, "Generic Location Local Status" },
2070 { GENERIC_LOCATION_GLOBAL_SET
, "Generic Location Global Set" },
2071 { GENERIC_LOCATION_GLOBAL_SET_UNACKNOWLEDGED
, "Generic Location Global Set Unacknowledged" },
2072 { GENERIC_LOCATION_LOCAL_SET
, "Generic Location Local Set" },
2073 { GENERIC_LOCATION_LOCAL_SET_UNACKNOWLEDGED
, "Generic Location Local Set Unacknowledged" },
2074 { GENERIC_MANUFACTURER_PROPERTIES_GET
, "Generic Manufacturer Properties Get" },
2075 { GENERIC_MANUFACTURER_PROPERTIES_STATUS
, "Generic Manufacturer Properties Status" },
2076 { GENERIC_MANUFACTURER_PROPERTY_GET
, "Generic Manufacturer Property Get" },
2077 { GENERIC_MANUFACTURER_PROPERTY_SET
, "Generic Manufacturer Property Set" },
2078 { GENERIC_MANUFACTURER_PROPERTY_SET_UNACKNOWLEDGED
, "Generic Manufacturer Property Set Unacknowledged" },
2079 { GENERIC_MANUFACTURER_PROPERTY_STATUS
, "Generic Manufacturer Property Status" },
2080 { GENERIC_ADMIN_PROPERTIES_GET
, "Generic Admin Properties Get" },
2081 { GENERIC_ADMIN_PROPERTIES_STATUS
, "Generic Admin Properties Status" },
2082 { GENERIC_ADMIN_PROPERTY_GET
, "Generic Admin Property Get" },
2083 { GENERIC_ADMIN_PROPERTY_SET
, "Generic Admin Property Set" },
2084 { GENERIC_ADMIN_PROPERTY_SET_UNACKNOWLEDGED
, "Generic Admin Property Set Unacknowledged" },
2085 { GENERIC_ADMIN_PROPERTY_STATUS
, "Generic Admin Property Status" },
2086 { GENERIC_USER_PROPERTIES_GET
, "Generic User Properties Get" },
2087 { GENERIC_USER_PROPERTIES_STATUS
, "Generic User Properties Status" },
2088 { GENERIC_USER_PROPERTY_GET
, "Generic User Property Get" },
2089 { GENERIC_USER_PROPERTY_SET
, "Generic User Property Set" },
2090 { GENERIC_USER_PROPERTY_SET_UNACKNOWLEDGED
, "Generic User Property Set Unacknowledged" },
2091 { GENERIC_USER_PROPERTY_STATUS
, "Generic User Property Status" },
2092 { GENERIC_CLIENT_PROPERTIES_GET
, "Generic Client Properties Get" },
2093 { GENERIC_CLIENT_PROPERTIES_STATUS
, "Generic Client Properties Status" },
2094 { SENSOR_DESCRIPTOR_GET
, "Sensor Descriptor Get" },
2095 { SENSOR_DESCRIPTOR_STATUS
, "Sensor Descriptor Status" },
2096 { SENSOR_GET
, "Sensor Get" },
2097 { SENSOR_STATUS
, "Sensor Status" },
2098 { SENSOR_COLUMN_GET
, "Sensor Column Get" },
2099 { SENSOR_COLUMN_STATUS
, "Sensor Column Status" },
2100 { SENSOR_SERIES_GET
, "Sensor Series Get" },
2101 { SENSOR_SERIES_STATUS
, "Sensor Series Status" },
2102 { SENSOR_CADENCE_GET
, "Sensor Cadence Get" },
2103 { SENSOR_CADENCE_SET
, "Sensor Cadence Set" },
2104 { SENSOR_CADENCE_SET_UNACKNOWLEDGED
, "Sensor Cadence Set Unacknowledged" },
2105 { SENSOR_CADENCE_STATUS
, "Sensor Cadence Status" },
2106 { SENSOR_SETTINGS_GET
, "Sensor Settings Get" },
2107 { SENSOR_SETTINGS_STATUS
, "Sensor Settings Status" },
2108 { SENSOR_SETTING_GET
, "Sensor Setting Get" },
2109 { SENSOR_SETTING_SET
, "Sensor Setting Set" },
2110 { SENSOR_SETTING_SET_UNACKNOWLEDGED
, "Sensor Setting Set Unacknowledged" },
2111 { SENSOR_SETTING_STATUS
, "Sensor Setting Status" },
2112 { TIME_GET
, "Time Get" },
2113 { TIME_SET
, "Time Set" },
2114 { TIME_STATUS
, "Time Status" },
2115 { TIME_ROLE_GET
, "Time Role Get" },
2116 { TIME_ROLE_SET
, "Time Role Set" },
2117 { TIME_ROLE_STATUS
, "Time Role Status" },
2118 { TIME_ZONE_GET
, "Time Zone Get" },
2119 { TIME_ZONE_SET
, "Time Zone Set" },
2120 { TIME_ZONE_STATUS
, "Time Zone Status" },
2121 { TAI_UTC_DELTA_GET
, "TAI-UTC Delta Get" },
2122 { TAI_UTC_DELTA_SET
, "TAI-UTC Delta Set" },
2123 { TAI_UTC_DELTA_STATUS
, "TAI-UTC Delta Status" },
2124 { SCENE_GET
, "Scene Get" },
2125 { SCENE_RECALL
, "Scene Recall" },
2126 { SCENE_RECALL_UNACKNOWLEDGED
, "Scene Recall Unacknowledged" },
2127 { SCENE_STATUS
, "Scene Status" },
2128 { SCENE_REGISTER_GET
, "Scene Register Get" },
2129 { SCENE_REGISTER_STATUS
, "Scene Register Status" },
2130 { SCENE_STORE
, "Scene Store" },
2131 { SCENE_STORE_UNACKNOWLEDGED
, "Scene Store Unacknowledged" },
2132 { SCENE_DELETE
, "Scene Delete" },
2133 { SCENE_DELETE_UNACKNOWLEDGED
, "Scene Delete Unacknowledged" },
2134 { SCHEDULER_ACTION_GET
, "Scheduler Action Get" },
2135 { SCHEDULER_ACTION_STATUS
, "Scheduler Action Status" },
2136 { SCHEDULER_GET
, "Scheduler Get" },
2137 { SCHEDULER_STATUS
, "Scheduler Status" },
2138 { SCHEDULER_ACTION_SET
, "Scheduler Action Set" },
2139 { SCHEDULER_ACTION_SET_UNACKNOWLEDGED
, "Scheduler Action Set Unacknowledged" },
2140 { LIGHT_LIGHTNESS_GET
, "Light Lightness Get" },
2141 { LIGHT_LIGHTNESS_SET
, "Light Lightness Set" },
2142 { LIGHT_LIGHTNESS_SET_UNACKNOWLEDGED
, "Light Lightness Set Unacknowledged" },
2143 { LIGHT_LIGHTNESS_STATUS
, "Light Lightness Status" },
2144 { LIGHT_LIGHTNESS_LINEAR_GET
, "Light Lightness Linear Get" },
2145 { LIGHT_LIGHTNESS_LINEAR_SET
, "Light Lightness Linear Set" },
2146 { LIGHT_LIGHTNESS_LINEAR_SET_UNACKNOWLEDGED
, "Light Lightness Linear Set Unacknowledged" },
2147 { LIGHT_LIGHTNESS_LINEAR_STATUS
, "Light Lightness Linear Status" },
2148 { LIGHT_LIGHTNESS_LAST_GET
, "Light Lightness Last Get" },
2149 { LIGHT_LIGHTNESS_LAST_STATUS
, "Light Lightness Last Status" },
2150 { LIGHT_LIGHTNESS_DEFAULT_GET
, "Light Lightness Default Get" },
2151 { LIGHT_LIGHTNESS_DEFAULT_STATUS
, "Light Lightness Default Status" },
2152 { LIGHT_LIGHTNESS_RANGE_GET
, "Light Lightness Range Get" },
2153 { LIGHT_LIGHTNESS_RANGE_STATUS
, "Light Lightness Range Status" },
2154 { LIGHT_LIGHTNESS_DEFAULT_SET
, "Light Lightness Default Set" },
2155 { LIGHT_LIGHTNESS_DEFAULT_SET_UNACKNOWLEDGED
, "Light Lightness Default Set Unacknowledged" },
2156 { LIGHT_LIGHTNESS_RANGE_SET
, "Light Lightness Range Set" },
2157 { LIGHT_LIGHTNESS_RANGE_SET_UNACKNOWLEDGED
, "Light Lightness Range Set Unacknowledged" },
2158 { LIGHT_CTL_GET
, "Light CTL Get" },
2159 { LIGHT_CTL_SET
, "Light CTL Set" },
2160 { LIGHT_CTL_SET_UNACKNOWLEDGED
, "Light CTL Set Unacknowledged" },
2161 { LIGHT_CTL_STATUS
, "Light CTL Status" },
2162 { LIGHT_CTL_TEMPERATURE_GET
, "Light CTL Temperature Get" },
2163 { LIGHT_CTL_TEMPERATURE_RANGE_GET
, "Light CTL Temperature Range Get" },
2164 { LIGHT_CTL_TEMPERATURE_RANGE_STATUS
, "Light CTL Temperature Range Status" },
2165 { LIGHT_CTL_TEMPERATURE_SET
, "Light CTL Temperature Set" },
2166 { LIGHT_CTL_TEMPERATURE_SET_UNACKNOWLEDGED
, "Light CTL Temperature Set Unacknowledged" },
2167 { LIGHT_CTL_TEMPERATURE_STATUS
, "Light CTL Temperature Status" },
2168 { LIGHT_CTL_DEFAULT_GET
, "Light CTL Default Get" },
2169 { LIGHT_CTL_DEFAULT_STATUS
, "Light CTL Default Status" },
2170 { LIGHT_CTL_DEFAULT_SET
, "Light CTL Default Set" },
2171 { LIGHT_CTL_DEFAULT_SET_UNACKNOWLEDGED
, "Light CTL Default Set Unacknowledged" },
2172 { LIGHT_CTL_TEMPERATURE_RANGE_SET
, "Light CTL Temperature Range Set" },
2173 { LIGHT_CTL_TEMPERATURE_RANGE_SET_UNACKNOWLEDGED
, "Light CTL Temperature Range Set Unacknowledged" },
2174 { LIGHT_HSL_GET
, "Light HSL Get" },
2175 { LIGHT_HSL_HUE_GET
, "Light HSL Hue Get" },
2176 { LIGHT_HSL_HUE_SET
, "Light HSL Hue Set" },
2177 { LIGHT_HSL_HUE_SET_UNACKNOWLEDGED
, "Light HSL Hue Set Unacknowledged" },
2178 { LIGHT_HSL_HUE_STATUS
, "Light HSL Hue Status" },
2179 { LIGHT_HSL_SATURATION_GET
, "Light HSL Saturation Get" },
2180 { LIGHT_HSL_SATURATION_SET
, "Light HSL Saturation Set" },
2181 { LIGHT_HSL_SATURATION_SET_UNACKNOWLEDGED
, "Light HSL Saturation Set Unacknowledged" },
2182 { LIGHT_HSL_SATURATION_STATUS
, "Light HSL Saturation Status" },
2183 { LIGHT_HSL_SET
, "Light HSL Set" },
2184 { LIGHT_HSL_SET_UNACKNOWLEDGED
, "Light HSL Set Unacknowledged" },
2185 { LIGHT_HSL_STATUS
, "Light HSL Status" },
2186 { LIGHT_HSL_TARGET_GET
, "Light HSL Target Get" },
2187 { LIGHT_HSL_TARGET_STATUS
, "Light HSL Target Status" },
2188 { LIGHT_HSL_DEFAULT_GET
, "Light HSL Default Get" },
2189 { LIGHT_HSL_DEFAULT_STATUS
, "Light HSL Default Status" },
2190 { LIGHT_HSL_RANGE_GET
, "Light HSL Range Get" },
2191 { LIGHT_HSL_RANGE_STATUS
, "Light HSL Range Status" },
2192 { LIGHT_HSL_DEFAULT_SET
, "Light HSL Default Set" },
2193 { LIGHT_HSL_DEFAULT_SET_UNACKNOWLEDGED
, "Light HSL Default Set Unacknowledged" },
2194 { LIGHT_HSL_RANGE_SET
, "Light HSL Range Set" },
2195 { LIGHT_HSL_RANGE_SET_UNACKNOWLEDGED
, "Light HSL Range Set Unacknowledged" },
2196 { LIGHT_XYL_GET
, "Light xyL Get" },
2197 { LIGHT_XYL_SET
, "Light xyL Set" },
2198 { LIGHT_XYL_SET_UNACKNOWLEDGED
, "Light xyL Set Unacknowledged" },
2199 { LIGHT_XYL_STATUS
, "Light xyL Status" },
2200 { LIGHT_XYL_TARGET_GET
, "Light xyL Target Get" },
2201 { LIGHT_XYL_TARGET_STATUS
, "Light xyL Target Status" },
2202 { LIGHT_XYL_DEFAULT_GET
, "Light xyL Default Get" },
2203 { LIGHT_XYL_DEFAULT_STATUS
, "Light xyL Default Status" },
2204 { LIGHT_XYL_RANGE_GET
, "Light xyL Range Get" },
2205 { LIGHT_XYL_RANGE_STATUS
, "Light xyL Range Status" },
2206 { LIGHT_XYL_DEFAULT_SET
, "Light xyL Default Set" },
2207 { LIGHT_XYL_DEFAULT_SET_UNACKNOWLEDGED
, "Light xyL Default Set Unacknowledged" },
2208 { LIGHT_XYL_RANGE_SET
, "Light xyL Range Set" },
2209 { LIGHT_XYL_RANGE_SET_UNACKNOWLEDGED
, "Light xyL Range Set Unacknowledged" },
2210 { LIGHT_LC_MODE_GET
, "Light LC Mode Get" },
2211 { LIGHT_LC_MODE_SET
, "Light LC Mode Set" },
2212 { LIGHT_LC_MODE_SET_UNACKNOWLEDGED
, "Light LC Mode Set Unacknowledged" },
2213 { LIGHT_LC_MODE_STATUS
, "Light LC Mode Status" },
2214 { LIGHT_LC_OM_GET
, "Light LC OM Get" },
2215 { LIGHT_LC_OM_SET
, "Light LC OM Set" },
2216 { LIGHT_LC_OM_SET_UNACKNOWLEDGED
, "Light LC OM Set Unacknowledged" },
2217 { LIGHT_LC_OM_STATUS
, "Light LC OM Status" },
2218 { LIGHT_LC_LIGHT_ONOFF_GET
, "Light LC Light OnOff Get" },
2219 { LIGHT_LC_LIGHT_ONOFF_SET
, "Light LC Light OnOff Set" },
2220 { LIGHT_LC_LIGHT_ONOFF_SET_UNACKNOWLEDGED
, "Light LC Light OnOff Set Unacknowledged" },
2221 { LIGHT_LC_LIGHT_ONOFF_STATUS
, "Light LC Light OnOff Status" },
2222 { LIGHT_LC_PROPERTY_GET
, "Light LC Property Get" },
2223 { LIGHT_LC_PROPERTY_SET
, "Light LC Property Set" },
2224 { LIGHT_LC_PROPERTY_SET_UNACKNOWLEDGED
, "Light LC Property Set Unacknowledged" },
2225 { LIGHT_LC_PROPERTY_STATUS
, "Light LC Property Status" },
2229 static const value_string btmesh_beacon_broadcast_vals
[] = {
2230 { 0x00, "Not broadcasting a Secure Network beacon" },
2231 { 0x01, "Broadcasting a Secure Network beacon" },
2235 static const value_string btmesh_gatt_proxy_vals
[] = {
2236 { 0x00, "Proxy feature is supported and disabled" },
2237 { 0x01, "Proxy feature is supported and enabled" },
2238 { 0x02, "Proxy feature is not supported" },
2242 static const value_string btmesh_relay_vals
[] = {
2243 { 0x00, "Relay feature is supported and disabled" },
2244 { 0x01, "Relay feature is supported and enabled" },
2245 { 0x02, "Relay feature is not supported" },
2249 static const value_string btmesh_friend_vals
[] = {
2250 { 0x00, "Friend feature is supported and disabled" },
2251 { 0x01, "Friend feature is supported and enabled" },
2252 { 0x02, "Friend feature is not supported" },
2256 static const value_string btmesh_publishperiod_resolution_vals
[] = {
2257 { 0x00, "100 milliseconds" },
2258 { 0x01, "1 second" },
2259 { 0x02, "10 seconds" },
2260 { 0x03, "10 minutes" },
2264 static const value_string btmesh_friendship_credentials_flag_vals
[] = {
2265 { 0x00, "Central security material is used" },
2266 { 0x01, "Friendship security material is used" },
2270 static const value_string btmesh_phase_vals
[] = {
2271 { 0x00, "Normal operation" },
2272 { 0x01, "First phase of Key Refresh procedure" },
2273 { 0x02, "Second phase of Key Refresh procedure" },
2277 static const range_string btmesh_transition_vals
[] = {
2278 { 0x00, 0x01, "Prohibited" },
2279 { 0x02, 0x02, "Transition 2" },
2280 { 0x03, 0x03, "Transition 3" },
2281 { 0x04, 0xFF, "Prohibited" },
2285 static const value_string btmesh_fault_array_vals
[] = {
2286 { 0x00, "No Fault" },
2287 { 0x01, "Battery Low Warning" },
2288 { 0x02, "Battery Low Error" },
2289 { 0x03, "Supply Voltage Too Low Warning" },
2290 { 0x04, "Supply Voltage Too Low Error" },
2291 { 0x05, "Supply Voltage Too High Warning" },
2292 { 0x06, "Supply Voltage Too High Error" },
2293 { 0x07, "Power Supply Interrupted Warning" },
2294 { 0x08, "Power Supply Interrupted Error" },
2295 { 0x09, "No Load Warning" },
2296 { 0x0A, "No Load Error" },
2297 { 0x0B, "Overload Warning" },
2298 { 0x0C, "Overload Error" },
2299 { 0x0D, "Overheat Warning" },
2300 { 0x0E, "Overheat Error" },
2301 { 0x0F, "Condensation Warning" },
2302 { 0x10, "Condensation Error" },
2303 { 0x11, "Vibration Warning" },
2304 { 0x12, "Vibration Error" },
2305 { 0x13, "Configuration Warning" },
2306 { 0x14, "Configuration Error" },
2307 { 0x15, "Element Not Calibrated Warning" },
2308 { 0x16, "Element Not Calibrated Error" },
2309 { 0x17, "Memory Warning" },
2310 { 0x18, "Memory Error" },
2311 { 0x19, "Self-Test Warning" },
2312 { 0x1A, "Self-Test Error" },
2313 { 0x1B, "Input Too Low Warning" },
2314 { 0x1C, "Input Too Low Error" },
2315 { 0x1D, "Input Too High Warning" },
2316 { 0x1E, "Input Too High Error" },
2317 { 0x1F, "Input No Change Warning" },
2318 { 0x20, "Input No Change Error" },
2319 { 0x21, "Actuator Blocked Warning" },
2320 { 0x22, "Actuator Blocked Error" },
2321 { 0x23, "Housing Opened Warning" },
2322 { 0x24, "Housing Opened Error" },
2323 { 0x25, "Tamper Warning" },
2324 { 0x26, "Tamper Error" },
2325 { 0x27, "Device Moved Warning" },
2326 { 0x28, "Device Moved Error" },
2327 { 0x29, "Device Dropped Warning" },
2328 { 0x2A, "Device Dropped Error" },
2329 { 0x2B, "Overflow Warning" },
2330 { 0x2C, "Overflow Error" },
2331 { 0x2D, "Empty Warning" },
2332 { 0x2E, "Empty Error" },
2333 { 0x2F, "Internal Bus Warning" },
2334 { 0x30, "Internal Bus Error" },
2335 { 0x31, "Mechanism Jammed Warning" },
2336 { 0x32, "Mechanism Jammed Error" },
2340 static const value_string btmesh_generic_onpowerup_vals
[] = {
2342 { 0x01, "Default" },
2343 { 0x02, "Restore" },
2347 static const value_string btmesh_on_off_vals
[] = {
2353 static const value_string btmesh_generic_battery_flags_presence_vals
[] = {
2354 { 0x0, "The battery is not present." },
2355 { 0x1, "The battery is present and is removable." },
2356 { 0x2, "The battery is present and is non-removable." },
2357 { 0x3, "The battery presence is unknown." },
2361 static const value_string btmesh_generic_battery_flags_indicator_vals
[] = {
2362 { 0x0, "The battery charge is Critically Low Level." },
2363 { 0x1, "The battery charge is Low Level." },
2364 { 0x2, "The battery charge is Good Level." },
2365 { 0x3, "The battery charge is unknown." },
2369 static const value_string btmesh_generic_battery_flags_charging_vals
[] = {
2370 { 0x0, "The battery is not chargeable." },
2371 { 0x1, "The battery is chargeable and is not charging." },
2372 { 0x2, "The battery is chargeable and is charging." },
2373 { 0x3, "The battery charging state is unknown." },
2377 static const value_string btmesh_generic_battery_flags_serviceability_vals
[] = {
2378 { 0x0, "Reserved for Future Use" },
2379 { 0x1, "The battery does not require service." },
2380 { 0x2, "The battery requires service." },
2381 { 0x3, "The battery serviceability is unknown." },
2385 static const value_string btmesh_generic_location_local_stationary_vals
[] = {
2386 { 0x0, "Stationary" },
2391 static const value_string btmesh_yes_or_dash_vals
[] = {
2393 { 0x1, "Scheduled" },
2397 static const value_string btmesh_time_authority_vals
[] = {
2398 { 0x0, "No Time Authority" },
2399 { 0x1, "Time Authority" },
2403 static const value_string btmesh_time_role_vals
[] = {
2405 { 0x1, "Mesh Time Authority" },
2406 { 0x2, "Mesh Time Relay" },
2407 { 0x3, "Mesh Time Client" },
2411 static const value_string btmesh_defined_or_dash_vals
[] = {
2417 static int * const config_composition_data_status_features_headers
[] = {
2418 &hf_btmesh_config_composition_data_status_features_relay
,
2419 &hf_btmesh_config_composition_data_status_features_proxy
,
2420 &hf_btmesh_config_composition_data_status_features_friend
,
2421 &hf_btmesh_config_composition_data_status_features_low_power
,
2422 &hf_btmesh_config_composition_data_status_features_rfu
,
2426 static int * const config_heartbeat_publication_set_features_headers
[] = {
2427 &hf_btmesh_config_heartbeat_publication_set_features_relay
,
2428 &hf_btmesh_config_heartbeat_publication_set_features_proxy
,
2429 &hf_btmesh_config_heartbeat_publication_set_features_friend
,
2430 &hf_btmesh_config_heartbeat_publication_set_features_low_power
,
2431 &hf_btmesh_config_heartbeat_publication_set_features_rfu
,
2435 static int * const config_heartbeat_publication_status_features_headers
[] = {
2436 &hf_btmesh_config_heartbeat_publication_status_features_relay
,
2437 &hf_btmesh_config_heartbeat_publication_status_features_proxy
,
2438 &hf_btmesh_config_heartbeat_publication_status_features_friend
,
2439 &hf_btmesh_config_heartbeat_publication_status_features_low_power
,
2440 &hf_btmesh_config_heartbeat_publication_status_features_rfu
,
2444 static const fragment_items btmesh_segmented_access_frag_items
= {
2445 &ett_btmesh_segmented_access_fragments
,
2446 &ett_btmesh_segmented_access_fragment
,
2448 &hf_btmesh_segmented_access_fragments
,
2449 &hf_btmesh_segmented_access_fragment
,
2450 &hf_btmesh_segmented_access_fragment_overlap
,
2451 &hf_btmesh_segmented_access_fragment_overlap_conflict
,
2452 &hf_btmesh_segmented_access_fragment_multiple_tails
,
2453 &hf_btmesh_segmented_access_fragment_too_long_fragment
,
2454 &hf_btmesh_segmented_access_fragment_error
,
2455 &hf_btmesh_segmented_access_fragment_count
,
2457 &hf_btmesh_segmented_access_reassembled_length
,
2458 /* Reassembled data field */
2463 static const fragment_items btmesh_segmented_control_frag_items
= {
2464 &ett_btmesh_segmented_control_fragments
,
2465 &ett_btmesh_segmented_control_fragment
,
2467 &hf_btmesh_segmented_control_fragments
,
2468 &hf_btmesh_segmented_control_fragment
,
2469 &hf_btmesh_segmented_control_fragment_overlap
,
2470 &hf_btmesh_segmented_control_fragment_overlap_conflict
,
2471 &hf_btmesh_segmented_control_fragment_multiple_tails
,
2472 &hf_btmesh_segmented_control_fragment_too_long_fragment
,
2473 &hf_btmesh_segmented_control_fragment_error
,
2474 &hf_btmesh_segmented_control_fragment_count
,
2476 &hf_btmesh_segmented_control_reassembled_length
,
2477 /* Reassembled data field */
2482 static const value_string btmesh_status_code_vals
[] = {
2483 { 0x00, "Success" },
2484 { 0x01, "Invalid Address" },
2485 { 0x02, "Invalid Model" },
2486 { 0x03, "Invalid AppKey Index" },
2487 { 0x04, "Invalid NetKey Index" },
2488 { 0x05, "Insufficient Resources" },
2489 { 0x06, "Key Index Already Stored" },
2490 { 0x07, "Invalid Publish Parameters" },
2491 { 0x08, "Not a Subscribe Model" },
2492 { 0x09, "Storage Failure" },
2493 { 0x0A, "Feature Not Supported" },
2494 { 0x0B, "Cannot Update" },
2495 { 0x0C, "Cannot Remove" },
2496 { 0x0D, "Cannot Bind" },
2497 { 0x0E, "Temporarily Unable to Change State" },
2498 { 0x0F, "Cannot Set" },
2499 { 0x10, "Unspecified Error" },
2500 { 0x11, "Invalid Binding" },
2504 static const value_string btmesh_generic_status_code_vals
[] = {
2505 { 0x00, "Success" },
2506 { 0x01, "Cannot Set Range Min" },
2507 { 0x02, "Cannot Set Range Max" },
2511 static const value_string btmesh_scene_status_code_vals
[] = {
2512 { 0x00, "Success" },
2513 { 0x01, "Scene Register Full" },
2514 { 0x02, "Scene Not Found" },
2518 static const value_string btmesh_sensor_sampling_function_vals
[] = {
2519 { 0x00, "Unspecified" },
2520 { 0x01, "Instantaneous" },
2521 { 0x02, "Arithmetic Mean" },
2523 { 0x04, "Maximum" },
2524 { 0x05, "Minimum" },
2525 { 0x06, "Accumulated" },
2530 static const value_string btmesh_status_trigger_type_vals
[] = {
2531 { 0x00, "same format as property" },
2532 { 0x01, "unitless" },
2536 static const value_string btmesh_mpid_format_vals
[] = {
2537 { 0x00, "Format A" },
2538 { 0x01, "Format B" },
2542 static const value_string btmesh_model_vals
[] = {
2543 { 0x0000, "Configuration Server" },
2544 { 0x0001, "Configuration Client" },
2545 { 0x0002, "Health Server" },
2546 { 0x0003, "Health Client" },
2547 { 0x1000, "Generic OnOff Server" },
2548 { 0x1001, "Generic OnOff Client" },
2549 { 0x1002, "Generic Level Server" },
2550 { 0x1003, "Generic Level Client" },
2551 { 0x1004, "Generic Default Transition Time Server" },
2552 { 0x1005, "Generic Default Transition Time Client" },
2553 { 0x1006, "Generic Power OnOff Server" },
2554 { 0x1007, "Generic Power OnOff Setup Server" },
2555 { 0x1008, "Generic Power OnOff Client" },
2556 { 0x1009, "Generic Power Level Server" },
2557 { 0x100A, "Generic Power Level Setup Server" },
2558 { 0x100B, "Generic Power Level Client" },
2559 { 0x100C, "Generic Battery Server" },
2560 { 0x100D, "Generic Battery Client" },
2561 { 0x100E, "Generic Location Server" },
2562 { 0x100F, "Generic Location Setup Server" },
2563 { 0x1010, "Generic Location Client" },
2564 { 0x1011, "Generic Admin Property Server" },
2565 { 0x1012, "Generic Manufacturer Property Server" },
2566 { 0x1013, "Generic User Property Server" },
2567 { 0x1014, "Generic Client Property Server" },
2568 { 0x1015, "Generic Property Client" },
2569 { 0x1100, "Sensors Sensor Server" },
2570 { 0x1101, "Sensor Setup Server" },
2571 { 0x1102, "Sensor Client" },
2572 { 0x1200, "Time Server" },
2573 { 0x1201, "Time Setup Server" },
2574 { 0x1202, "Time Client" },
2575 { 0x1203, "Scene Server" },
2576 { 0x1204, "Scene Setup Server" },
2577 { 0x1205, "Scene Client" },
2578 { 0x1206, "Scheduler Server" },
2579 { 0x1207, "Scheduler Setup Server" },
2580 { 0x1208, "Scheduler Client" },
2581 { 0x1300, "Light Lightness Server" },
2582 { 0x1301, "Light Lightness Setup Server" },
2583 { 0x1302, "Light Lightness Client" },
2584 { 0x1303, "Light CTL Server" },
2585 { 0x1304, "Light CTL Setup Server" },
2586 { 0x1305, "Light CTL Client" },
2587 { 0x1306, "Light CTL Temperature Server" },
2588 { 0x1307, "Light HSL Server" },
2589 { 0x1308, "Light HSL Setup Server" },
2590 { 0x1309, "Light HSL Client" },
2591 { 0x130A, "Light HSL Hue Server" },
2592 { 0x130B, "Light HSL Saturation Server" },
2593 { 0x130C, "Light xyL Server" },
2594 { 0x130D, "Light xyL Setup Server" },
2595 { 0x130E, "Light xyL Client" },
2596 { 0x130F, "Light LC Server" },
2597 { 0x1310, "Light LC Setup Server" },
2598 { 0x1311, "Light LC Client" },
2602 static const value_string btmesh_properties_vals
[] = {
2603 { PHONY_PROPERTY_PERCENTAGE_CHANGE_16
, "Percentage Change" },
2604 { PHONY_PROPERTY_INDEX
, "Index" },
2605 { PROPERTY_AVERAGE_AMBIENT_TEMPERATURE_IN_A_PERIOD_OF_DAY
, "Average Ambient Temperature In A Period Of Day" },
2606 { PROPERTY_AVERAGE_INPUT_CURRENT
, "Average Input Current" },
2607 { PROPERTY_AVERAGE_INPUT_VOLTAGE
, "Average Input Voltage" },
2608 { PROPERTY_AVERAGE_OUTPUT_CURRENT
, "Average Output Current" },
2609 { PROPERTY_AVERAGE_OUTPUT_VOLTAGE
, "Average Output Voltage" },
2610 { PROPERTY_CENTER_BEAM_INTENSITY_AT_FULL_POWER
, "Center Beam Intensity At Full Power" },
2611 { PROPERTY_CHROMATICITY_TOLERANCE
, "Chromaticity Tolerance" },
2612 { PROPERTY_COLOR_RENDERING_INDEX_R9
, "Color Rendering Index R9" },
2613 { PROPERTY_COLOR_RENDERING_INDEX_RA
, "Color Rendering Index Ra" },
2614 { PROPERTY_DEVICE_APPEARANCE
, "Device Appearance" },
2615 { PROPERTY_DEVICE_COUNTRY_OF_ORIGIN
, "Device Country Of Origin" },
2616 { PROPERTY_DEVICE_DATE_OF_MANUFACTURE
, "Device Date Of Manufacture" },
2617 { PROPERTY_DEVICE_ENERGY_USE_SINCE_TURN_ON
, "Device Energy Use Since Turn On" },
2618 { PROPERTY_DEVICE_FIRMWARE_REVISION
, "Device Firmware Revision" },
2619 { PROPERTY_DEVICE_GLOBAL_TRADE_ITEM_NUMBER
, "Device Global Trade Item Number" },
2620 { PROPERTY_DEVICE_HARDWARE_REVISION
, "Device Hardware Revision" },
2621 { PROPERTY_DEVICE_MANUFACTURER_NAME
, "Device Manufacturer Name" },
2622 { PROPERTY_DEVICE_MODEL_NUMBER
, "Device Model Number" },
2623 { PROPERTY_DEVICE_OPERATING_TEMPERATURE_RANGE_SPECIFICATION
, "Device Operating Temperature Range Specification" },
2624 { PROPERTY_DEVICE_OPERATING_TEMPERATURE_STATISTICAL_VALUES
, "Device Operating Temperature Statistical Values" },
2625 { PROPERTY_DEVICE_OVER_TEMPERATURE_EVENT_STATISTICS
, "Device Over Temperature Event Statistics" },
2626 { PROPERTY_DEVICE_POWER_RANGE_SPECIFICATION
, "Device Power Range Specification" },
2627 { PROPERTY_DEVICE_RUNTIME_SINCE_TURN_ON
, "Device Runtime Since Turn On" },
2628 { PROPERTY_DEVICE_RUNTIME_WARRANTY
, "Device Runtime Warranty" },
2629 { PROPERTY_DEVICE_SERIAL_NUMBER
, "Device Serial Number" },
2630 { PROPERTY_DEVICE_SOFTWARE_REVISION
, "Device Software Revision" },
2631 { PROPERTY_DEVICE_UNDER_TEMPERATURE_EVENT_STATISTICS
, "Device Under Temperature Event Statistics" },
2632 { PROPERTY_INDOOR_AMBIENT_TEMPERATURE_STATISTICAL_VALUES
, "Indoor Ambient Temperature Statistical Values" },
2633 { PROPERTY_INITIAL_CIE_1931_CHROMATICITY_COORDINATES
, "Initial CIE 1931 Chromaticity Coordinates" },
2634 { PROPERTY_INITIAL_CORRELATED_COLOR_TEMPERATURE
, "Initial Correlated Color Temperature" },
2635 { PROPERTY_INITIAL_LUMINOUS_FLUX
, "Initial Luminous Flux" },
2636 { PROPERTY_INITIAL_PLANCKIAN_DISTANCE
, "Initial Planckian Distance" },
2637 { PROPERTY_INPUT_CURRENT_RANGE_SPECIFICATION
, "Input Current Range Specification" },
2638 { PROPERTY_INPUT_CURRENT_STATISTICS
, "Input Current Statistics" },
2639 { PROPERTY_INPUT_OVER_CURRENT_EVENT_STATISTICS
, "Input Over Current Event Statistics" },
2640 { PROPERTY_INPUT_OVER_RIPPLE_VOLTAGE_EVENT_STATISTICS
, "Input Over Ripple Voltage Event Statistics" },
2641 { PROPERTY_INPUT_OVER_VOLTAGE_EVENT_STATISTICS
, "Input Over Voltage Event Statistics" },
2642 { PROPERTY_INPUT_UNDER_CURRENT_EVENT_STATISTICS
, "Input Under Current Event Statistics" },
2643 { PROPERTY_INPUT_UNDER_VOLTAGE_EVENT_STATISTICS
, "Input Under Voltage Event Statistics" },
2644 { PROPERTY_INPUT_VOLTAGE_RANGE_SPECIFICATION
, "Input Voltage Range Specification" },
2645 { PROPERTY_INPUT_VOLTAGE_RIPPLE_SPECIFICATION
, "Input Voltage Ripple Specification" },
2646 { PROPERTY_INPUT_VOLTAGE_STATISTICS
, "Input Voltage Statistics" },
2647 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_ON
, "Light Control Ambient LuxLevel On" },
2648 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_PROLONG
, "Light Control Ambient LuxLevel Prolong" },
2649 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_STANDBY
, "Light Control Ambient LuxLevel Standby" },
2650 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_ON
, "Light Control Lightness On" },
2651 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_PROLONG
, "Light Control Lightness Prolong" },
2652 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_STANDBY
, "Light Control Lightness Standby" },
2653 { PROPERTY_LIGHT_CONTROL_REGULATOR_ACCURACY
, "Light Control Regulator Accuracy" },
2654 { PROPERTY_LIGHT_CONTROL_REGULATOR_KID
, "Light Control Regulator Kid" },
2655 { PROPERTY_LIGHT_CONTROL_REGULATOR_KIU
, "Light Control Regulator Kiu" },
2656 { PROPERTY_LIGHT_CONTROL_REGULATOR_KPD
, "Light Control Regulator Kpd" },
2657 { PROPERTY_LIGHT_CONTROL_REGULATOR_KPU
, "Light Control Regulator Kpu" },
2658 { PROPERTY_LIGHT_CONTROL_TIME_FADE
, "Light Control Time Fade" },
2659 { PROPERTY_LIGHT_CONTROL_TIME_FADE_ON
, "Light Control Time Fade On" },
2660 { PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_AUTO
, "Light Control Time Fade Standby Auto" },
2661 { PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_MANUAL
, "Light Control Time Fade Standby Manual" },
2662 { PROPERTY_LIGHT_CONTROL_TIME_OCCUPANCY_DELAY
, "Light Control Time Occupancy Delay" },
2663 { PROPERTY_LIGHT_CONTROL_TIME_PROLONG
, "Light Control Time Prolong" },
2664 { PROPERTY_LIGHT_CONTROL_TIME_RUN_ON
, "Light Control Time Run On" },
2665 { PROPERTY_LUMEN_MAINTENANCE_FACTOR
, "Lumen Maintenance Factor" },
2666 { PROPERTY_LUMINOUS_EFFICACY
, "Luminous Efficacy" },
2667 { PROPERTY_LUMINOUS_ENERGY_SINCE_TURN_ON
, "Luminous Energy Since Turn On" },
2668 { PROPERTY_LUMINOUS_EXPOSURE
, "Luminous Exposure" },
2669 { PROPERTY_LUMINOUS_FLUX_RANGE
, "Luminous Flux Range" },
2670 { PROPERTY_MOTION_SENSED
, "Motion Sensed" },
2671 { PROPERTY_MOTION_THRESHOLD
, "Motion Threshold" },
2672 { PROPERTY_OPEN_CIRCUIT_EVENT_STATISTICS
, "Open Circuit Event Statistics" },
2673 { PROPERTY_OUTDOOR_STATISTICAL_VALUES
, "Outdoor Statistical Values" },
2674 { PROPERTY_OUTPUT_CURRENT_RANGE
, "Output Current Range" },
2675 { PROPERTY_OUTPUT_CURRENT_STATISTICS
, "Output Current Statistics" },
2676 { PROPERTY_OUTPUT_RIPPLE_VOLTAGE_SPECIFICATION
, "Output Ripple Voltage Specification" },
2677 { PROPERTY_OUTPUT_VOLTAGE_RANGE
, "Output Voltage Range" },
2678 { PROPERTY_OUTPUT_VOLTAGE_STATISTICS
, "Output Voltage Statistics" },
2679 { PROPERTY_OVER_OUTPUT_RIPPLE_VOLTAGE_EVENT_STATISTICS
, "Over Output Ripple Voltage Event Statistics" },
2680 { PROPERTY_PEOPLE_COUNT
, "People Count" },
2681 { PROPERTY_PRESENCE_DETECTED
, "Presence Detected" },
2682 { PROPERTY_PRESENT_AMBIENT_LIGHT_LEVEL
, "Present Ambient Light Level" },
2683 { PROPERTY_PRESENT_AMBIENT_TEMPERATURE
, "Present Ambient Temperature" },
2684 { PROPERTY_PRESENT_CIE_1931_CHROMATICITY_COORDINATES
, "Present CIE 1931 Chromaticity Coordinates" },
2685 { PROPERTY_PRESENT_CORRELATED_COLOR_TEMPERATURE
, "Present Correlated Color Temperature" },
2686 { PROPERTY_PRESENT_DEVICE_INPUT_POWER
, "Present Device Input Power" },
2687 { PROPERTY_PRESENT_DEVICE_OPERATING_EFFICIENCY
, "Present Device Operating Efficiency" },
2688 { PROPERTY_PRESENT_DEVICE_OPERATING_TEMPERATURE
, "Present Device Operating Temperature" },
2689 { PROPERTY_PRESENT_ILLUMINANCE
, "Present Illuminance" },
2690 { PROPERTY_PRESENT_INDOOR_AMBIENT_TEMPERATURE
, "Present Indoor Ambient Temperature" },
2691 { PROPERTY_PRESENT_INPUT_CURRENT
, "Present Input Current" },
2692 { PROPERTY_PRESENT_INPUT_RIPPLE_VOLTAGE
, "Present Input Ripple Voltage" },
2693 { PROPERTY_PRESENT_INPUT_VOLTAGE
, "Present Input Voltage" },
2694 { PROPERTY_PRESENT_LUMINOUS_FLUX
, "Present Luminous Flux" },
2695 { PROPERTY_PRESENT_OUTDOOR_AMBIENT_TEMPERATURE
, "Present Outdoor Ambient Temperature" },
2696 { PROPERTY_PRESENT_OUTPUT_CURRENT
, "Present Output Current" },
2697 { PROPERTY_PRESENT_OUTPUT_VOLTAGE
, "Present Output Voltage" },
2698 { PROPERTY_PRESENT_PLANCKIAN_DISTANCE
, "Present Planckian Distance" },
2699 { PROPERTY_PRESENT_RELATIVE_OUTPUT_RIPPLE_VOLTAGE
, "Present Relative Output Ripple Voltage" },
2700 { PROPERTY_RELATIVE_DEVICE_ENERGY_USE_IN_A_PERIOD_OF_DAY
, "Relative Device Energy Use In A Period Of Day" },
2701 { PROPERTY_RELATIVE_DEVICE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE
, "Relative Device Runtime In A Generic Level Range" },
2702 { PROPERTY_RELATIVE_EXPOSURE_TIME_IN_AN_ILLUMINANCE_RANGE
, "Relative Exposure Time In An Illuminance Range" },
2703 { PROPERTY_RELATIVE_RUNTIME_IN_A_CORRELATED_COLOR_TEMPERATURE_RANGE
, "Relative Runtime In A Correlated Color Temperature Range" },
2704 { PROPERTY_RELATIVE_RUNTIME_IN_A_DEVICE_OPERATING_TEMPERATURE_RANGE
, "Relative Runtime In A Device Operating Temperature Range" },
2705 { PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_CURRENT_RANGE
, "Relative Runtime In An Input Current Range" },
2706 { PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_VOLTAGE_RANGE
, "Relative Runtime In An Input Voltage Range" },
2707 { PROPERTY_SHORT_CIRCUIT_EVENT_STATISTICS
, "Short Circuit Event Statistics" },
2708 { PROPERTY_TIME_SINCE_MOTION_SENSED
, "Time Since Motion Sensed" },
2709 { PROPERTY_TIME_SINCE_PRESENCE_DETECTED
, "Time Since Presence Detected" },
2710 { PROPERTY_TOTAL_DEVICE_ENERGY_USE
, "Total Device Energy Use" },
2711 { PROPERTY_TOTAL_DEVICE_OFF_ON_CYCLES
, "Total Device Off On Cycles" },
2712 { PROPERTY_TOTAL_DEVICE_POWER_ON_CYCLES
, "Total Device Power On Cycles" },
2713 { PROPERTY_TOTAL_DEVICE_POWER_ON_TIME
, "Total Device Power On Time" },
2714 { PROPERTY_TOTAL_DEVICE_RUNTIME
, "Total Device Runtime" },
2715 { PROPERTY_TOTAL_LIGHT_EXPOSURE_TIME
, "Total Light Exposure Time" },
2716 { PROPERTY_TOTAL_LUMINOUS_ENERGY
, "Total Luminous Energy" },
2717 { PROPERTY_DESIRED_AMBIENT_TEMPERATURE
, "Desired Ambient Temperature" },
2718 { PROPERTY_PRECISE_TOTAL_DEVICE_ENERGY_USE
, "Precise Total Device Energy Use" },
2719 { PROPERTY_POWER_FACTOR
, "Power Factor" },
2720 { PROPERTY_SENSOR_GAIN
, "Sensor Gain" },
2721 { PROPERTY_PRECISE_PRESENT_AMBIENT_TEMPERATURE
, "Precise Present Ambient Temperature" },
2722 { PROPERTY_PRESENT_AMBIENT_RELATIVE_HUMIDITY
, "Present Ambient Relative Humidity" },
2723 { PROPERTY_PRESENT_AMBIENT_CARBON_DIOXIDE_CONCENTRATION
, "Present Ambient Carbon Dioxide Concentration" },
2724 { PROPERTY_PRESENT_AMBIENT_VOLATILE_ORGANIC_COMPOUNDS_CONCENTRATION
, "Present Ambient Volatile Organic Compounds Concentration" },
2725 { PROPERTY_PRESENT_AMBIENT_NOISE
, "Present Ambient Noise" },
2726 { PROPERTY_ACTIVE_ENERGY_LOADSIDE
, "Active Energy Loadside" },
2727 { PROPERTY_ACTIVE_POWER_LOADSIDE
, "Active Power Loadside" },
2728 { PROPERTY_AIR_PRESSURE
, "Air Pressure" },
2729 { PROPERTY_APPARENT_ENERGY
, "Apparent Energy" },
2730 { PROPERTY_APPARENT_POWER
, "Apparent Power" },
2731 { PROPERTY_APPARENT_WIND_DIRECTION
, "Apparent Wind Direction" },
2732 { PROPERTY_APPARENT_WIND_SPEED
, "Apparent Wind Speed" },
2733 { PROPERTY_DEW_POINT
, "Dew Point" },
2734 { PROPERTY_EXTERNAL_SUPPLY_VOLTAGE
, "External Supply Voltage" },
2735 { PROPERTY_EXTERNAL_SUPPLY_VOLTAGE_FREQUENCY
, "External Supply Voltage Frequency" },
2736 { PROPERTY_GUST_FACTOR
, "Gust Factor" },
2737 { PROPERTY_HEAT_INDEX
, "Heat Index" },
2738 { PROPERTY_LIGHT_DISTRIBUTION
, "Light Distribution" },
2739 { PROPERTY_LIGHT_SOURCE_CURRENT
, "Light Source Current" },
2740 { PROPERTY_LIGHT_SOURCE_ON_TIME_NOT_RESETTABLE
, "Light Source On Time Not Resettable" },
2741 { PROPERTY_LIGHT_SOURCE_ON_TIME_RESETTABLE
, "Light Source On Time Resettable" },
2742 { PROPERTY_LIGHT_SOURCE_OPEN_CIRCUIT_STATISTICS
, "Light Source Open Circuit Statistics" },
2743 { PROPERTY_LIGHT_SOURCE_OVERALL_FAILURES_STATISTICS
, "Light Source Overall Failures Statistics" },
2744 { PROPERTY_LIGHT_SOURCE_SHORT_CIRCUIT_STATISTICS
, "Light Source Short Circuit Statistics" },
2745 { PROPERTY_LIGHT_SOURCE_START_COUNTER_RESETTABLE
, "Light Source Start Counter Resettable" },
2746 { PROPERTY_LIGHT_SOURCE_TEMPERATURE
, "Light Source Temperature" },
2747 { PROPERTY_LIGHT_SOURCE_THERMAL_DERATING_STATISTICS
, "Light Source Thermal Derating Statistics" },
2748 { PROPERTY_LIGHT_SOURCE_THERMAL_SHUTDOWN_STATISTICS
, "Light Source Thermal Shutdown Statistics" },
2749 { PROPERTY_LIGHT_SOURCE_TOTAL_POWER_ON_CYCLES
, "Light Source Total Power On Cycles" },
2750 { PROPERTY_LIGHT_SOURCE_VOLTAGE
, "Light Source Voltage" },
2751 { PROPERTY_LUMINAIRE_COLOR
, "Luminaire Color" },
2752 { PROPERTY_LUMINAIRE_IDENTIFICATION_NUMBER
, "Luminaire Identification Number" },
2753 { PROPERTY_LUMINAIRE_MANUFACTURER_GTIN
, "Luminaire Manufacturer GTIN" },
2754 { PROPERTY_LUMINAIRE_NOMINAL_INPUT_POWER
, "Luminaire Nominal Input Power" },
2755 { PROPERTY_LUMINAIRE_NOMINAL_MAXIMUM_AC_MAINS_VOLTAGE
, "Luminaire Nominal Maximum AC Mains Voltage" },
2756 { PROPERTY_LUMINAIRE_NOMINAL_MINIMUM_AC_MAINS_VOLTAGE
, "Luminaire Nominal Minimum AC Mains Voltage" },
2757 { PROPERTY_LUMINAIRE_POWER_AT_MINIMUM_DIM_LEVEL
, "Luminaire Power At Minimum Dim Level" },
2758 { PROPERTY_LUMINAIRE_TIME_OF_MANUFACTURE
, "Luminaire Time Of Manufacture" },
2759 { PROPERTY_MAGNETIC_DECLINATION
, "Magnetic Declination" },
2760 { PROPERTY_MAGNETIC_FLUX_DENSITY_2_D
, "Magnetic Flux Density - 2D" },
2761 { PROPERTY_MAGNETIC_FLUX_DENSITY_3_D
, "Magnetic Flux Density - 3D" },
2762 { PROPERTY_NOMINAL_LIGHT_OUTPUT
, "Nominal Light Output" },
2763 { PROPERTY_OVERALL_FAILURE_CONDITION
, "Overall Failure Condition" },
2764 { PROPERTY_POLLEN_CONCENTRATION
, "Pollen Concentration" },
2765 { PROPERTY_PRESENT_INDOOR_RELATIVE_HUMIDITY
, "Present Indoor Relative Humidity" },
2766 { PROPERTY_PRESENT_OUTDOOR_RELATIVE_HUMIDITY
, "Present Outdoor Relative Humidity" },
2767 { PROPERTY_PRESSURE
, "Pressure" },
2768 { PROPERTY_RAINFALL
, "Rainfall" },
2769 { PROPERTY_RATED_MEDIAN_USEFUL_LIFE_OF_LUMINAIRE
, "Rated Median Useful Life Of Luminaire" },
2770 { PROPERTY_RATED_MEDIAN_USEFUL_LIGHT_SOURCE_STARTS
, "Rated Median Useful Light Source Starts" },
2771 { PROPERTY_REFERENCE_TEMPERATURE
, "Reference Temperature" },
2772 { PROPERTY_TOTAL_DEVICE_STARTS
, "Total Device Starts" },
2773 { PROPERTY_TRUE_WIND_DIRECTION
, "True Wind Direction" },
2774 { PROPERTY_TRUE_WIND_SPEED
, "True Wind Speed" },
2775 { PROPERTY_UV_INDEX
, "UV Index" },
2776 { PROPERTY_WIND_CHILL
, "Wind Chill" },
2777 { PROPERTY_LIGHT_SOURCE_TYPE
, "Light Source Type" },
2778 { PROPERTY_LUMINAIRE_IDENTIFICATION_STRING
, "Luminaire Identification String" },
2779 { PROPERTY_OUTPUT_POWER_LIMITATION
, "Output Power Limitation" },
2780 { PROPERTY_THERMAL_DERATING
, "Thermal Derating" },
2781 { PROPERTY_OUTPUT_CURRENT_PERCENT
, "Output Current Percent" },
2785 static const btmesh_property_t btmesh_properties
[] = {
2786 { PHONY_PROPERTY_PERCENTAGE_CHANGE_16
, PHONY_CHARACTERISTIC_PERCENTAGE_CHANGE_16
},
2787 { PHONY_PROPERTY_INDEX
, PHONY_CHARACTERISTIC_INDEX
},
2788 { PROPERTY_ACTIVE_ENERGY_LOADSIDE
, CHARACTERISTIC_ENERGY32
},
2789 { PROPERTY_ACTIVE_POWER_LOADSIDE
, CHARACTERISTIC_POWER
},
2790 { PROPERTY_AIR_PRESSURE
, CHARACTERISTIC_PRESSURE
},
2791 { PROPERTY_APPARENT_ENERGY
, CHARACTERISTIC_APPARENT_ENERGY32
},
2792 { PROPERTY_APPARENT_POWER
, CHARACTERISTIC_APPARENT_POWER
},
2793 { PROPERTY_APPARENT_WIND_DIRECTION
, CHARACTERISTIC_APPARENT_WIND_DIRECTION
},
2794 { PROPERTY_APPARENT_WIND_SPEED
, CHARACTERISTIC_APPARENT_WIND_SPEED
},
2795 { PROPERTY_AVERAGE_AMBIENT_TEMPERATURE_IN_A_PERIOD_OF_DAY
, CHARACTERISTIC_TEMPERATURE_8_IN_A_PERIOD_OF_DAY
},
2796 { PROPERTY_AVERAGE_INPUT_CURRENT
, CHARACTERISTIC_AVERAGE_CURRENT
},
2797 { PROPERTY_AVERAGE_INPUT_VOLTAGE
, CHARACTERISTIC_AVERAGE_VOLTAGE
},
2798 { PROPERTY_AVERAGE_OUTPUT_CURRENT
, CHARACTERISTIC_AVERAGE_CURRENT
},
2799 { PROPERTY_AVERAGE_OUTPUT_VOLTAGE
, CHARACTERISTIC_AVERAGE_VOLTAGE
},
2800 { PROPERTY_CENTER_BEAM_INTENSITY_AT_FULL_POWER
, CHARACTERISTIC_LUMINOUS_INTENSITY
},
2801 { PROPERTY_CHROMATICITY_TOLERANCE
, CHARACTERISTIC_CHROMATICITY_TOLERANCE
},
2802 { PROPERTY_COLOR_RENDERING_INDEX_R9
, CHARACTERISTIC_CIE_13_3_1995_COLOR_RENDERING_INDEX
},
2803 { PROPERTY_COLOR_RENDERING_INDEX_RA
, CHARACTERISTIC_CIE_13_3_1995_COLOR_RENDERING_INDEX
},
2804 { PROPERTY_DESIRED_AMBIENT_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE_8
},
2805 { PROPERTY_DEVICE_APPEARANCE
, CHARACTERISTIC_APPEARANCE
},
2806 { PROPERTY_DEVICE_COUNTRY_OF_ORIGIN
, CHARACTERISTIC_COUNTRY_CODE
},
2807 { PROPERTY_DEVICE_DATE_OF_MANUFACTURE
, CHARACTERISTIC_DATE_UTC
},
2808 { PROPERTY_DEVICE_ENERGY_USE_SINCE_TURN_ON
, CHARACTERISTIC_ENERGY
},
2809 { PROPERTY_DEVICE_FIRMWARE_REVISION
, CHARACTERISTIC_FIXED_STRING_8
},
2810 { PROPERTY_DEVICE_GLOBAL_TRADE_ITEM_NUMBER
, CHARACTERISTIC_GLOBAL_TRADE_ITEM_NUMBER
},
2811 { PROPERTY_DEVICE_HARDWARE_REVISION
, CHARACTERISTIC_FIXED_STRING_16
},
2812 { PROPERTY_DEVICE_MANUFACTURER_NAME
, CHARACTERISTIC_FIXED_STRING_36
},
2813 { PROPERTY_DEVICE_MODEL_NUMBER
, CHARACTERISTIC_FIXED_STRING_24
},
2814 { PROPERTY_DEVICE_OPERATING_TEMPERATURE_RANGE_SPECIFICATION
, CHARACTERISTIC_TEMPERATURE_RANGE
},
2815 { PROPERTY_DEVICE_OPERATING_TEMPERATURE_STATISTICAL_VALUES
, CHARACTERISTIC_TEMPERATURE_STATISTICS
},
2816 { PROPERTY_DEVICE_OVER_TEMPERATURE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2817 { PROPERTY_DEVICE_POWER_RANGE_SPECIFICATION
, CHARACTERISTIC_POWER_SPECIFICATION
},
2818 { PROPERTY_DEVICE_RUNTIME_SINCE_TURN_ON
, CHARACTERISTIC_TIME_HOUR_24
},
2819 { PROPERTY_DEVICE_RUNTIME_WARRANTY
, CHARACTERISTIC_TIME_HOUR_24
},
2820 { PROPERTY_DEVICE_SERIAL_NUMBER
, CHARACTERISTIC_FIXED_STRING_16
},
2821 { PROPERTY_DEVICE_SOFTWARE_REVISION
, CHARACTERISTIC_FIXED_STRING_8
},
2822 { PROPERTY_DEVICE_UNDER_TEMPERATURE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2823 { PROPERTY_DEW_POINT
, CHARACTERISTIC_DEW_POINT
},
2824 { PROPERTY_EXTERNAL_SUPPLY_VOLTAGE
, CHARACTERISTIC_HIGH_VOLTAGE
},
2825 { PROPERTY_EXTERNAL_SUPPLY_VOLTAGE_FREQUENCY
, CHARACTERISTIC_VOLTAGE_FREQUENCY
},
2826 { PROPERTY_GUST_FACTOR
, CHARACTERISTIC_GUST_FACTOR
},
2827 { PROPERTY_HEAT_INDEX
, CHARACTERISTIC_HEAT_INDEX
},
2828 { PROPERTY_INDOOR_AMBIENT_TEMPERATURE_STATISTICAL_VALUES
, CHARACTERISTIC_TEMPERATURE_8_STATISTICS
},
2829 { PROPERTY_INITIAL_CIE_1931_CHROMATICITY_COORDINATES
, CHARACTERISTIC_CHROMATICITY_COORDINATES
},
2830 { PROPERTY_INITIAL_CORRELATED_COLOR_TEMPERATURE
, CHARACTERISTIC_CORRELATED_COLOR_TEMPERATURE
},
2831 { PROPERTY_INITIAL_LUMINOUS_FLUX
, CHARACTERISTIC_LUMINOUS_FLUX
},
2832 { PROPERTY_INITIAL_PLANCKIAN_DISTANCE
, CHARACTERISTIC_CHROMATIC_DISTANCE_FROM_PLANCKIAN
},
2833 { PROPERTY_INPUT_CURRENT_RANGE_SPECIFICATION
, CHARACTERISTIC_ELECTRIC_CURRENT_SPECIFICATION
},
2834 { PROPERTY_INPUT_CURRENT_STATISTICS
, CHARACTERISTIC_ELECTRIC_CURRENT_STATISTICS
},
2835 { PROPERTY_INPUT_OVER_CURRENT_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2836 { PROPERTY_INPUT_OVER_RIPPLE_VOLTAGE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2837 { PROPERTY_INPUT_OVER_VOLTAGE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2838 { PROPERTY_INPUT_UNDER_CURRENT_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2839 { PROPERTY_INPUT_UNDER_VOLTAGE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2840 { PROPERTY_INPUT_VOLTAGE_RANGE_SPECIFICATION
, CHARACTERISTIC_VOLTAGE_SPECIFICATION
},
2841 { PROPERTY_INPUT_VOLTAGE_RIPPLE_SPECIFICATION
, CHARACTERISTIC_PERCENTAGE_8
},
2842 { PROPERTY_INPUT_VOLTAGE_STATISTICS
, CHARACTERISTIC_VOLTAGE_STATISTICS
},
2843 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_ON
, CHARACTERISTIC_ILLUMINANCE
},
2844 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_PROLONG
, CHARACTERISTIC_ILLUMINANCE
},
2845 { PROPERTY_LIGHT_CONTROL_AMBIENT_LUX_LEVEL_STANDBY
, CHARACTERISTIC_ILLUMINANCE
},
2846 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_ON
, CHARACTERISTIC_PERCEIVED_LIGHTNESS
},
2847 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_PROLONG
, CHARACTERISTIC_PERCEIVED_LIGHTNESS
},
2848 { PROPERTY_LIGHT_CONTROL_LIGHTNESS_STANDBY
, CHARACTERISTIC_PERCEIVED_LIGHTNESS
},
2849 { PROPERTY_LIGHT_CONTROL_REGULATOR_ACCURACY
, CHARACTERISTIC_PERCENTAGE_8
},
2850 { PROPERTY_LIGHT_CONTROL_REGULATOR_KID
, CHARACTERISTIC_COEFFICIENT
},
2851 { PROPERTY_LIGHT_CONTROL_REGULATOR_KIU
, CHARACTERISTIC_COEFFICIENT
},
2852 { PROPERTY_LIGHT_CONTROL_REGULATOR_KPD
, CHARACTERISTIC_COEFFICIENT
},
2853 { PROPERTY_LIGHT_CONTROL_REGULATOR_KPU
, CHARACTERISTIC_COEFFICIENT
},
2854 { PROPERTY_LIGHT_CONTROL_TIME_FADE
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2855 { PROPERTY_LIGHT_CONTROL_TIME_FADE_ON
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2856 { PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_AUTO
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2857 { PROPERTY_LIGHT_CONTROL_TIME_FADE_STANDBY_MANUAL
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2858 { PROPERTY_LIGHT_CONTROL_TIME_OCCUPANCY_DELAY
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2859 { PROPERTY_LIGHT_CONTROL_TIME_PROLONG
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2860 { PROPERTY_LIGHT_CONTROL_TIME_RUN_ON
, CHARACTERISTIC_TIME_MILLISECOND_24
},
2861 { PROPERTY_LIGHT_DISTRIBUTION
, CHARACTERISTIC_LIGHT_DISTRIBUTION
},
2862 { PROPERTY_LIGHT_SOURCE_CURRENT
, CHARACTERISTIC_AVERAGE_CURRENT
},
2863 { PROPERTY_LIGHT_SOURCE_ON_TIME_NOT_RESETTABLE
, CHARACTERISTIC_TIME_SECOND_32
},
2864 { PROPERTY_LIGHT_SOURCE_ON_TIME_RESETTABLE
, CHARACTERISTIC_TIME_SECOND_32
},
2865 { PROPERTY_LIGHT_SOURCE_OPEN_CIRCUIT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2866 { PROPERTY_LIGHT_SOURCE_OVERALL_FAILURES_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2867 { PROPERTY_LIGHT_SOURCE_SHORT_CIRCUIT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2868 { PROPERTY_LIGHT_SOURCE_START_COUNTER_RESETTABLE
, CHARACTERISTIC_COUNT_24
},
2869 { PROPERTY_LIGHT_SOURCE_TEMPERATURE
, CHARACTERISTIC_HIGH_TEMPERATURE
},
2870 { PROPERTY_LIGHT_SOURCE_THERMAL_DERATING_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2871 { PROPERTY_LIGHT_SOURCE_THERMAL_SHUTDOWN_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2872 { PROPERTY_LIGHT_SOURCE_TOTAL_POWER_ON_CYCLES
, CHARACTERISTIC_COUNT_24
},
2873 { PROPERTY_LIGHT_SOURCE_TYPE
, CHARACTERISTIC_LIGHT_SOURCE_TYPE
},
2874 { PROPERTY_LIGHT_SOURCE_VOLTAGE
, CHARACTERISTIC_AVERAGE_VOLTAGE
},
2875 { PROPERTY_LUMEN_MAINTENANCE_FACTOR
, CHARACTERISTIC_PERCENTAGE_8
},
2876 { PROPERTY_LUMINAIRE_COLOR
, CHARACTERISTIC_FIXED_STRING_24
},
2877 { PROPERTY_LUMINAIRE_IDENTIFICATION_NUMBER
, CHARACTERISTIC_FIXED_STRING_24
},
2878 { PROPERTY_LUMINAIRE_IDENTIFICATION_STRING
, CHARACTERISTIC_FIXED_STRING_64
},
2879 { PROPERTY_LUMINAIRE_MANUFACTURER_GTIN
, CHARACTERISTIC_GLOBAL_TRADE_ITEM_NUMBER
},
2880 { PROPERTY_LUMINAIRE_NOMINAL_INPUT_POWER
, CHARACTERISTIC_POWER
},
2881 { PROPERTY_LUMINAIRE_NOMINAL_MAXIMUM_AC_MAINS_VOLTAGE
, CHARACTERISTIC_VOLTAGE
},
2882 { PROPERTY_LUMINAIRE_NOMINAL_MINIMUM_AC_MAINS_VOLTAGE
, CHARACTERISTIC_VOLTAGE
},
2883 { PROPERTY_LUMINAIRE_POWER_AT_MINIMUM_DIM_LEVEL
, CHARACTERISTIC_POWER
},
2884 { PROPERTY_LUMINAIRE_TIME_OF_MANUFACTURE
, CHARACTERISTIC_DATE_UTC
},
2885 { PROPERTY_LUMINOUS_EFFICACY
, CHARACTERISTIC_LUMINOUS_EFFICACY
},
2886 { PROPERTY_LUMINOUS_ENERGY_SINCE_TURN_ON
, CHARACTERISTIC_LUMINOUS_ENERGY
},
2887 { PROPERTY_LUMINOUS_EXPOSURE
, CHARACTERISTIC_LUMINOUS_EXPOSURE
},
2888 { PROPERTY_LUMINOUS_FLUX_RANGE
, CHARACTERISTIC_LUMINOUS_FLUX_RANGE
},
2889 { PROPERTY_MAGNETIC_DECLINATION
, CHARACTERISTIC_MAGNETIC_DECLINATION
},
2890 { PROPERTY_MAGNETIC_FLUX_DENSITY_2_D
, CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_2_D
},
2891 { PROPERTY_MAGNETIC_FLUX_DENSITY_3_D
, CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_3_D
},
2892 { PROPERTY_MOTION_SENSED
, CHARACTERISTIC_PERCENTAGE_8
},
2893 { PROPERTY_MOTION_THRESHOLD
, CHARACTERISTIC_PERCENTAGE_8
},
2894 { PROPERTY_NOMINAL_LIGHT_OUTPUT
, CHARACTERISTIC_LIGHT_OUTPUT
},
2895 { PROPERTY_OPEN_CIRCUIT_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2896 { PROPERTY_OUTDOOR_STATISTICAL_VALUES
, CHARACTERISTIC_TEMPERATURE_8_STATISTICS
},
2897 { PROPERTY_OUTPUT_CURRENT_PERCENT
, CHARACTERISTIC_PERCENTAGE_8
},
2898 { PROPERTY_OUTPUT_CURRENT_RANGE
, CHARACTERISTIC_ELECTRIC_CURRENT_RANGE
},
2899 { PROPERTY_OUTPUT_CURRENT_STATISTICS
, CHARACTERISTIC_ELECTRIC_CURRENT_STATISTICS
},
2900 { PROPERTY_OUTPUT_POWER_LIMITATION
, CHARACTERISTIC_EVENT_STATISTICS
},
2901 { PROPERTY_OUTPUT_RIPPLE_VOLTAGE_SPECIFICATION
, CHARACTERISTIC_PERCENTAGE_8
},
2902 { PROPERTY_OUTPUT_VOLTAGE_RANGE
, CHARACTERISTIC_VOLTAGE_SPECIFICATION
},
2903 { PROPERTY_OUTPUT_VOLTAGE_STATISTICS
, CHARACTERISTIC_VOLTAGE_STATISTICS
},
2904 { PROPERTY_OVER_OUTPUT_RIPPLE_VOLTAGE_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2905 { PROPERTY_OVERALL_FAILURE_CONDITION
, CHARACTERISTIC_EVENT_STATISTICS
},
2906 { PROPERTY_PEOPLE_COUNT
, CHARACTERISTIC_COUNT_16
},
2907 { PROPERTY_POLLEN_CONCENTRATION
, CHARACTERISTIC_POLLEN_CONCENTRATION
},
2908 { PROPERTY_POWER_FACTOR
, CHARACTERISTIC_COSINE_OF_THE_ANGLE
},
2909 { PROPERTY_PRECISE_PRESENT_AMBIENT_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE
},
2910 { PROPERTY_PRECISE_TOTAL_DEVICE_ENERGY_USE
, CHARACTERISTIC_ENERGY32
},
2911 { PROPERTY_PRESENCE_DETECTED
, CHARACTERISTIC_BOOLEAN
},
2912 { PROPERTY_PRESENT_AMBIENT_CARBON_DIOXIDE_CONCENTRATION
, CHARACTERISTIC_CO2_CONCENTRATION
},
2913 { PROPERTY_PRESENT_AMBIENT_LIGHT_LEVEL
, CHARACTERISTIC_ILLUMINANCE
},
2914 { PROPERTY_PRESENT_AMBIENT_NOISE
, CHARACTERISTIC_NOISE
},
2915 { PROPERTY_PRESENT_AMBIENT_RELATIVE_HUMIDITY
, CHARACTERISTIC_HUMIDITY
},
2916 { PROPERTY_PRESENT_AMBIENT_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE_8
},
2917 { PROPERTY_PRESENT_AMBIENT_VOLATILE_ORGANIC_COMPOUNDS_CONCENTRATION
, CHARACTERISTIC_VOC_CONCENTRATION
},
2918 { PROPERTY_PRESENT_CIE_1931_CHROMATICITY_COORDINATES
, CHARACTERISTIC_CHROMATICITY_COORDINATES
},
2919 { PROPERTY_PRESENT_CORRELATED_COLOR_TEMPERATURE
, CHARACTERISTIC_CORRELATED_COLOR_TEMPERATURE
},
2920 { PROPERTY_PRESENT_DEVICE_INPUT_POWER
, CHARACTERISTIC_POWER
},
2921 { PROPERTY_PRESENT_DEVICE_OPERATING_EFFICIENCY
, CHARACTERISTIC_PERCENTAGE_8
},
2922 { PROPERTY_PRESENT_DEVICE_OPERATING_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE
},
2923 { PROPERTY_PRESENT_ILLUMINANCE
, CHARACTERISTIC_ILLUMINANCE
},
2924 { PROPERTY_PRESENT_INDOOR_AMBIENT_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE_8
},
2925 { PROPERTY_PRESENT_INDOOR_RELATIVE_HUMIDITY
, CHARACTERISTIC_HUMIDITY
},
2926 { PROPERTY_PRESENT_INPUT_CURRENT
, CHARACTERISTIC_ELECTRIC_CURRENT
},
2927 { PROPERTY_PRESENT_INPUT_RIPPLE_VOLTAGE
, CHARACTERISTIC_PERCENTAGE_8
},
2928 { PROPERTY_PRESENT_INPUT_VOLTAGE
, CHARACTERISTIC_VOLTAGE
},
2929 { PROPERTY_PRESENT_LUMINOUS_FLUX
, CHARACTERISTIC_LUMINOUS_FLUX
},
2930 { PROPERTY_PRESENT_OUTDOOR_AMBIENT_TEMPERATURE
, CHARACTERISTIC_TEMPERATURE_8
},
2931 { PROPERTY_PRESENT_OUTDOOR_RELATIVE_HUMIDITY
, CHARACTERISTIC_HUMIDITY
},
2932 { PROPERTY_PRESENT_OUTPUT_CURRENT
, CHARACTERISTIC_ELECTRIC_CURRENT
},
2933 { PROPERTY_PRESENT_OUTPUT_VOLTAGE
, CHARACTERISTIC_VOLTAGE
},
2934 { PROPERTY_PRESENT_PLANCKIAN_DISTANCE
, CHARACTERISTIC_CHROMATIC_DISTANCE_FROM_PLANCKIAN
},
2935 { PROPERTY_PRESENT_RELATIVE_OUTPUT_RIPPLE_VOLTAGE
, CHARACTERISTIC_PERCENTAGE_8
},
2936 { PROPERTY_PRESSURE
, CHARACTERISTIC_PRESSURE
},
2937 { PROPERTY_RAINFALL
, CHARACTERISTIC_RAINFALL
},
2938 { PROPERTY_RATED_MEDIAN_USEFUL_LIFE_OF_LUMINAIRE
, CHARACTERISTIC_TIME_HOUR_24
},
2939 { PROPERTY_RATED_MEDIAN_USEFUL_LIGHT_SOURCE_STARTS
, CHARACTERISTIC_COUNT_24
},
2940 { PROPERTY_REFERENCE_TEMPERATURE
, CHARACTERISTIC_HIGH_TEMPERATURE
},
2941 { PROPERTY_RELATIVE_DEVICE_ENERGY_USE_IN_A_PERIOD_OF_DAY
, CHARACTERISTIC_ENERGY_IN_A_PERIOD_OF_DAY
},
2942 { PROPERTY_RELATIVE_DEVICE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE
, CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE
},
2943 { PROPERTY_RELATIVE_EXPOSURE_TIME_IN_AN_ILLUMINANCE_RANGE
, CHARACTERISTIC_RELATIVE_VALUE_IN_AN_ILLUMINANCE_RANGE
},
2944 { PROPERTY_RELATIVE_RUNTIME_IN_A_CORRELATED_COLOR_TEMPERATURE_RANGE
, CHARACTERISTIC_LUMINOUS_ENERGY
},
2945 { PROPERTY_RELATIVE_RUNTIME_IN_A_DEVICE_OPERATING_TEMPERATURE_RANGE
, CHARACTERISTIC_RELATIVE_VALUE_IN_A_TEMPERATURE_RANGE
},
2946 { PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_CURRENT_RANGE
, CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_CURRENT_RANGE
},
2947 { PROPERTY_RELATIVE_RUNTIME_IN_AN_INPUT_VOLTAGE_RANGE
, CHARACTERISTIC_RELATIVE_VALUE_IN_A_VOLTAGE_RANGE
},
2948 { PROPERTY_SENSOR_GAIN
, CHARACTERISTIC_COEFFICIENT
},
2949 { PROPERTY_SHORT_CIRCUIT_EVENT_STATISTICS
, CHARACTERISTIC_EVENT_STATISTICS
},
2950 { PROPERTY_THERMAL_DERATING
, CHARACTERISTIC_EVENT_STATISTICS
},
2951 { PROPERTY_TIME_SINCE_MOTION_SENSED
, CHARACTERISTIC_TIME_SECOND_16
},
2952 { PROPERTY_TIME_SINCE_PRESENCE_DETECTED
, CHARACTERISTIC_TIME_SECOND_16
},
2953 { PROPERTY_TOTAL_DEVICE_ENERGY_USE
, CHARACTERISTIC_ENERGY
},
2954 { PROPERTY_TOTAL_DEVICE_OFF_ON_CYCLES
, CHARACTERISTIC_COUNT_24
},
2955 { PROPERTY_TOTAL_DEVICE_POWER_ON_CYCLES
, CHARACTERISTIC_COUNT_24
},
2956 { PROPERTY_TOTAL_DEVICE_POWER_ON_TIME
, CHARACTERISTIC_TIME_HOUR_24
},
2957 { PROPERTY_TOTAL_DEVICE_RUNTIME
, CHARACTERISTIC_TIME_HOUR_24
},
2958 { PROPERTY_TOTAL_DEVICE_STARTS
, CHARACTERISTIC_COUNT_24
},
2959 { PROPERTY_TOTAL_LIGHT_EXPOSURE_TIME
, CHARACTERISTIC_TIME_HOUR_24
},
2960 { PROPERTY_TOTAL_LUMINOUS_ENERGY
, CHARACTERISTIC_LUMINOUS_ENERGY
},
2961 { PROPERTY_TRUE_WIND_DIRECTION
, CHARACTERISTIC_TRUE_WIND_DIRECTION
},
2962 { PROPERTY_TRUE_WIND_SPEED
, CHARACTERISTIC_TRUE_WIND_SPEED
},
2963 { PROPERTY_UV_INDEX
, CHARACTERISTIC_UV_INDEX
},
2964 { PROPERTY_WIND_CHILL
, CHARACTERISTIC_WIND_CHILL
},
2968 static const btmesh_column_property_t btmesh_column_properties
[] = {
2969 { CHARACTERISTIC_TEMPERATURE_8_IN_A_PERIOD_OF_DAY
, CHARACTERISTIC_DECIHOUR_8
, CHARACTERISTIC_TEMPERATURE_8
},
2970 { CHARACTERISTIC_RELATIVE_VALUE_IN_A_TEMPERATURE_RANGE
, CHARACTERISTIC_TEMPERATURE
, CHARACTERISTIC_PERCENTAGE_8
},
2971 { CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_CURRENT_RANGE
, CHARACTERISTIC_ELECTRIC_CURRENT
, CHARACTERISTIC_PERCENTAGE_8
},
2972 { CHARACTERISTIC_ENERGY_IN_A_PERIOD_OF_DAY
, CHARACTERISTIC_DECIHOUR_8
, CHARACTERISTIC_ENERGY
},
2973 { CHARACTERISTIC_RELATIVE_VALUE_IN_AN_ILLUMINANCE_RANGE
, CHARACTERISTIC_ILLUMINANCE
, CHARACTERISTIC_PERCENTAGE_8
},
2974 { CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE
, CHARACTERISTIC_GENERIC_LEVEL
, CHARACTERISTIC_PERCENTAGE_8
},
2978 static const bt_gatt_characteristic_t bt_gatt_characteristics
[] = {
2979 { PHONY_CHARACTERISTIC_PERCENTAGE_CHANGE_16
, 2, &hf_bt_phony_characteristic_percentage_change_16
, DISSECTOR_SIMPLE
},
2980 { PHONY_CHARACTERISTIC_INDEX
, 2, &hf_bt_phony_characteristic_index
, DISSECTOR_SIMPLE
},
2981 { CHARACTERISTIC_APPARENT_ENERGY32
, 4, NULL
, DISSECTOR_SIMPLE
},
2982 { CHARACTERISTIC_APPARENT_POWER
, 3, NULL
, DISSECTOR_SIMPLE
},
2983 { CHARACTERISTIC_APPARENT_WIND_DIRECTION
, 2, NULL
, DISSECTOR_SIMPLE
},
2984 { CHARACTERISTIC_APPARENT_WIND_SPEED
, 2, NULL
, DISSECTOR_SIMPLE
},
2985 { CHARACTERISTIC_APPEARANCE
, 2, NULL
, DISSECTOR_SIMPLE
},
2986 { CHARACTERISTIC_AVERAGE_CURRENT
, 3, NULL
, DISSECTOR_SIMPLE
},
2987 { CHARACTERISTIC_AVERAGE_VOLTAGE
, 3, NULL
, DISSECTOR_SIMPLE
},
2988 { CHARACTERISTIC_BOOLEAN
, 1, &hf_bt_characteristic_boolean
, DISSECTOR_SIMPLE
},
2989 { CHARACTERISTIC_CHROMATIC_DISTANCE_FROM_PLANCKIAN
, 2, NULL
, DISSECTOR_SIMPLE
},
2990 { CHARACTERISTIC_CHROMATICITY_COORDINATES
, 2, NULL
, DISSECTOR_SIMPLE
},
2991 { CHARACTERISTIC_CHROMATICITY_TOLERANCE
, 1, NULL
, DISSECTOR_SIMPLE
},
2992 { CHARACTERISTIC_CIE_13_3_1995_COLOR_RENDERING_INDEX
, 1, NULL
, DISSECTOR_SIMPLE
},
2993 { CHARACTERISTIC_CO2_CONCENTRATION
, 2, NULL
, DISSECTOR_SIMPLE
},
2994 { CHARACTERISTIC_COEFFICIENT
, 4, &hf_bt_characteristic_coefficient
, DISSECTOR_SIMPLE
},
2995 { CHARACTERISTIC_CORRELATED_COLOR_TEMPERATURE
, 2, NULL
, DISSECTOR_SIMPLE
},
2996 { CHARACTERISTIC_COSINE_OF_THE_ANGLE
, 1, NULL
, DISSECTOR_SIMPLE
},
2997 { CHARACTERISTIC_COUNT_16
, 2, &hf_bt_characteristic_count_16
, DISSECTOR_SIMPLE
},
2998 { CHARACTERISTIC_COUNT_24
, 3, NULL
, DISSECTOR_SIMPLE
},
2999 { CHARACTERISTIC_COUNTRY_CODE
, 2, NULL
, DISSECTOR_SIMPLE
},
3000 { CHARACTERISTIC_DATE_UTC
, 3, NULL
, DISSECTOR_SIMPLE
},
3001 { CHARACTERISTIC_DECIHOUR_8
, 1, &hf_bt_characteristic_time_decihour_8
, DISSECTOR_SIMPLE
},
3002 { CHARACTERISTIC_DEW_POINT
, 1, NULL
, DISSECTOR_SIMPLE
},
3003 { CHARACTERISTIC_ELECTRIC_CURRENT
, 2, &hf_bt_characteristic_electric_current
, DISSECTOR_SIMPLE
},
3004 { CHARACTERISTIC_ELECTRIC_CURRENT_RANGE
, 4, NULL
, DISSECTOR_SIMPLE
},
3005 { CHARACTERISTIC_ELECTRIC_CURRENT_SPECIFICATION
, 6, NULL
, DISSECTOR_SIMPLE
},
3006 { CHARACTERISTIC_ELECTRIC_CURRENT_STATISTICS
, 9, NULL
, DISSECTOR_SIMPLE
},
3007 { CHARACTERISTIC_ENERGY
, 3, &hf_bt_characteristic_energy
, DISSECTOR_SIMPLE
},
3008 { CHARACTERISTIC_ENERGY_IN_A_PERIOD_OF_DAY
, 5, NULL
, DISSECTOR_THREE_VALUES
},
3009 { CHARACTERISTIC_ENERGY32
, 4, NULL
, DISSECTOR_SIMPLE
},
3010 { CHARACTERISTIC_EVENT_STATISTICS
, 6, NULL
, DISSECTOR_SIMPLE
},
3011 { CHARACTERISTIC_FIXED_STRING_16
, 16, NULL
, DISSECTOR_SIMPLE
},
3012 { CHARACTERISTIC_FIXED_STRING_24
, 24, NULL
, DISSECTOR_SIMPLE
},
3013 { CHARACTERISTIC_FIXED_STRING_36
, 36, NULL
, DISSECTOR_SIMPLE
},
3014 { CHARACTERISTIC_FIXED_STRING_64
, 64, NULL
, DISSECTOR_SIMPLE
},
3015 { CHARACTERISTIC_FIXED_STRING_8
, 8, NULL
, DISSECTOR_SIMPLE
},
3016 { CHARACTERISTIC_GENERIC_LEVEL
, 2, &hf_bt_characteristic_generic_level
, DISSECTOR_SIMPLE
},
3017 { CHARACTERISTIC_GLOBAL_TRADE_ITEM_NUMBER
, 6, NULL
, DISSECTOR_SIMPLE
},
3018 { CHARACTERISTIC_GUST_FACTOR
, 1, NULL
, DISSECTOR_SIMPLE
},
3019 { CHARACTERISTIC_HEAT_INDEX
, 1, NULL
, DISSECTOR_SIMPLE
},
3020 { CHARACTERISTIC_HIGH_TEMPERATURE
, 2, NULL
, DISSECTOR_SIMPLE
},
3021 { CHARACTERISTIC_HIGH_VOLTAGE
, 3, NULL
, DISSECTOR_SIMPLE
},
3022 { CHARACTERISTIC_HUMIDITY
, 2, NULL
, DISSECTOR_SIMPLE
},
3023 { CHARACTERISTIC_ILLUMINANCE
, 3, &hf_bt_characteristic_illuminance
, DISSECTOR_SIMPLE
},
3024 { CHARACTERISTIC_LIGHT_DISTRIBUTION
, 1, NULL
, DISSECTOR_SIMPLE
},
3025 { CHARACTERISTIC_LIGHT_OUTPUT
, 3, NULL
, DISSECTOR_SIMPLE
},
3026 { CHARACTERISTIC_LIGHT_SOURCE_TYPE
, 1, NULL
, DISSECTOR_SIMPLE
},
3027 { CHARACTERISTIC_LUMINOUS_EFFICACY
, 2, NULL
, DISSECTOR_SIMPLE
},
3028 { CHARACTERISTIC_LUMINOUS_ENERGY
, 3, NULL
, DISSECTOR_SIMPLE
},
3029 { CHARACTERISTIC_LUMINOUS_EXPOSURE
, 3, NULL
, DISSECTOR_SIMPLE
},
3030 { CHARACTERISTIC_LUMINOUS_FLUX
, 2, NULL
, DISSECTOR_SIMPLE
},
3031 { CHARACTERISTIC_LUMINOUS_FLUX_RANGE
, 4, NULL
, DISSECTOR_SIMPLE
},
3032 { CHARACTERISTIC_LUMINOUS_INTENSITY
, 2, NULL
, DISSECTOR_SIMPLE
},
3033 { CHARACTERISTIC_MAGNETIC_DECLINATION
, 2, NULL
, DISSECTOR_SIMPLE
},
3034 { CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_2_D
, 4, NULL
, DISSECTOR_SIMPLE
},
3035 { CHARACTERISTIC_MAGNETIC_FLUX_DENSITY_3_D
, 6, NULL
, DISSECTOR_SIMPLE
},
3036 { CHARACTERISTIC_NOISE
, 1, NULL
, DISSECTOR_SIMPLE
},
3037 { CHARACTERISTIC_PERCEIVED_LIGHTNESS
, 2, &hf_bt_characteristic_perceived_lightness
, DISSECTOR_SIMPLE
},
3038 { CHARACTERISTIC_PERCENTAGE_8
, 1, &hf_bt_characteristic_percentage_8
, DISSECTOR_SIMPLE
},
3039 { CHARACTERISTIC_POLLEN_CONCENTRATION
, 3, NULL
, DISSECTOR_SIMPLE
},
3040 { CHARACTERISTIC_POWER
, 3, NULL
, DISSECTOR_SIMPLE
},
3041 { CHARACTERISTIC_POWER_SPECIFICATION
, 9, NULL
, DISSECTOR_SIMPLE
},
3042 { CHARACTERISTIC_PRESSURE
, 4, NULL
, DISSECTOR_SIMPLE
},
3043 { CHARACTERISTIC_RAINFALL
, 2, NULL
, DISSECTOR_SIMPLE
},
3044 { CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_CURRENT_RANGE
, 5, NULL
, DISSECTOR_THREE_VALUES
},
3045 { CHARACTERISTIC_RELATIVE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE
, 5, NULL
, DISSECTOR_THREE_VALUES
},
3046 { CHARACTERISTIC_RELATIVE_VALUE_IN_A_TEMPERATURE_RANGE
, 5, NULL
, DISSECTOR_THREE_VALUES
},
3047 { CHARACTERISTIC_RELATIVE_VALUE_IN_A_VOLTAGE_RANGE
, 5, NULL
, DISSECTOR_SIMPLE
},
3048 { CHARACTERISTIC_RELATIVE_VALUE_IN_AN_ILLUMINANCE_RANGE
, 7, NULL
, DISSECTOR_THREE_VALUES
},
3049 { CHARACTERISTIC_TEMPERATURE
, 2, &hf_bt_characteristic_temperature
, DISSECTOR_SIMPLE
},
3050 { CHARACTERISTIC_TEMPERATURE_8
, 1, &hf_bt_characteristic_temperature_8
, DISSECTOR_SIMPLE
},
3051 { CHARACTERISTIC_TEMPERATURE_8_IN_A_PERIOD_OF_DAY
, 3, NULL
, DISSECTOR_THREE_VALUES
},
3052 { CHARACTERISTIC_TEMPERATURE_8_STATISTICS
, 5, NULL
, DISSECTOR_SIMPLE
},
3053 { CHARACTERISTIC_TEMPERATURE_RANGE
, 4, NULL
, DISSECTOR_SIMPLE
},
3054 { CHARACTERISTIC_TEMPERATURE_STATISTICS
, 9, NULL
, DISSECTOR_SIMPLE
},
3055 { CHARACTERISTIC_TIME_HOUR_24
, 3, NULL
, DISSECTOR_SIMPLE
},
3056 { CHARACTERISTIC_TIME_MILLISECOND_24
, 3, &hf_bt_characteristic_time_millisecond_24
, DISSECTOR_SIMPLE
},
3057 { CHARACTERISTIC_TIME_SECOND_16
, 2, &hf_bt_characteristic_time_second_16
, DISSECTOR_SIMPLE
},
3058 { CHARACTERISTIC_TIME_SECOND_32
, 4, NULL
, DISSECTOR_SIMPLE
},
3059 { CHARACTERISTIC_TRUE_WIND_DIRECTION
, 2, NULL
, DISSECTOR_SIMPLE
},
3060 { CHARACTERISTIC_TRUE_WIND_SPEED
, 2, NULL
, DISSECTOR_SIMPLE
},
3061 { CHARACTERISTIC_UV_INDEX
, 1, NULL
, DISSECTOR_SIMPLE
},
3062 { CHARACTERISTIC_VOC_CONCENTRATION
, 2, NULL
, DISSECTOR_SIMPLE
},
3063 { CHARACTERISTIC_VOLTAGE
, 2, NULL
, DISSECTOR_SIMPLE
},
3064 { CHARACTERISTIC_VOLTAGE_FREQUENCY
, 2, NULL
, DISSECTOR_SIMPLE
},
3065 { CHARACTERISTIC_VOLTAGE_SPECIFICATION
, 6, NULL
, DISSECTOR_SIMPLE
},
3066 { CHARACTERISTIC_VOLTAGE_STATISTICS
, 9, NULL
, DISSECTOR_SIMPLE
},
3067 { CHARACTERISTIC_WIND_CHILL
, 1, NULL
, DISSECTOR_SIMPLE
},
3071 /* Upper Transport Message reassembly */
3073 static reassembly_table upper_transport_reassembly_table
;
3075 typedef struct _upper_transport_fragment_key
{
3079 uint32_t net_key_iv_index_hash
;
3080 } upper_transport_fragment_key
;
3083 upper_transport_fragment_hash(const void *k
)
3085 const upper_transport_fragment_key
* key
= (const upper_transport_fragment_key
*) k
;
3088 const uint8_t hash_buf_len
= sizeof(uint16_t) + 2 * sizeof(unsigned) + sizeof(uint32_t);
3090 uint8_t* hash_buf
= (uint8_t*)wmem_alloc(wmem_packet_scope(), hash_buf_len
);
3091 memcpy(hash_buf
, &key
->src
, sizeof(uint16_t));
3092 idx
+= sizeof(uint16_t);
3093 memcpy(&hash_buf
[idx
], &key
->seq0
, sizeof(unsigned));
3094 idx
+= sizeof(unsigned);
3095 memcpy(&hash_buf
[idx
], &key
->ivindex
, sizeof(key
->ivindex
));
3096 idx
+= sizeof(unsigned);
3097 memcpy(&hash_buf
[idx
], &key
->net_key_iv_index_hash
, sizeof(key
->net_key_iv_index_hash
));
3098 hash_val
= wmem_strong_hash(hash_buf
, hash_buf_len
);
3104 upper_transport_fragment_equal(const void *k1
, const void *k2
)
3106 const upper_transport_fragment_key
* key1
= (const upper_transport_fragment_key
*) k1
;
3107 const upper_transport_fragment_key
* key2
= (const upper_transport_fragment_key
*) k2
;
3109 return ((key1
->src
== key2
->src
) && (key1
->seq0
== key2
->seq0
) &&
3110 (key1
->ivindex
== key2
->ivindex
) && (key1
->net_key_iv_index_hash
== key2
->net_key_iv_index_hash
)
3115 upper_transport_fragment_temporary_key(const packet_info
*pinfo _U_
, const uint32_t id _U_
,
3118 upper_transport_fragment_key
*key
= g_slice_new(upper_transport_fragment_key
);
3119 const upper_transport_fragment_key
*pkt
= (const upper_transport_fragment_key
*)data
;
3121 key
->src
= pkt
->src
;
3122 key
->seq0
= pkt
->seq0
;
3123 key
->ivindex
= pkt
->ivindex
;
3124 key
->net_key_iv_index_hash
= pkt
->net_key_iv_index_hash
;
3130 upper_transport_fragment_free_temporary_key(void *ptr
)
3132 upper_transport_fragment_key
*key
= (upper_transport_fragment_key
*)ptr
;
3134 g_slice_free(upper_transport_fragment_key
, key
);
3138 upper_transport_fragment_persistent_key(const packet_info
*pinfo _U_
, const uint32_t id _U_
,
3141 upper_transport_fragment_key
*key
= g_slice_new(upper_transport_fragment_key
);
3142 const upper_transport_fragment_key
*pkt
= (const upper_transport_fragment_key
*)data
;
3144 key
->src
= pkt
->src
;
3145 key
->seq0
= pkt
->seq0
;
3146 key
->ivindex
= pkt
->ivindex
;
3147 key
->net_key_iv_index_hash
= pkt
->net_key_iv_index_hash
;
3153 upper_transport_fragment_free_persistent_key(void *ptr
)
3155 upper_transport_fragment_key
*key
= (upper_transport_fragment_key
*)ptr
;
3157 g_slice_free(upper_transport_fragment_key
, key
);
3161 static const reassembly_table_functions upper_transport_reassembly_table_functions
= {
3162 upper_transport_fragment_hash
,
3163 upper_transport_fragment_equal
,
3164 upper_transport_fragment_temporary_key
,
3165 upper_transport_fragment_persistent_key
,
3166 upper_transport_fragment_free_temporary_key
,
3167 upper_transport_fragment_free_persistent_key
3170 /* A BT Mesh dissector is not really useful without decryption as all packets are encrypted. Just leave a stub dissector outside of */
3172 /* BT Mesh s1 function */
3174 s1(uint8_t *m
, size_t mlen
, uint8_t *salt
)
3177 gcry_mac_hd_t mac_hd
;
3178 gcry_error_t gcrypt_err
;
3179 size_t read_digest_length
= 16;
3180 uint8_t zero
[16] = { 0 };
3182 /* Open gcrypt handle */
3183 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3184 if (gcrypt_err
!= 0) {
3189 gcrypt_err
= gcry_mac_setkey(mac_hd
, &zero
, 16);
3190 if (gcrypt_err
!= 0) {
3191 gcry_mac_close(mac_hd
);
3195 gcrypt_err
= gcry_mac_write(mac_hd
, m
, mlen
);
3196 if (gcrypt_err
!= 0) {
3197 gcry_mac_close(mac_hd
);
3201 /* Read out the digest */
3202 gcrypt_err
= gcry_mac_read(mac_hd
, salt
, &read_digest_length
);
3203 if (gcrypt_err
!= 0) {
3204 gcry_mac_close(mac_hd
);
3208 /* Now close the mac handle */
3209 gcry_mac_close(mac_hd
);
3213 /* BT Mesh Labebl UUID hash function
3215 * SALT = s1 ("vtad")
3216 * hash = AES-CMAC(SALT, Label UUID) mod 2(pow)14
3220 label_uuid_hash(uat_btmesh_label_uuid_record_t
*label_uuid_record
)
3222 gcry_mac_hd_t mac_hd
;
3223 gcry_error_t gcrypt_err
;
3224 uint8_t vtad
[4] = { 'v', 't', 'a', 'd' };
3228 size_t read_digest_length
= 16;
3230 if (label_uuid_record
->label_uuid_length
!= 16) {
3234 /* SALT = s1("vtad") */
3235 if (s1(vtad
, mlen
, salt
) == false) {
3239 /* hash = AES-CMAC(SALT, Label UUID) */
3240 /* Open gcrypt handle */
3241 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3242 if (gcrypt_err
!= 0) {
3247 gcrypt_err
= gcry_mac_setkey(mac_hd
, &salt
, 16);
3248 if (gcrypt_err
!= 0) {
3249 gcry_mac_close(mac_hd
);
3253 gcrypt_err
= gcry_mac_write(mac_hd
, label_uuid_record
->label_uuid
, 16);
3254 if (gcrypt_err
!= 0) {
3255 gcry_mac_close(mac_hd
);
3259 /* Read out the digest */
3260 gcrypt_err
= gcry_mac_read(mac_hd
, hash
, &read_digest_length
);
3261 if (gcrypt_err
!= 0) {
3262 gcry_mac_close(mac_hd
);
3266 label_uuid_record
->hash
= hash
[15] + ((uint16_t)(hash
[14] & 0x3f) << 8) + 0x8000;
3268 /* Now close the mac handle */
3269 gcry_mac_close(mac_hd
);
3273 /* BT Mesh K2 function
3274 * Allow plen up to 9 char
3276 * The key (T) is computed as follows:
3277 * T = AES-CMACSALT (N)
3278 * SALT is the 128-bit value computed as follows
3280 * The output of the key generation function k2 is as follows:
3281 * T0 = empty string (zero length)
3282 * T1 = AES-CMACT (T0 || P || 0x01)
3283 * T2 = AES-CMACT (T1 || P || 0x02)
3284 * T3 = AES-CMACT (T2 || P || 0x03)
3285 * k2(N, P) = (T1 || T2 || T3) mod 2(pow)263
3288 k2(uat_btmesh_record_t
* net_key_set
, uint8_t *p
, size_t plen
)
3290 gcry_mac_hd_t mac_hd
;
3291 gcry_error_t gcrypt_err
;
3292 uint8_t smk2
[4] = { 's', 'm', 'k', '2' };
3297 uint8_t p_t1
[9 + 1];
3298 uint8_t p_t2
[16 + 9 + 1];
3299 uint8_t p_t3
[16 + 9 + 1];
3301 size_t read_digest_length
= 16;
3307 if (net_key_set
->network_key_length
!= 16) {
3311 /* SALT = s1("smk2") */
3312 if (s1(smk2
, mlen
, salt
) == false) {
3316 /* T = AES-CMAC_SALT(N) */
3317 /* Open gcrypt handle */
3318 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3319 if (gcrypt_err
!= 0) {
3324 gcrypt_err
= gcry_mac_setkey(mac_hd
, &salt
, 16);
3325 if (gcrypt_err
!= 0) {
3326 gcry_mac_close(mac_hd
);
3330 gcrypt_err
= gcry_mac_write(mac_hd
, net_key_set
->network_key
, 16);
3331 if (gcrypt_err
!= 0) {
3332 gcry_mac_close(mac_hd
);
3336 /* Read out the digest */
3337 gcrypt_err
= gcry_mac_read(mac_hd
, t
, &read_digest_length
);
3338 if (gcrypt_err
!= 0) {
3339 gcry_mac_close(mac_hd
);
3343 /* Now close the mac handle */
3344 gcry_mac_close(mac_hd
);
3347 * T0 = empty string (zero length)
3348 * T1 = AES-CMAC_T(T0 || P || 0x01)
3350 memcpy(p_t1
, p
, plen
);
3353 /* Open gcrypt handle */
3354 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3355 if (gcrypt_err
!= 0) {
3360 gcrypt_err
= gcry_mac_setkey(mac_hd
, &t
, 16);
3361 if (gcrypt_err
!= 0) {
3362 gcry_mac_close(mac_hd
);
3366 gcrypt_err
= gcry_mac_write(mac_hd
, &p_t1
, plen
+ 1);
3367 if (gcrypt_err
!= 0) {
3368 gcry_mac_close(mac_hd
);
3372 /* Read out the digest */
3373 gcrypt_err
= gcry_mac_read(mac_hd
, t1
, &read_digest_length
);
3374 if (gcrypt_err
!= 0) {
3375 gcry_mac_close(mac_hd
);
3378 net_key_set
->nid
= (t1
[15] & 0x7f);
3380 * T2 = AES-CMAC_T(T1 || P || 0x02)
3384 /* Now close the mac handle */
3385 gcry_mac_close(mac_hd
);
3387 memcpy(p_t2
, t1
, 16);
3388 memcpy(&p_t2
[16], p
, plen
);
3389 p_t2
[16 + plen
] = 0x02;
3391 /* Open gcrypt handle */
3392 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3393 if (gcrypt_err
!= 0) {
3398 gcrypt_err
= gcry_mac_setkey(mac_hd
, &t
, 16);
3399 if (gcrypt_err
!= 0) {
3400 gcry_mac_close(mac_hd
);
3404 gcrypt_err
= gcry_mac_write(mac_hd
, &p_t2
, 16 + plen
+ 1);
3405 if (gcrypt_err
!= 0) {
3406 gcry_mac_close(mac_hd
);
3410 /* Read out the digest */
3411 gcrypt_err
= gcry_mac_read(mac_hd
, net_key_set
->encryptionkey
, &read_digest_length
);
3412 if (gcrypt_err
!= 0) {
3413 gcry_mac_close(mac_hd
);
3417 /* Now close the mac handle */
3418 gcry_mac_close(mac_hd
);
3420 /* T3 = AES-CMAC_T(T2 || P || 0x03) */
3422 memcpy(p_t3
, net_key_set
->encryptionkey
, 16);
3423 memcpy(&p_t3
[16], p
, plen
);
3424 p_t3
[16 + plen
] = 0x03;
3426 /* Open gcrypt handle */
3427 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3428 if (gcrypt_err
!= 0) {
3433 gcrypt_err
= gcry_mac_setkey(mac_hd
, t
, 16);
3434 if (gcrypt_err
!= 0) {
3435 gcry_mac_close(mac_hd
);
3439 gcrypt_err
= gcry_mac_write(mac_hd
, p_t3
, 16 + plen
+ 1);
3440 if (gcrypt_err
!= 0) {
3441 gcry_mac_close(mac_hd
);
3445 /* Read out the digest */
3446 gcrypt_err
= gcry_mac_read(mac_hd
, net_key_set
->privacykey
, &read_digest_length
);
3447 if (gcrypt_err
!= 0) {
3448 gcry_mac_close(mac_hd
);
3452 /* Now close the mac handle */
3453 gcry_mac_close(mac_hd
);
3457 /* BT Mesh K4 function
3459 The inputs to function k4 is:
3462 The key (T) is computed as follows:
3463 T = AES-CMAC (SALT, N)
3465 SALT is the 128-bit value computed as follows:
3468 The output of the derivation function k4 is as follows:
3469 K4(N) = AES-CMAC (T, "id6" || 0x01 ) mod 2(pow)6
3473 k4(uat_btmesh_record_t
*key_set
)
3475 gcry_mac_hd_t mac_hd
;
3476 gcry_error_t gcrypt_err
;
3478 uint8_t smk4
[4] = { 's', 'm', 'k', '4' };
3480 uint8_t id6
[4] = { 'i', 'd', '6', 0x01 };
3486 size_t read_digest_length
= 16;
3488 if (key_set
->application_key_length
!= 16) {
3492 /* SALT = s1("smk4") */
3493 if (s1(smk4
, mlen
, salt
) == false) {
3497 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3498 if (gcrypt_err
!= 0) {
3503 gcrypt_err
= gcry_mac_setkey(mac_hd
, &salt
, 16);
3504 if (gcrypt_err
!= 0) {
3505 gcry_mac_close(mac_hd
);
3509 gcrypt_err
= gcry_mac_write(mac_hd
, key_set
->application_key
, 16);
3510 if (gcrypt_err
!= 0) {
3511 gcry_mac_close(mac_hd
);
3515 /* Read out the digest */
3516 gcrypt_err
= gcry_mac_read(mac_hd
, t
, &read_digest_length
);
3517 if (gcrypt_err
!= 0) {
3518 gcry_mac_close(mac_hd
);
3522 /* Now close the mac handle */
3523 gcry_mac_close(mac_hd
);
3525 /* Open gcrypt handle */
3526 gcrypt_err
= gcry_mac_open(&mac_hd
, GCRY_MAC_CMAC_AES
, 0, NULL
);
3527 if (gcrypt_err
!= 0) {
3532 gcrypt_err
= gcry_mac_setkey(mac_hd
, &t
, 16);
3533 if (gcrypt_err
!= 0) {
3534 gcry_mac_close(mac_hd
);
3538 gcrypt_err
= gcry_mac_write(mac_hd
, &id6
, id6len
);
3539 if (gcrypt_err
!= 0) {
3540 gcry_mac_close(mac_hd
);
3544 /* Read out the digest */
3545 gcrypt_err
= gcry_mac_read(mac_hd
, t1
, &read_digest_length
);
3546 if (gcrypt_err
!= 0) {
3547 gcry_mac_close(mac_hd
);
3551 key_set
->aid
= (t1
[15] & 0x3f);
3553 /* Now close the mac handle */
3554 gcry_mac_close(mac_hd
);
3559 create_central_security_keys(uat_btmesh_record_t
* net_key_set
)
3561 uint8_t p
[1] = { 0 };
3564 return k2(net_key_set
, p
, plen
);
3568 btmesh_deobfuscate(tvbuff_t
*tvb
, packet_info
*pinfo
, int offset _U_
, uat_btmesh_record_t
*net_key_set
)
3570 tvbuff_t
*de_obf_tvb
= NULL
;
3572 /* Decode ObfuscatedData
3573 * Privacy Random = (EncDST || EncTransportPDU || NetMIC)[0-6]
3574 * PECB = e ((PrivacyKey, 0x0000000000 || IV Index || Privacy Random)
3575 * (CTL || TTL || SEQ || SRC) = ObfuscatedData
3577 uint8_t in
[16]; /* 0x0000000000 || IV Index || Privacy Random */
3578 gcry_cipher_hd_t cipher_hd
;
3580 uint8_t *plaintextnetworkheader
= (uint8_t *)wmem_alloc(pinfo
->pool
, 6);
3583 /* at least 1 + 6 + 2 + 1 + 4 + 4 = 18 octets must be present in tvb to decrypt */
3584 if (!tvb_bytes_exist(tvb
, 0, 18)) {
3588 memset(in
, 0x00, 5);
3589 memcpy((uint8_t *)&in
+ 5, net_key_set
->ivindex
, 4);
3591 /* Privacy random */
3592 tvb_memcpy(tvb
, (uint8_t *)&in
+ 9, 7, 7);
3594 if (gcry_cipher_open(&cipher_hd
, GCRY_CIPHER_AES128
, GCRY_CIPHER_MODE_ECB
, 0)) {
3598 if (gcry_cipher_setkey(cipher_hd
, net_key_set
->privacykey
, 16)) {
3599 gcry_cipher_close(cipher_hd
);
3604 if (gcry_cipher_encrypt(cipher_hd
, &pecb
, 16, &in
, 16)) {
3605 gcry_cipher_close(cipher_hd
);
3609 /* Now close the cipher handle */
3610 gcry_cipher_close(cipher_hd
);
3612 for ( i
= 0; i
< 6; i
++) {
3613 plaintextnetworkheader
[i
] = tvb_get_uint8(tvb
, i
+ 1) ^ pecb
[i
];
3616 de_obf_tvb
= tvb_new_child_real_data(tvb
, plaintextnetworkheader
, 6, 6);
3620 static const char *period_interval_unit
[] = {"ms", "s", "s", "min"};
3621 static const uint32_t period_interval_multiplier
[] = {100, 1, 10, 10};
3624 format_publish_period(char *buf
, uint32_t value
) {
3625 uint32_t idx
= (value
& 0xC0 ) >> 6;
3626 uint32_t val
= (value
& 0x3F ) * period_interval_multiplier
[idx
];
3627 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u %s", val
, period_interval_unit
[idx
]);
3631 format_transmit(char *buf
, uint32_t value
) {
3632 uint32_t prd
= (((value
& 0xF8 ) >> 3 ) + 1 ) * 10;
3633 uint32_t ctr
= (value
& 0x07 );
3636 snprintf(buf
, ITEM_LABEL_LENGTH
, "One transmissions");
3640 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u transmissions at interval of %u ms", ctr
, prd
);
3645 format_retransmit(char *buf
, uint32_t value
) {
3646 uint32_t prd
= (((value
& 0xF8 ) >> 3 ) + 1 ) * 10;
3647 uint32_t ctr
= (value
& 0x07 );
3650 snprintf(buf
, ITEM_LABEL_LENGTH
, "No retransmissions");
3654 snprintf(buf
, ITEM_LABEL_LENGTH
, "One retransmission after %u ms", prd
);
3658 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u retransmissions at interval of %u ms", ctr
, prd
);
3663 format_interval_steps(char *buf
, uint32_t value
) {
3664 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u ms (%u)", (value
+ 1) * 10, value
);
3668 format_key_index(char *buf
, uint32_t value
) {
3669 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u (0x%03x)", value
& 0xFFF, value
& 0xFFF);
3673 format_key_index_rfu(char *buf
, uint32_t value
) {
3674 snprintf(buf
, ITEM_LABEL_LENGTH
, "0x%1x", (value
& 0xF000) >> 12);
3678 format_dual_key_index(char *buf
, uint32_t value
) {
3679 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u (0x%03x), %u (0x%03x)", value
& 0xFFF, value
& 0xFFF, ( value
& 0xFFF000 ) >> 12, ( value
& 0xFFF000 ) >> 12);
3683 format_vendor_model(char *buf
, uint32_t value
) {
3684 snprintf(buf
, ITEM_LABEL_LENGTH
, "0x%04x of %s", value
>> 16, val_to_str_ext_const(value
& 0xFFFF, &bluetooth_company_id_vals_ext
, "Unknown"));
3688 format_publish_appkeyindex_model(char *buf
, uint32_t value
) {
3689 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u (0x%03x) using %s security material", value
& 0x0FFF, value
& 0x0FFF, ((value
& 0x1000) ? "Friendship" : "Central"));
3693 format_delay_ms(char *buf
, uint32_t value
) {
3694 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u ms", value
* 5);
3698 format_power(char *buf
, uint32_t value
) {
3700 val
= (double)value
/ (double)655.35;
3701 snprintf(buf
, ITEM_LABEL_LENGTH
, "% 3.2f %%", val
);
3705 format_battery_level(char *buf
, uint32_t value
) {
3706 if (value
== 0xFF) {
3707 snprintf(buf
, ITEM_LABEL_LENGTH
, "The percentage of the charge level is unknown");
3710 if (value
<= 0x64) {
3711 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u %%", value
);
3714 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%u)", value
);
3718 format_battery_time(char *buf
, uint32_t value
) {
3719 if (value
== 0xFFFFFF) {
3720 snprintf(buf
, ITEM_LABEL_LENGTH
, "The remaining time is not known");
3723 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u minutes", value
);
3727 format_global_latitude(char *buf
, int32_t value
) {
3728 if (value
== INT_MIN
) {
3729 snprintf(buf
, ITEM_LABEL_LENGTH
, "Global Latitude is not configured.");
3733 val
= (double)90.0 / (double) (0x7FFFFFFF) * (double)value
;
3734 snprintf(buf
, ITEM_LABEL_LENGTH
, "% 2.6f°", val
);
3738 format_global_longitude(char *buf
, int32_t value
) {
3739 if (value
== INT_MIN
) {
3740 snprintf(buf
, ITEM_LABEL_LENGTH
, "Global Longitude is not configured.");
3744 val
= (double)180.0 / (double) (0x7FFFFFFF) * (double)value
;
3745 snprintf(buf
, ITEM_LABEL_LENGTH
, "% 2.6f°", val
);
3749 format_global_altitude(char *buf
, int16_t value
) {
3750 if (value
== 0x7FFF) {
3751 snprintf(buf
, ITEM_LABEL_LENGTH
, "Global Altitude is not configured.");
3754 if (value
== 0x7FFE) {
3755 snprintf(buf
, ITEM_LABEL_LENGTH
, "Global Altitude is greater than or equal to 32766 meters.");
3758 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d meters", value
);
3762 format_local_north(char *buf
, int16_t value
) {
3763 if (value
== -32768) {
3764 snprintf(buf
, ITEM_LABEL_LENGTH
, "Local North information is not configured.");
3768 val
= (double)value
/ (double) 10.0;
3769 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f meters", val
);
3773 format_local_east(char *buf
, int16_t value
) {
3774 if (value
== -32768) {
3775 snprintf(buf
, ITEM_LABEL_LENGTH
, "Local East information is not configured.");
3779 val
= (double)value
/ (double) 10.0;
3780 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f meters", val
);
3784 format_local_altitude(char *buf
, int16_t value
) {
3785 if (value
== 0x7FFF) {
3786 snprintf(buf
, ITEM_LABEL_LENGTH
, "Local Altitude is not configured.");
3789 if (value
== 0x7FFE) {
3790 snprintf(buf
, ITEM_LABEL_LENGTH
, "Local Altitude is greater than or equal to 3276.6 meters.");
3794 val
= (double)value
/ (double) 10.0;
3795 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f meters", val
);
3799 format_floor_number(char *buf
, uint8_t value
) {
3802 snprintf(buf
, ITEM_LABEL_LENGTH
, "Floor -20 or any floor below -20.");
3806 snprintf(buf
, ITEM_LABEL_LENGTH
, "Floor 232 or any floor above 232.");
3810 snprintf(buf
, ITEM_LABEL_LENGTH
, "Ground floor. Floor 0.");
3814 snprintf(buf
, ITEM_LABEL_LENGTH
, "Ground floor. Floor 1.");
3818 snprintf(buf
, ITEM_LABEL_LENGTH
, "Not configured.");
3822 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", (int16_t)value
- (int16_t)20 );
3828 format_update_time(char *buf
, uint16_t value
) {
3830 val
= pow((double)2.0, (double)(value
- 3));
3831 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.*f seconds", (value
<4?3-value
:0), val
);
3835 format_precision(char *buf
, uint16_t value
) {
3837 val
= pow((double)2.0, (double)(value
- 3));
3838 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.*f meters", (value
<4?3-value
:0),val
);
3842 format_scheduler_year(char *buf
, int32_t value
) {
3843 if (value
<= 0x63) {
3844 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", 2000+value
);
3845 } else if (value
== 0x64 ) {
3846 snprintf(buf
, ITEM_LABEL_LENGTH
, "Any year");
3848 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
3853 format_scheduler_day(char *buf
, int32_t value
) {
3855 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
3857 snprintf(buf
, ITEM_LABEL_LENGTH
, "Any day");
3862 format_scheduler_hour(char *buf
, int32_t value
) {
3864 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
3865 } else if (value
== 0x18 ) {
3866 snprintf(buf
, ITEM_LABEL_LENGTH
, "Any hour of the day");
3867 } else if (value
== 0x19 ) {
3868 snprintf(buf
, ITEM_LABEL_LENGTH
, "Once a day (at a random hour)");
3870 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
3875 format_scheduler_minute(char *buf
, int32_t value
) {
3878 snprintf(buf
, ITEM_LABEL_LENGTH
, "Any minute of the hour");
3882 snprintf(buf
, ITEM_LABEL_LENGTH
, "Every 15 minutes (minute modulo 15 is 0) (0, 15, 30, 45)");
3886 snprintf(buf
, ITEM_LABEL_LENGTH
, "Every 20 minutes (minute modulo 20 is 0) (0, 20, 40)");
3890 snprintf(buf
, ITEM_LABEL_LENGTH
, "Once an hour (at a random minute)");
3894 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
3900 format_scheduler_second(char *buf
, int32_t value
) {
3903 snprintf(buf
, ITEM_LABEL_LENGTH
, "Any second of the minute");
3907 snprintf(buf
, ITEM_LABEL_LENGTH
, "Every 15 seconds (second modulo 15 is 0) (0, 15, 30, 45)");
3911 snprintf(buf
, ITEM_LABEL_LENGTH
, "Every 20 seconds (second modulo 20 is 0) (0, 20, 40)");
3915 snprintf(buf
, ITEM_LABEL_LENGTH
, "Once a minute (at a random second)");
3919 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
3925 format_scheduler_action(char *buf
, int32_t value
) {
3928 snprintf(buf
, ITEM_LABEL_LENGTH
, "Turn Off");
3932 snprintf(buf
, ITEM_LABEL_LENGTH
, "Turn On");
3936 snprintf(buf
, ITEM_LABEL_LENGTH
, "Scene Recall");
3940 snprintf(buf
, ITEM_LABEL_LENGTH
, "Inactive");
3944 snprintf(buf
, ITEM_LABEL_LENGTH
, "Reserved for Future Use");
3950 format_scheduler_month(char *buf
, int32_t value
) {
3951 static const char ab_month_name
[][4] =
3953 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
3954 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
3958 bool is_first
= true;
3961 for (i
= 0; i
< 12; i
++) {
3962 if (value
& (1 << i
)) {
3966 buf
= g_stpcpy(buf
, ", ");
3968 buf
= g_stpcpy(buf
, ab_month_name
[i
]);
3974 format_scheduler_day_of_week(char *buf
, int32_t value
) {
3975 static char const ab_weekday_name
[][4] =
3977 "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
3981 bool is_first
= true;
3984 for (i
= 0; i
< 7; i
++) {
3985 if (value
& (1 << i
)) {
3989 buf
= g_stpcpy(buf
, ", ");
3991 buf
= g_stpcpy(buf
, ab_weekday_name
[i
]);
3997 format_subsecond_ms(char *buf
, uint32_t value
) {
3998 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f ms", (double)value
/ 0.256);
4002 format_uncertainty_ms(char *buf
, uint32_t value
) {
4003 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u ms", value
* 10);
4007 format_tai_utc_delta_s(char *buf
, uint32_t value
) {
4008 int32_t val
= (int32_t)value
- 255;
4009 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d s", val
);
4013 format_time_zone_offset_h(char *buf
, uint32_t value
) {
4014 int32_t val
= (int32_t)value
- 64;
4016 snprintf(buf
, ITEM_LABEL_LENGTH
, "%+d:%02d", val
/4, (val
%4)*15 );
4019 snprintf(buf
, ITEM_LABEL_LENGTH
, "-%d:%02d", val
/4, (val
%4)*15 );
4024 format_tai_to_utc_date(char *buf
, uint64_t value
) {
4027 snprintf(buf
, ITEM_LABEL_LENGTH
, "Unknown");
4032 // Leap seconds removal
4034 // TAI epoch is 2000-01-01T00:00:00 TAI
4035 uint64_t leap_seconds
[] = {
4036 189388800, // 1 January 2006, 00:00:00, seconds from TAI epoch
4037 284083200, // 1 January 2009, 00:00:00, seconds from TAI epoch
4038 394416000, // 1 July 2012, 00:00:00, seconds from TAI epoch
4039 489024000, // 1 July 2015, 00:00:00, seconds from TAI epoch
4040 536544000, // 1 January 2017, 00:00:00, seconds from TAI epoch
4042 for (int i
= 0; i
< 5; i
++) {
4043 if (value
>= leap_seconds
[i
]) {
4049 // 946684800 seconds between 1.1.1970 and 1.1.2000
4050 // 32 leap seconds difference between TAI and UTC on 1.1.2000
4051 val
= (time_t)(value
+ 946684800ll - 32ll - delta
);
4052 time_str
= abs_time_secs_to_str(NULL
, val
, ABSOLUTE_TIME_UTC
, true);
4053 snprintf(buf
, ITEM_LABEL_LENGTH
, "%s", time_str
);
4058 format_temperature_kelvin(char *buf
, uint32_t value
) {
4059 if (value
< 0x0320 ) {
4060 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4061 } else if (value
> 0x4E20 ) {
4062 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4064 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d K", value
);
4069 format_temperature_kelvin_unknown(char *buf
, uint32_t value
) {
4070 if (value
< 0x0320 ) {
4071 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4072 } else if (value
> 0x4E20 && value
!= 0xFFFF) {
4073 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4074 } else if (value
== 0xFFFF ) {
4075 snprintf(buf
, ITEM_LABEL_LENGTH
, "Unknown");
4077 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d K", value
);
4082 format_light_lightness_prohibited(char *buf
, uint32_t value
) {
4083 if (value
== 0x0 ) {
4084 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4086 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
4091 format_light_lightness_default(char *buf
, uint32_t value
) {
4092 if (value
== 0x0 ) {
4093 snprintf(buf
, ITEM_LABEL_LENGTH
, "Use the Light Lightness Last value");
4095 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
4100 format_hsl_hue(char *buf
, uint32_t value
) {
4102 val
= (double)360.0 / (double) (0x10000) * (double)value
;
4103 snprintf(buf
, ITEM_LABEL_LENGTH
, "% 3.3f°", val
);
4107 format_xyl_coordinate(char *buf
, uint32_t value
) {
4109 val
= (double)value
/ (double) (0xFFFF);
4110 snprintf(buf
, ITEM_LABEL_LENGTH
, "%1.5f", val
);
4114 format_sensor_setting_access(char *buf
, uint32_t value
)
4116 if (value
== 0x01 ) {
4117 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read");
4118 } else if (value
== 0x03) {
4119 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read and written");
4121 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4126 format_fast_cadence_period_divisor(char *buf
, uint32_t value
)
4129 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4131 uint32_t v
= (1 << value
);
4132 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", v
);
4137 format_status_min_interval(char *buf
, uint32_t value
)
4140 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4142 uint32_t v
= (1 << value
);
4143 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d ms", v
);
4148 format_admin_user_access(char *buf
, uint32_t value
)
4152 snprintf(buf
, ITEM_LABEL_LENGTH
, "Not a Generic User Property");
4156 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read");
4160 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be written");
4164 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read and written");
4168 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4174 format_manufacturer_user_access(char *buf
, uint32_t value
)
4176 if (value
== 0x00) {
4177 snprintf(buf
, ITEM_LABEL_LENGTH
, "Not a Generic User Property");
4178 } else if (value
== 0x01) {
4179 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read");
4181 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4186 format_user_access(char *buf
, uint32_t value
)
4190 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read");
4194 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be written");
4198 snprintf(buf
, ITEM_LABEL_LENGTH
, "Can be read and written");
4202 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4208 format_sensor_descriptor_tolerance(char *buf
, uint32_t value
)
4210 if (value
== 0x000) {
4211 snprintf(buf
, ITEM_LABEL_LENGTH
, "Unspecified");
4214 val
= (double)value
/ (double)40.95;
4215 snprintf(buf
, ITEM_LABEL_LENGTH
, "% 3.2f %%", val
);
4220 format_sensor_period(char *buf
, uint32_t value
)
4223 snprintf(buf
, ITEM_LABEL_LENGTH
, "Not Applicable");
4227 val
= pow((double)1.1, (double)value
- (double)64.0);
4228 if ( val
< 1.0 ) { //Milliseconds
4229 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.0f ms", val
* 1000.0);
4231 if ( val
< 60.0 ) { //Seconds
4232 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f s", val
);
4234 unsigned long v
= (unsigned long)val
;
4235 if ( val
< 86400 ) { //Hours:Minutes:Seconds
4236 snprintf(buf
, ITEM_LABEL_LENGTH
, "%02lu:%02lu:%02lu", v
/3600, (v
% 3600)/60, v
% 60);
4237 } else { //Days Hours:Minutes:Seconds
4238 snprintf(buf
, ITEM_LABEL_LENGTH
, "%lu days %02lu:%02lu:%02lu", v
/86400, (v
% 86400)/3600, (v
% 3600)/60, v
% 60);
4246 format_percentage_change_16(char *buf
, uint32_t value
)
4249 val
= (double)value
/ (double)(100);
4250 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f %%", val
);
4254 format_decihour_8(char *buf
, uint32_t value
)
4256 if (value
== 0xFF) {
4257 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4260 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4263 val
= (double)value
/ (double)(10);
4264 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f h", val
);
4270 format_temperature_8(char *buf
, int32_t value
)
4272 if (value
== 0x7F) {
4273 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4276 val
= (double)value
* (double)(0.5);
4277 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f C", val
);
4282 format_temperature(char *buf
, int32_t value
)
4284 if (value
== INT16_MIN
) {
4285 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4287 if (value
< (int32_t)(-27315)) {
4288 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited");
4291 val
= (double)value
/ (double)(100);
4292 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f C", val
);
4298 format_electric_current(char *buf
, uint32_t value
)
4300 if (value
== 0xFFFF) {
4301 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4304 val
= (double)value
/ (double)(100);
4305 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f A", val
);
4310 format_energy(char *buf
, uint32_t value
)
4312 if (value
== 0xFFFFFF) {
4313 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4315 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d kWh", value
);
4320 format_illuminance(char *buf
, uint32_t value
) {
4321 if (value
== 0xFFFFFF) {
4322 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4325 val
= (double)value
/ (double)(100);
4326 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f lux", val
);
4331 format_percentage_8(char *buf
, uint32_t value
) {
4332 if (value
== 0xFF) {
4333 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4334 } else if (value
> 200) {
4335 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4338 val
= (double)value
/ (double)(2);
4339 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.1f %%", val
);
4344 format_time_millisecond_24(char *buf
, uint32_t value
) {
4345 if (value
== 0xFFFFFF) {
4346 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4349 val
= (double)value
/ (double)(1000);
4350 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f s", val
);
4355 format_count_16(char *buf
, uint32_t value
) {
4356 if (value
== 0xFFFF) {
4357 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4359 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
4364 format_boolean(char *buf
, uint32_t value
) {
4365 if (value
== 0x00) {
4366 snprintf(buf
, ITEM_LABEL_LENGTH
, "False");
4367 } else if (value
== 0x01) {
4368 snprintf(buf
, ITEM_LABEL_LENGTH
, "True");
4370 snprintf(buf
, ITEM_LABEL_LENGTH
, "Prohibited (%d)", value
);
4375 format_time_second_16(char *buf
, uint32_t value
) {
4376 if (value
== 0xFFFF) {
4377 snprintf(buf
, ITEM_LABEL_LENGTH
, "Value is not known");
4379 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d s", value
);
4384 find_characteristic_id(uint16_t property_id
)
4387 uint16_t characteristic_id
= NOT_SUPPORTED_PROPERTY
;
4389 for (i
=0; btmesh_properties
[i
].characteristic_id
!=0; i
++ ) {
4390 if (btmesh_properties
[i
].property_id
== property_id
) {
4391 characteristic_id
= btmesh_properties
[i
].characteristic_id
;
4395 return characteristic_id
;
4399 find_characteristic_idx(uint16_t characteristic_id
)
4401 int i
, idx
= NOT_SUPPORTED_CHARACTERISTIC
;
4403 for (i
=0; bt_gatt_characteristics
[i
].characteristic_id
!=0; i
++ ) {
4404 if (bt_gatt_characteristics
[i
].characteristic_id
== characteristic_id
) {
4413 find_column_properties_idx(int idx
)
4415 int idx_3
= NOT_SUPPORTED_CHARACTERISTIC
;
4416 for (int i
=0; btmesh_column_properties
[i
].characteristic_id
!=0; i
++ ) {
4417 if (btmesh_column_properties
[i
].characteristic_id
== bt_gatt_characteristics
[idx
].characteristic_id
) {
4426 dissect_btmesh_property_idx(tvbuff_t
*tvb
, proto_tree
*tree
, int offset
, int characteristic_idx
)
4428 uint16_t characteristic_value_length
= 0;
4432 if (characteristic_idx
< 0) {
4436 characteristic_value_length
= bt_gatt_characteristics
[characteristic_idx
].characteristic_value_length
;
4437 if (bt_gatt_characteristics
[characteristic_idx
].characteristic_value_length
== 0) {
4441 if (bt_gatt_characteristics
[characteristic_idx
].dissector_type
== DISSECTOR_SIMPLE
) {
4442 //DISSECTOR_SIMPLE case
4443 if (bt_gatt_characteristics
[characteristic_idx
].hfindex
== NULL
) {
4446 hfindex
= *bt_gatt_characteristics
[characteristic_idx
].hfindex
;
4448 pi
= proto_tree_add_item(tree
, hfindex
, tvb
, offset
, characteristic_value_length
, ENC_LITTLE_ENDIAN
);
4449 proto_item_set_generated(pi
);
4451 //DISSECTOR_THREE_VALUES case
4452 int idx_3
= find_column_properties_idx(characteristic_idx
);
4453 if (idx_3
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4454 int idx_x
= find_characteristic_idx(btmesh_column_properties
[idx_3
].x_characteristic_id
);
4455 if (idx_x
== NOT_SUPPORTED_CHARACTERISTIC
||
4456 bt_gatt_characteristics
[idx_x
].characteristic_value_length
== 0 ||
4457 bt_gatt_characteristics
[idx_x
].hfindex
== NULL
||
4458 bt_gatt_characteristics
[idx_x
].dissector_type
!= DISSECTOR_SIMPLE
) {
4461 int idx_y
= find_characteristic_idx(btmesh_column_properties
[idx_3
].y_characteristic_id
);
4462 if (idx_y
== NOT_SUPPORTED_CHARACTERISTIC
||
4463 bt_gatt_characteristics
[idx_y
].characteristic_value_length
== 0 ||
4464 bt_gatt_characteristics
[idx_y
].hfindex
== NULL
||
4465 bt_gatt_characteristics
[idx_y
].dissector_type
!= DISSECTOR_SIMPLE
) {
4468 characteristic_value_length
=0;
4469 pi
= proto_tree_add_item(tree
, *bt_gatt_characteristics
[idx_x
].hfindex
,
4471 bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_LITTLE_ENDIAN
);
4472 proto_item_set_generated(pi
);
4473 characteristic_value_length
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4475 pi
= proto_tree_add_item(tree
, *bt_gatt_characteristics
[idx_x
].hfindex
,
4476 tvb
, offset
+characteristic_value_length
,
4477 bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_LITTLE_ENDIAN
);
4478 proto_item_set_generated(pi
);
4479 characteristic_value_length
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4481 pi
= proto_tree_add_item(tree
, *bt_gatt_characteristics
[idx_y
].hfindex
,
4482 tvb
, offset
+characteristic_value_length
,
4483 bt_gatt_characteristics
[idx_y
].characteristic_value_length
, ENC_LITTLE_ENDIAN
);
4484 proto_item_set_generated(pi
);
4485 characteristic_value_length
+=bt_gatt_characteristics
[idx_y
].characteristic_value_length
;
4490 return characteristic_value_length
;
4494 find_btmesh_property_characteristic_idx(uint16_t property_id
)
4496 int characteristic_idx
;
4497 uint16_t characteristic_id
= 0;
4499 characteristic_id
= find_characteristic_id(property_id
);
4500 if (characteristic_id
== NOT_SUPPORTED_PROPERTY
) {
4501 return NOT_SUPPORTED_CHARACTERISTIC
;
4503 characteristic_idx
= find_characteristic_idx(characteristic_id
);
4504 if (characteristic_idx
== NOT_SUPPORTED_CHARACTERISTIC
) {
4505 return NOT_SUPPORTED_CHARACTERISTIC
;
4507 return characteristic_idx
;
4511 find_btmesh_property_length(uint16_t property_id
)
4513 int characteristic_idx
;
4514 uint16_t characteristic_id
= 0;
4516 characteristic_id
= find_characteristic_id(property_id
);
4517 if (characteristic_id
== NOT_SUPPORTED_PROPERTY
) {
4520 characteristic_idx
= find_characteristic_idx(characteristic_id
);
4521 if (characteristic_idx
== NOT_SUPPORTED_CHARACTERISTIC
) {
4524 return bt_gatt_characteristics
[characteristic_idx
].characteristic_value_length
;
4528 dissect_btmesh_property(proto_tree
*tree
, int p_id
, tvbuff_t
*tvb
, int offset
, uint16_t property_id
, int length_hint
)
4530 int characteristic_idx
;
4531 int characteristic_length
;
4532 int guessed_property_length
;
4535 if (length_hint
== PROPERTY_LENGTH_NO_HINT
) {
4536 guessed_property_length
= tvb_reported_length_remaining(tvb
, offset
);
4538 guessed_property_length
= length_hint
;
4541 characteristic_idx
= find_btmesh_property_characteristic_idx(property_id
);
4542 if (characteristic_idx
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4543 characteristic_length
= bt_gatt_characteristics
[characteristic_idx
].characteristic_value_length
;
4544 if (characteristic_length
> 0 ) {
4545 proto_tree_add_item(tree
, p_id
, tvb
, offset
, characteristic_length
, ENC_NA
);
4546 dissect_btmesh_property_idx(tvb
, tree
, offset
, characteristic_idx
);
4547 delta
= characteristic_length
;
4549 proto_tree_add_item(tree
, p_id
, tvb
, offset
, guessed_property_length
, ENC_NA
);
4550 delta
= guessed_property_length
;
4553 proto_tree_add_item(tree
, p_id
, tvb
, offset
, guessed_property_length
, ENC_NA
);
4554 delta
= guessed_property_length
;
4560 dissect_sensor_cadence(proto_tree
*tree
, tvbuff_t
*tvb
, int offset
, uint16_t property_id
, uint8_t trigger_type
, const bt_sensor_cadence_dissector_t
*sensor_cadence_hfs
)
4562 int initial_offset
= offset
;
4563 int guessed_property_length
;
4564 int trigger_delta_length
= 0;
4565 int fast_cadence_length
= 0;
4567 //Trigger delta length
4568 if ( trigger_type
== SENSOR_CADENCE_TRIGGER_TYPE_PROPERTY
) {
4569 //Find or guess trigger delta and fast cadence fields length
4570 trigger_delta_length
= find_btmesh_property_length(property_id
);
4571 if (trigger_delta_length
== 0) {
4572 guessed_property_length
= tvb_reported_length_remaining(tvb
, offset
) - 1;
4573 if (guessed_property_length
% 4 == 0) {
4574 trigger_delta_length
= guessed_property_length
/4;
4576 //Failed to guess fields length
4577 trigger_delta_length
= PROPERTY_LENGTH_NO_HINT
;
4580 fast_cadence_length
= trigger_delta_length
;
4582 //Trigger delta length is always 2 octets here
4583 trigger_delta_length
= 2;
4584 //Find or guess fast cadence field length
4585 fast_cadence_length
= find_btmesh_property_length(property_id
);
4586 if (fast_cadence_length
== 0) {
4587 guessed_property_length
= tvb_reported_length_remaining(tvb
, offset
) - 1 - 2 * trigger_delta_length
;
4588 if (guessed_property_length
% 2 == 0) {
4589 fast_cadence_length
= guessed_property_length
/2;
4591 //Failed to guess field length
4592 fast_cadence_length
= PROPERTY_LENGTH_NO_HINT
;
4597 if (trigger_delta_length
!= PROPERTY_LENGTH_NO_HINT
) {
4598 //Trigger delta field length is known, so dissect individual fields
4599 if ( trigger_type
== SENSOR_CADENCE_TRIGGER_TYPE_PROPERTY
) {
4600 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_status_trigger_delta_down
, tvb
, offset
, property_id
, trigger_delta_length
);
4601 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_status_trigger_delta_up
, tvb
, offset
, property_id
, trigger_delta_length
);
4603 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_status_trigger_delta_down
, tvb
, offset
, PHONY_PROPERTY_PERCENTAGE_CHANGE_16
, trigger_delta_length
);
4604 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_status_trigger_delta_up
, tvb
, offset
, PHONY_PROPERTY_PERCENTAGE_CHANGE_16
, trigger_delta_length
);
4606 proto_tree_add_item(tree
, *sensor_cadence_hfs
->hf_status_min_interval
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4608 if (fast_cadence_length
!= PROPERTY_LENGTH_NO_HINT
) {
4609 //Fast cadence field length is known
4610 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_fast_cadence_low
, tvb
, offset
, property_id
, fast_cadence_length
);
4611 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_fast_cadence_high
, tvb
, offset
, property_id
, fast_cadence_length
);
4613 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_remainder_not_dissected
, tvb
, offset
, property_id
, tvb_reported_length_remaining(tvb
, offset
));
4616 //Property field length is unknown, fail to dissect
4617 offset
+=dissect_btmesh_property(tree
, *sensor_cadence_hfs
->hf_remainder_not_dissected
, tvb
, offset
, property_id
, tvb_reported_length_remaining(tvb
, offset
));
4619 return offset
- initial_offset
;
4623 dissect_property_raw_value_entry(proto_tree
*tree
, tvbuff_t
*tvb
, int offset
, uint16_t property_id
, const bt_property_raw_value_entry_t
*property_raw_value_entry_hfs
)
4627 int initial_offset
= offset
;
4628 int guessed_field_length
;
4630 idx
= find_btmesh_property_characteristic_idx(property_id
);
4632 guessed_field_length
= tvb_reported_length_remaining(tvb
, offset
);
4633 if ( idx
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4634 if (bt_gatt_characteristics
[idx
].dissector_type
== DISSECTOR_SIMPLE
) {
4636 offset
+=dissect_btmesh_property(tree
, *property_raw_value_entry_hfs
->hf_raw_value_a
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
4637 display_raw
= false;
4639 //Three values expected
4640 int idx_3
= find_column_properties_idx(idx
);
4641 if (idx_3
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4642 int idx_x
= find_characteristic_idx(btmesh_column_properties
[idx_3
].x_characteristic_id
);
4643 if (idx_x
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4644 if ( bt_gatt_characteristics
[idx_x
].characteristic_value_length
!= 0) {
4645 if (bt_gatt_characteristics
[idx_x
].hfindex
!= NULL
&&
4646 bt_gatt_characteristics
[idx_x
].dissector_type
== DISSECTOR_SIMPLE
)
4649 display_raw
= false;
4650 proto_tree_add_item(tree
, *property_raw_value_entry_hfs
->hf_raw_value_a
, tvb
, offset
, bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_NA
);
4651 dissect_btmesh_property_idx(tvb
, tree
, offset
, idx_x
);
4652 offset
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4653 proto_tree_add_item(tree
, *property_raw_value_entry_hfs
->hf_raw_value_b
, tvb
, offset
, bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_NA
);
4654 dissect_btmesh_property_idx(tvb
, tree
, offset
, idx_x
);
4655 offset
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4657 int idx_y
= find_characteristic_idx(btmesh_column_properties
[idx_3
].y_characteristic_id
);
4658 if (idx_y
!= NOT_SUPPORTED_CHARACTERISTIC
&&
4659 bt_gatt_characteristics
[idx_y
].characteristic_value_length
!= 0 &&
4660 bt_gatt_characteristics
[idx_y
].hfindex
!= NULL
&&
4661 bt_gatt_characteristics
[idx_y
].dissector_type
== DISSECTOR_SIMPLE
)
4663 proto_tree_add_item(tree
, *property_raw_value_entry_hfs
->hf_raw_value_c
, tvb
, offset
, bt_gatt_characteristics
[idx_y
].characteristic_value_length
, ENC_NA
);
4664 dissect_btmesh_property_idx(tvb
, tree
, offset
, idx_y
);
4665 offset
+=bt_gatt_characteristics
[idx_y
].characteristic_value_length
;
4667 proto_tree_add_item(tree
, *property_raw_value_entry_hfs
->hf_raw_value_c
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ENC_NA
);
4668 offset
+=tvb_reported_length_remaining(tvb
, offset
);
4671 //Raw value, but length is known
4672 guessed_field_length
= bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4680 //Raw value, no interpretation, just Value A
4681 proto_tree_add_item(tree
, *property_raw_value_entry_hfs
->hf_raw_value_a
, tvb
, offset
, guessed_field_length
, ENC_NA
);
4682 offset
+=guessed_field_length
;
4684 return offset
- initial_offset
;
4688 dissect_columns_raw_value(proto_tree
*sub_tree
, tvbuff_t
*tvb
, int offset
, uint16_t property_id
, const bt_property_columns_raw_value_t
*columns_raw_value_hfs
)
4692 int initial_offset
= offset
;
4693 int guessed_field_length
;
4695 idx
= find_btmesh_property_characteristic_idx(property_id
);
4697 guessed_field_length
= tvb_reported_length_remaining(tvb
, offset
);
4699 if (columns_raw_value_hfs
->hf_raw_value_a2
!= NULL
&& guessed_field_length
> 1) {
4700 //Two values are expected
4701 guessed_field_length
= guessed_field_length
/ 2;
4704 if ( idx
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4705 if (bt_gatt_characteristics
[idx
].dissector_type
== DISSECTOR_SIMPLE
) {
4706 //Index - phony characteristics, 2 octets
4707 display_raw
= false;
4708 offset
+=dissect_btmesh_property(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a1
, tvb
, offset
, PHONY_PROPERTY_INDEX
, 2);
4709 if (columns_raw_value_hfs
->hf_raw_value_a2
!= NULL
) {
4710 offset
+=dissect_btmesh_property(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a2
, tvb
, offset
, PHONY_PROPERTY_INDEX
, 2);
4713 //DISSECTOR_THREE_VALUES, first value
4714 int idx_3
= find_column_properties_idx(idx
);
4715 if (idx_3
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4716 int idx_x
= find_characteristic_idx(btmesh_column_properties
[idx_3
].x_characteristic_id
);
4717 if (idx_x
!= NOT_SUPPORTED_CHARACTERISTIC
) {
4718 if ( bt_gatt_characteristics
[idx_x
].characteristic_value_length
!= 0) {
4719 if (bt_gatt_characteristics
[idx_x
].hfindex
!= NULL
&&
4720 bt_gatt_characteristics
[idx_x
].dissector_type
== DISSECTOR_SIMPLE
)
4723 display_raw
= false;
4724 proto_tree_add_item(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a1
, tvb
, offset
, bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_NA
);
4725 dissect_btmesh_property_idx(tvb
, sub_tree
, offset
, idx_x
);
4726 offset
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4727 if (columns_raw_value_hfs
->hf_raw_value_a2
!= NULL
) {
4728 proto_tree_add_item(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a2
, tvb
, offset
, bt_gatt_characteristics
[idx_x
].characteristic_value_length
, ENC_NA
);
4729 dissect_btmesh_property_idx(tvb
, sub_tree
, offset
, idx_x
);
4730 offset
+=bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4733 //raw, but known length
4734 guessed_field_length
= bt_gatt_characteristics
[idx_x
].characteristic_value_length
;
4742 //Raw values, no interpretation
4743 proto_tree_add_item(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a1
, tvb
, offset
, guessed_field_length
, ENC_NA
);
4744 offset
+=guessed_field_length
;
4745 if (columns_raw_value_hfs
->hf_raw_value_a2
!= NULL
) {
4746 proto_tree_add_item(sub_tree
, *columns_raw_value_hfs
->hf_raw_value_a2
, tvb
, offset
, guessed_field_length
, ENC_NA
);
4747 offset
+=guessed_field_length
;
4750 return offset
- initial_offset
;
4754 dissect_btmesh_model_layer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int offset
)
4756 proto_tree
*sub_tree
;
4757 tvbuff_t
*payload_tvb
;
4760 proto_item
*netapp_index_item
, *app_index_item
, *pub_app_index_item
, *net_index_item
;
4761 proto_item
*relayretransmit_index
, *transmit_index
;
4762 proto_item
*publishperiod_item
, *publishretransmit_item
;
4763 proto_item
*month_item
, *day_of_week_item
, *scheduler_item
;
4765 proto_tree
*netapp_index_sub_tree
, *app_index_sub_tree
, *pub_app_index_sub_tree
, *net_index_sub_tree
;
4766 proto_tree
*relayretransmit_sub_tree
, *transmit_sub_tree
, *subscriptionlist_tree
;
4767 proto_tree
*publishperiod_sub_tree
, *publishretransmit_sub_tree
;
4768 proto_tree
*element_sub_tree
, *model_sub_tree
, *vendor_sub_tree
;
4769 proto_tree
*netkeylist_tree
, *appkeylist_tree
;
4770 proto_tree
*fault_array_tree
;
4771 proto_tree
*sceneslist_tree
, *month_sub_tree
, *day_of_week_sub_tree
;
4772 proto_tree
*scheduler_tree
;
4773 proto_tree
*user_property_ids_tree
;
4774 proto_tree
*admin_property_ids_tree
;
4775 proto_tree
*manufacturer_property_ids_tree
;
4776 proto_tree
*generic_client_property_ids_tree
;
4777 proto_tree
*sensor_setting_property_ids_tree
;
4778 proto_tree
*root_tree
= proto_tree_get_parent_tree(tree
);
4780 uint32_t netkeyindexes
, appkeyindexes
;
4781 uint32_t nums
, numv
, element
;
4783 uint16_t property_id
;
4784 uint8_t trigger_type
;
4785 uint32_t mpid_format
, mpid_property_id
, mpid_length
;
4787 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, -1, ett_btmesh_model_layer
, NULL
, "Model Layer");
4789 opcode
= tvb_get_uint8(tvb
, offset
);
4790 if (opcode
& 0x80) {
4791 if (opcode
& 0x40) {
4793 proto_tree_add_item(sub_tree
, hf_btmesh_model_layer_vendor_opcode
, tvb
, offset
, 1, ENC_NA
);
4794 vendor
= tvb_get_uint16(tvb
, offset
+ 1, ENC_LITTLE_ENDIAN
);
4795 proto_tree_add_item(sub_tree
, hf_btmesh_model_layer_vendor
, tvb
, offset
+ 1, 2, ENC_LITTLE_ENDIAN
);
4796 payload_tvb
= tvb_new_subset_remaining(tvb
, offset
);
4797 col_set_str(pinfo
->cinfo
, COL_INFO
, "Access Message - Vendor Opcode");
4798 dissector_try_uint_with_data(btmesh_model_vendor_dissector_table
, vendor
, payload_tvb
, pinfo
, root_tree
, true, GUINT_TO_POINTER(vendor
));
4801 /* Two octet opcode */
4802 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_model_layer_opcode
, tvb
, offset
, 2, ENC_NA
, &opcode
);
4803 col_set_str(pinfo
->cinfo
, COL_INFO
, val_to_str_const(opcode
, btmesh_models_opcode_vals
, "Access Message Unknown"));
4807 /* One octet opcode */
4808 proto_tree_add_item(sub_tree
, hf_btmesh_model_layer_opcode
, tvb
, offset
, 1, ENC_NA
);
4809 col_set_str(pinfo
->cinfo
, COL_INFO
, val_to_str_const(opcode
, btmesh_models_opcode_vals
, "Access Message Unknown"));
4814 case CONFIG_APPKEY_ADD
:
4815 netapp_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_add_netkeyindexandappkeyindex
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4816 netapp_index_sub_tree
= proto_item_add_subtree(netapp_index_item
, ett_btmesh_config_model_netapp_index
);
4817 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_net
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4818 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_app
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4820 proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_add_appkey
, tvb
, offset
, 16, ENC_NA
);
4823 case CONFIG_APPKEY_UPDATE
:
4824 netapp_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_update_netkeyindexandappkeyindex
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4825 netapp_index_sub_tree
= proto_item_add_subtree(netapp_index_item
, ett_btmesh_config_model_netapp_index
);
4826 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_net
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4827 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_app
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4829 proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_update_appkey
, tvb
, offset
, 16, ENC_NA
);
4832 case CONFIG_COMPOSITION_DATA_STATUS
:
4833 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_status_page
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4835 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_status_cid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4837 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_status_pid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4839 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_status_vid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4841 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_status_crpl
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4843 proto_tree_add_bitmask_with_flags(sub_tree
, tvb
, offset
,
4844 hf_btmesh_config_composition_data_status_features
,
4845 ett_btmesh_config_composition_data_status_features
,
4846 config_composition_data_status_features_headers
,
4847 ENC_LITTLE_ENDIAN
, BMT_NO_APPEND
);
4851 while (tvb_reported_length_remaining(tvb
, offset
) > 2) {
4852 nums
= tvb_get_uint8(tvb
, offset
+ 2 );
4853 numv
= tvb_get_uint8(tvb
, offset
+ 2 + 1);
4854 element_sub_tree
= proto_tree_add_subtree_format(sub_tree
, tvb
, offset
, 4 + nums
* 2 + numv
* 4, ett_btmesh_config_model_element
, NULL
, "Element #%u", element
);
4855 proto_tree_add_item(element_sub_tree
, hf_btmesh_config_composition_data_status_loc
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4857 proto_tree_add_item(element_sub_tree
, hf_btmesh_config_composition_data_status_nums
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4859 proto_tree_add_item(element_sub_tree
, hf_btmesh_config_composition_data_status_numv
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4862 model_sub_tree
= proto_tree_add_subtree(element_sub_tree
, tvb
, offset
, nums
* 2, ett_btmesh_config_model_model
, NULL
, "SIG Models");
4863 for (i
= 0; i
< nums
; i
++) {
4864 proto_tree_add_item(model_sub_tree
, hf_btmesh_config_composition_data_status_sig_model
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4869 vendor_sub_tree
= proto_tree_add_subtree(element_sub_tree
, tvb
, offset
, numv
* 4, ett_btmesh_config_model_vendor
, NULL
, "Vendor Models");
4870 for (i
= 0; i
< numv
; i
++) {
4871 proto_tree_add_item(vendor_sub_tree
, hf_btmesh_config_composition_data_status_vendor_model
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4878 case CONFIG_MODEL_PUBLICATION_SET
:
4879 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4881 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_publishaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4883 pub_app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_appkey
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4884 pub_app_index_sub_tree
= proto_item_add_subtree(pub_app_index_item
, ett_btmesh_config_model_pub_app_index
);
4885 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_set_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4886 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_set_credentialflag
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4887 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_set_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4889 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_publishttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4891 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_publishperiod
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4892 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
4893 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_set_publishperiod_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4894 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_set_publishperiod_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4896 publishretransmit_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_publishretransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4897 publishretransmit_sub_tree
= proto_item_add_subtree(publishretransmit_item
, ett_btmesh_config_model_publishretransmit
);
4898 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_set_publishretransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4899 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_set_publishretransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4901 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
4902 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4905 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_set_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4909 case HEALTH_CURRENT_STATUS
:
4910 proto_tree_add_item(sub_tree
, hf_btmesh_health_current_status_test_id
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4912 proto_tree_add_item(sub_tree
, hf_btmesh_health_current_status_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4914 fault_array_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_fault_array
, NULL
, "FaultArray");
4915 while (tvb_reported_length_remaining(tvb
, offset
) > 0) {
4916 proto_tree_add_item(fault_array_tree
, hf_btmesh_health_current_status_fault
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4920 case HEALTH_FAULT_STATUS
:
4921 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_status_test_id
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4923 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_status_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4925 fault_array_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_fault_array
, NULL
, "FaultArray");
4926 while (tvb_reported_length_remaining(tvb
, offset
) > 0) {
4927 proto_tree_add_item(fault_array_tree
, hf_btmesh_health_fault_status_fault
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4931 case CONFIG_HEARTBEAT_PUBLICATION_STATUS
:
4932 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4934 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_destination
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4936 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_countlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4938 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_periodlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4940 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_ttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4942 proto_tree_add_bitmask_with_flags(sub_tree
, tvb
, offset
,
4943 hf_btmesh_config_heartbeat_publication_status_features
,
4944 ett_btmesh_config_heartbeat_publication_status_features
,
4945 config_heartbeat_publication_status_features_headers
,
4946 ENC_LITTLE_ENDIAN
, BMT_NO_APPEND
);
4948 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_status_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4949 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
4950 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_heartbeat_publication_status_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4951 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_heartbeat_publication_status_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4954 case CONFIG_APPKEY_DELETE
:
4955 netapp_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4956 netapp_index_sub_tree
= proto_item_add_subtree(netapp_index_item
, ett_btmesh_config_model_netapp_index
);
4957 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_net
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4958 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_app
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4961 case CONFIG_APPKEY_GET
:
4962 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_get_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4963 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
4964 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_appkey_get_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4965 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_appkey_get_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4968 case CONFIG_APPKEY_LIST
:
4969 proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_list_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4971 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_list_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4972 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
4973 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_appkey_list_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4974 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_appkey_list_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4976 appkeylist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_appkey_list
, NULL
, "AppKeyIndexes");
4977 while (tvb_reported_length_remaining(tvb
, offset
) >= 2) {
4978 if (tvb_reported_length_remaining(tvb
, offset
) >= 3) {
4979 appkeyindexes
= tvb_get_uint24(tvb
, offset
, ENC_LITTLE_ENDIAN
);
4980 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_appkey_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x000FFF);
4981 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_appkey_list_appkeyindex
, tvb
, offset
+ 1, 2, (appkeyindexes
>> 12 ) & 0x000FFF);
4984 appkeyindexes
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
4985 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_appkey_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x0FFF);
4986 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_appkey_list_appkeyindex_rfu
, tvb
, offset
, 2, (appkeyindexes
>> 12 ) & 0xF);
4991 case CONFIG_APPKEY_STATUS
:
4992 proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4994 netapp_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_appkey_status_netkeyindexandappkeyindex
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4995 netapp_index_sub_tree
= proto_item_add_subtree(netapp_index_item
, ett_btmesh_config_model_netapp_index
);
4996 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_net
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4997 proto_tree_add_item(netapp_index_sub_tree
, hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_app
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5000 case HEALTH_ATTENTION_GET
:
5002 case HEALTH_ATTENTION_SET
:
5003 proto_tree_add_item(sub_tree
, hf_btmesh_health_attention_set_attention
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5006 case HEALTH_ATTENTION_SET_UNACKNOWLEDGED
:
5007 proto_tree_add_item(sub_tree
, hf_btmesh_health_attention_set_unacknowledged_attention
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5010 case HEALTH_ATTENTION_STATUS
:
5011 proto_tree_add_item(sub_tree
, hf_btmesh_health_attention_status_attention
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5014 case CONFIG_COMPOSITION_DATA_GET
:
5015 proto_tree_add_item(sub_tree
, hf_btmesh_config_composition_data_get_page
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5018 case CONFIG_BEACON_GET
:
5020 case CONFIG_BEACON_SET
:
5021 proto_tree_add_item(sub_tree
, hf_btmesh_config_beacon_set_beacon
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5024 case CONFIG_BEACON_STATUS
:
5025 proto_tree_add_item(sub_tree
, hf_btmesh_config_beacon_status_beacon
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5028 case CONFIG_DEFAULT_TTL_GET
:
5030 case CONFIG_DEFAULT_TTL_SET
:
5031 proto_tree_add_item(sub_tree
, hf_btmesh_config_default_ttl_set_ttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5034 case CONFIG_DEFAULT_TTL_STATUS
:
5035 proto_tree_add_item(sub_tree
, hf_btmesh_config_default_ttl_status_ttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5038 case CONFIG_FRIEND_GET
:
5040 case CONFIG_FRIEND_SET
:
5041 proto_tree_add_item(sub_tree
, hf_btmesh_config_friend_set_friend
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5044 case CONFIG_FRIEND_STATUS
:
5045 proto_tree_add_item(sub_tree
, hf_btmesh_config_friend_status_friend
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5048 case CONFIG_GATT_PROXY_GET
:
5050 case CONFIG_GATT_PROXY_SET
:
5051 proto_tree_add_item(sub_tree
, hf_btmesh_config_gatt_proxy_set_gattproxy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5054 case CONFIG_GATT_PROXY_STATUS
:
5055 proto_tree_add_item(sub_tree
, hf_btmesh_config_gatt_proxy_status_gattproxy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5058 case CONFIG_KEY_REFRESH_PHASE_GET
:
5059 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_get_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5060 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5061 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_get_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5062 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_get_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5065 case CONFIG_KEY_REFRESH_PHASE_SET
:
5066 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_set_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5067 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5068 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_set_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5069 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_set_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5071 proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_set_transition
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5074 case CONFIG_KEY_REFRESH_PHASE_STATUS
:
5075 proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5077 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_status_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5078 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5079 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_status_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5080 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_key_refresh_phase_status_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5082 proto_tree_add_item(sub_tree
, hf_btmesh_config_key_refresh_phase_status_phase
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5085 case CONFIG_MODEL_PUBLICATION_GET
:
5086 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_get_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5088 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5089 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_get_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5092 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_get_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5096 case CONFIG_MODEL_PUBLICATION_STATUS
:
5097 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5099 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5101 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_publishaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5103 pub_app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_appkey
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5104 pub_app_index_sub_tree
= proto_item_add_subtree(pub_app_index_item
, ett_btmesh_config_model_pub_app_index
);
5105 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_status_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5106 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_status_credentialflag
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5107 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_status_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5109 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_publishttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5111 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_publishperiod
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5112 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5113 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_status_publishperiod_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5114 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_status_publishperiod_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5116 publishretransmit_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_publishretransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5117 publishretransmit_sub_tree
= proto_item_add_subtree(publishretransmit_item
, ett_btmesh_config_model_publishretransmit
);
5118 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_status_publishretransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5119 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_status_publishretransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5121 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5122 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5125 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_status_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5129 case CONFIG_MODEL_PUBLICATION_VIRTUAL_ADDRESS_SET
:
5130 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5132 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishaddress
, tvb
, offset
, 16, ENC_NA
);
5134 pub_app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_appkey
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5135 pub_app_index_sub_tree
= proto_item_add_subtree(pub_app_index_item
, ett_btmesh_config_model_pub_app_index
);
5136 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5137 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_credentialflag
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5138 proto_tree_add_item(pub_app_index_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5140 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5142 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishperiod
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5143 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5144 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishperiod_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5145 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishperiod_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5147 publishretransmit_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishretransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5148 publishretransmit_sub_tree
= proto_item_add_subtree(publishretransmit_item
, ett_btmesh_config_model_publishretransmit
);
5149 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5150 proto_tree_add_item(publishretransmit_sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5152 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5153 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5156 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_publication_virtual_address_set_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5160 case CONFIG_MODEL_SUBSCRIPTION_ADD
:
5161 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_add_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5163 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_add_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5165 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5166 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_add_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5169 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_add_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5173 case CONFIG_MODEL_SUBSCRIPTION_DELETE
:
5174 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5176 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5178 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5179 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5182 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5186 case CONFIG_MODEL_SUBSCRIPTION_DELETE_ALL
:
5187 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_all_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5189 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5190 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_all_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5193 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_delete_all_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5197 case CONFIG_MODEL_SUBSCRIPTION_OVERWRITE
:
5198 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_overwrite_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5200 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_overwrite_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5202 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5203 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_overwrite_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5206 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_overwrite_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5210 case CONFIG_MODEL_SUBSCRIPTION_STATUS
:
5211 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5213 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_status_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5215 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_status_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5217 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5218 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_status_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5221 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_status_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5225 case CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_ADD
:
5226 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_add_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5228 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_add_label
, tvb
, offset
, 16, ENC_NA
);
5230 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5231 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_add_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5234 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_add_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5238 case CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_DELETE
:
5239 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_delete_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5241 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_delete_label
, tvb
, offset
, 16, ENC_NA
);
5243 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5244 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_delete_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5247 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_delete_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5251 case CONFIG_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_OVERWRITE
:
5252 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_overwrite_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5254 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_overwrite_label
, tvb
, offset
, 16, ENC_NA
);
5256 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5257 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_overwrite_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5260 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_subscription_virtual_address_overwrite_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5264 case CONFIG_NETWORK_TRANSMIT_GET
:
5266 case CONFIG_NETWORK_TRANSMIT_SET
:
5267 transmit_index
= proto_tree_add_item(sub_tree
, hf_btmesh_config_network_transmit_set_networktransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5268 transmit_sub_tree
= proto_item_add_subtree(transmit_index
, ett_btmesh_config_model_network_transmit
);
5269 proto_tree_add_item(transmit_sub_tree
, hf_btmesh_config_network_transmit_set_networktransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5270 proto_tree_add_item(transmit_sub_tree
, hf_btmesh_config_network_transmit_set_networktransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5273 case CONFIG_NETWORK_TRANSMIT_STATUS
:
5274 transmit_index
= proto_tree_add_item(sub_tree
, hf_btmesh_config_network_transmit_status_networktransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5275 transmit_sub_tree
= proto_item_add_subtree(transmit_index
, ett_btmesh_config_model_network_transmit
);
5276 proto_tree_add_item(transmit_sub_tree
, hf_btmesh_config_network_transmit_status_networktransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5277 proto_tree_add_item(transmit_sub_tree
, hf_btmesh_config_network_transmit_status_networktransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5280 case CONFIG_RELAY_GET
:
5282 case CONFIG_RELAY_SET
:
5283 proto_tree_add_item(sub_tree
, hf_btmesh_config_relay_set_relay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5285 relayretransmit_index
= proto_tree_add_item(sub_tree
, hf_btmesh_config_relay_set_relayretransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5286 relayretransmit_sub_tree
= proto_item_add_subtree(relayretransmit_index
, ett_btmesh_config_model_relayretransmit
);
5287 proto_tree_add_item(relayretransmit_sub_tree
, hf_btmesh_config_relay_set_relayretransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5288 proto_tree_add_item(relayretransmit_sub_tree
, hf_btmesh_config_relay_set_relayretransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5291 case CONFIG_RELAY_STATUS
:
5292 proto_tree_add_item(sub_tree
, hf_btmesh_config_relay_status_relay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5294 relayretransmit_index
= proto_tree_add_item(sub_tree
, hf_btmesh_config_relay_status_relayretransmit
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5295 relayretransmit_sub_tree
= proto_item_add_subtree(relayretransmit_index
, ett_btmesh_config_model_relayretransmit
);
5296 proto_tree_add_item(relayretransmit_sub_tree
, hf_btmesh_config_relay_status_relayretransmit_count
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5297 proto_tree_add_item(relayretransmit_sub_tree
, hf_btmesh_config_relay_status_relayretransmit_intervalsteps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5300 case CONFIG_SIG_MODEL_SUBSCRIPTION_GET
:
5301 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_subscription_get_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5303 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_subscription_get_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5306 case CONFIG_SIG_MODEL_SUBSCRIPTION_LIST
:
5307 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_subscription_list_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5309 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_subscription_list_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5311 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_subscription_list_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5313 subscriptionlist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_addresses
, NULL
, "Addresses");
5314 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
5315 proto_tree_add_item(subscriptionlist_tree
, hf_btmesh_config_sig_model_subscription_list_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5319 case CONFIG_VENDOR_MODEL_SUBSCRIPTION_GET
:
5320 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_subscription_get_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5322 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_subscription_get_modelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5325 case CONFIG_VENDOR_MODEL_SUBSCRIPTION_LIST
:
5326 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_subscription_list_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5328 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_subscription_list_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5330 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_subscription_list_modelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5332 subscriptionlist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_addresses
, NULL
, "Addresses");
5333 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
5334 proto_tree_add_item(subscriptionlist_tree
, hf_btmesh_config_vendor_model_subscription_list_address
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5338 case CONFIG_LOW_POWER_NODE_POLLTIMEOUT_GET
:
5339 proto_tree_add_item(sub_tree
, hf_btmesh_config_low_power_node_polltimeout_get_lpnaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5342 case CONFIG_LOW_POWER_NODE_POLLTIMEOUT_STATUS
:
5343 proto_tree_add_item(sub_tree
, hf_btmesh_config_low_power_node_polltimeout_status_lpnaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5345 proto_tree_add_item(sub_tree
, hf_btmesh_config_low_power_node_polltimeout_status_polltimeout
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5348 case HEALTH_FAULT_CLEAR
:
5349 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_clear_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5352 case HEALTH_FAULT_CLEAR_UNACKNOWLEDGED
:
5353 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_clear_unacknowledged_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5356 case HEALTH_FAULT_GET
:
5357 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_get_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5360 case HEALTH_FAULT_TEST
:
5361 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_test_test_id
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5363 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_test_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5366 case HEALTH_FAULT_TEST_UNACKNOWLEDGED
:
5367 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_test_unacknowledged_test_id
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5369 proto_tree_add_item(sub_tree
, hf_btmesh_health_fault_test_unacknowledged_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5372 case HEALTH_PERIOD_GET
:
5374 case HEALTH_PERIOD_SET
:
5375 proto_tree_add_item(sub_tree
, hf_btmesh_health_period_set_fast_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5378 case HEALTH_PERIOD_SET_UNACKNOWLEDGED
:
5379 proto_tree_add_item(sub_tree
, hf_btmesh_health_period_set_unacknowledged_fast_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5382 case HEALTH_PERIOD_STATUS
:
5383 proto_tree_add_item(sub_tree
, hf_btmesh_health_period_status_fast_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5386 case CONFIG_HEARTBEAT_PUBLICATION_GET
:
5388 case CONFIG_HEARTBEAT_PUBLICATION_SET
:
5389 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_set_destination
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5391 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_set_countlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5393 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_set_periodlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5395 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_set_ttl
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5397 proto_tree_add_bitmask_with_flags(sub_tree
, tvb
, offset
,
5398 hf_btmesh_config_heartbeat_publication_set_features
,
5399 ett_btmesh_config_heartbeat_publication_set_features
,
5400 config_heartbeat_publication_set_features_headers
,
5401 ENC_LITTLE_ENDIAN
, BMT_NO_APPEND
);
5403 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_publication_set_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5404 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5405 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_heartbeat_publication_set_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5406 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_heartbeat_publication_set_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5409 case CONFIG_HEARTBEAT_SUBSCRIPTION_GET
:
5411 case CONFIG_HEARTBEAT_SUBSCRIPTION_SET
:
5412 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_set_source
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5414 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_set_destination
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5416 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_set_periodlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5419 case CONFIG_HEARTBEAT_SUBSCRIPTION_STATUS
:
5420 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5422 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_source
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5424 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_destination
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5426 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_periodlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5428 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_countlog
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5430 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_minhops
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5432 proto_tree_add_item(sub_tree
, hf_btmesh_config_heartbeat_subscription_status_maxhops
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5435 case CONFIG_MODEL_APP_BIND
:
5436 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_bind_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5438 app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_bind_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5439 app_index_sub_tree
= proto_item_add_subtree(app_index_item
, ett_btmesh_config_model_app_index
);
5440 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_bind_appkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5441 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_bind_appkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5443 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5444 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_bind_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5447 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_bind_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5451 case CONFIG_MODEL_APP_STATUS
:
5452 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5454 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_status_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5456 app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_status_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5457 app_index_sub_tree
= proto_item_add_subtree(app_index_item
, ett_btmesh_config_model_app_index
);
5458 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_status_appkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5459 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_status_appkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5461 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5462 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_status_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5465 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_status_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5469 case CONFIG_MODEL_APP_UNBIND
:
5470 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_unbind_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5472 app_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_unbind_appkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5473 app_index_sub_tree
= proto_item_add_subtree(app_index_item
, ett_btmesh_config_model_app_index
);
5474 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_unbind_appkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5475 proto_tree_add_item(app_index_sub_tree
, hf_btmesh_config_model_app_unbind_appkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5477 if (tvb_reported_length_remaining(tvb
, offset
) > 2) {
5478 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_unbind_vendormodelidentifier
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5481 proto_tree_add_item(sub_tree
, hf_btmesh_config_model_app_unbind_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5485 case CONFIG_NETKEY_ADD
:
5486 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_add_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5487 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5488 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_add_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5489 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_add_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5491 proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_add_netkey
, tvb
, offset
, 16, ENC_NA
);
5494 case CONFIG_NETKEY_DELETE
:
5495 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_delete_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5496 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5497 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_delete_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5498 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_delete_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5501 case CONFIG_NETKEY_GET
:
5503 case CONFIG_NETKEY_LIST
:
5504 netkeylist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_netkey_list
, NULL
, "NetKeyIndexes");
5505 while (tvb_reported_length_remaining(tvb
, offset
) >= 2) {
5506 if (tvb_reported_length_remaining(tvb
, offset
) >= 3) {
5507 netkeyindexes
= tvb_get_uint24(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5508 proto_tree_add_uint(netkeylist_tree
, hf_btmesh_config_netkey_list_netkeyindex
, tvb
, offset
, 2, netkeyindexes
& 0x000FFF);
5509 proto_tree_add_uint(netkeylist_tree
, hf_btmesh_config_netkey_list_netkeyindex
, tvb
, offset
+ 1, 2, (netkeyindexes
>> 12 ) & 0x000FFF);
5512 netkeyindexes
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5513 proto_tree_add_uint(netkeylist_tree
, hf_btmesh_config_netkey_list_netkeyindex
, tvb
, offset
, 2, netkeyindexes
& 0x0FFF);
5514 proto_tree_add_uint(netkeylist_tree
, hf_btmesh_config_netkey_list_netkeyindex_rfu
, tvb
, offset
, 2, (netkeyindexes
>> 12 ) & 0xF);
5519 case CONFIG_NETKEY_STATUS
:
5520 proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5522 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_status_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5523 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5524 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_status_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5525 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_status_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5528 case CONFIG_NETKEY_UPDATE
:
5529 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_update_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5530 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5531 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_update_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5532 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_netkey_update_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5534 proto_tree_add_item(sub_tree
, hf_btmesh_config_netkey_update_netkey
, tvb
, offset
, 16, ENC_NA
);
5537 case CONFIG_NODE_IDENTITY_GET
:
5538 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_get_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5539 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5540 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_get_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5541 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_get_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5544 case CONFIG_NODE_IDENTITY_SET
:
5545 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_set_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5546 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5547 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_set_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5548 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_set_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5550 proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_set_identity
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5553 case CONFIG_NODE_IDENTITY_STATUS
:
5554 proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_status_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5556 net_index_item
= proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_status_netkeyindex
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5557 net_index_sub_tree
= proto_item_add_subtree(net_index_item
, ett_btmesh_config_model_net_index
);
5558 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_status_netkeyindex_idx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5559 proto_tree_add_item(net_index_sub_tree
, hf_btmesh_config_node_identity_status_netkeyindex_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5561 proto_tree_add_item(sub_tree
, hf_btmesh_config_node_identity_status_identity
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5564 case CONFIG_NODE_RESET
:
5566 case CONFIG_NODE_RESET_STATUS
:
5568 case CONFIG_SIG_MODEL_APP_GET
:
5569 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_app_get_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5571 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_app_get_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5574 case CONFIG_SIG_MODEL_APP_LIST
:
5575 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_app_list_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5577 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_app_list_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5579 proto_tree_add_item(sub_tree
, hf_btmesh_config_sig_model_app_list_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5581 appkeylist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_appkey_list
, NULL
, "AppKeyIndexes");
5582 while (tvb_reported_length_remaining(tvb
, offset
) >= 2) {
5583 if (tvb_reported_length_remaining(tvb
, offset
) >= 3) {
5584 appkeyindexes
= tvb_get_uint24(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5585 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_sig_model_app_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x000FFF);
5586 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_sig_model_app_list_appkeyindex
, tvb
, offset
+ 1, 2, (appkeyindexes
>> 12 ) & 0x000FFF);
5589 appkeyindexes
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5590 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_sig_model_app_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x0FFF);
5591 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_sig_model_app_list_appkeyindex_rfu
, tvb
, offset
, 2, (appkeyindexes
>> 12 ) & 0xF);
5596 case CONFIG_VENDOR_MODEL_APP_GET
:
5597 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_app_get_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5599 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_app_get_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5602 case CONFIG_VENDOR_MODEL_APP_LIST
:
5603 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_app_list_status
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5605 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_app_list_elementaddress
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5607 proto_tree_add_item(sub_tree
, hf_btmesh_config_vendor_model_app_list_modelidentifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5609 appkeylist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_config_model_appkey_list
, NULL
, "AppKeyIndexes");
5610 while (tvb_reported_length_remaining(tvb
, offset
) >= 2) {
5611 if (tvb_reported_length_remaining(tvb
, offset
) >= 3) {
5612 appkeyindexes
= tvb_get_uint24(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5613 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_vendor_model_app_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x000FFF);
5614 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_vendor_model_app_list_appkeyindex
, tvb
, offset
+ 1, 2, (appkeyindexes
>> 12 ) & 0x000FFF);
5617 appkeyindexes
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
5618 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_vendor_model_app_list_appkeyindex
, tvb
, offset
, 2, appkeyindexes
& 0x0FFF);
5619 proto_tree_add_uint(appkeylist_tree
, hf_btmesh_config_vendor_model_app_list_appkeyindex_rfu
, tvb
, offset
, 2, (appkeyindexes
>> 12 ) & 0xF);
5625 // ******************************************************************************************
5627 case GENERIC_LOCATION_GLOBAL_STATUS
:
5628 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_status_global_latitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5630 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_status_global_longitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5632 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_status_global_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5635 case GENERIC_LOCATION_GLOBAL_SET
:
5636 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_global_latitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5638 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_global_longitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5640 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_global_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5643 case GENERIC_LOCATION_GLOBAL_SET_UNACKNOWLEDGED
:
5644 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_unacknowledged_global_latitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5646 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_unacknowledged_global_longitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5648 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_global_set_unacknowledged_global_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5651 case GENERIC_ONOFF_GET
:
5653 case GENERIC_ONOFF_SET
:
5654 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5656 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5659 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5660 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5661 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5662 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5663 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5665 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5669 case GENERIC_ONOFF_SET_UNACKNOWLEDGED
:
5670 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5672 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5675 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5676 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5677 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5678 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5679 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5681 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5685 case GENERIC_ONOFF_STATUS
:
5686 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_status_present_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5689 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5690 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_status_target_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5692 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_onoff_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5693 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5694 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5695 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_onoff_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5699 case GENERIC_LEVEL_GET
:
5701 case GENERIC_LEVEL_SET
:
5702 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5704 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5707 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5708 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5709 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5710 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5711 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5713 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5717 case GENERIC_LEVEL_SET_UNACKNOWLEDGED
:
5718 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_unacknowledged_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5720 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5723 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5724 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5725 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5726 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5727 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5729 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5733 case GENERIC_LEVEL_STATUS
:
5734 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_status_present_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5737 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5738 proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_status_target_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5740 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_level_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5741 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5742 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5743 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_level_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5747 case GENERIC_DELTA_SET
:
5748 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_delta_level
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5750 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5753 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5754 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5755 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5756 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_delta_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5757 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_delta_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5759 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5763 case GENERIC_DELTA_SET_UNACKNOWLEDGED
:
5764 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_delta_level
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5766 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5769 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5770 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5771 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5772 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5773 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5775 proto_tree_add_item(sub_tree
, hf_btmesh_generic_delta_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5779 case GENERIC_MOVE_SET
:
5780 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_delta_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5782 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5785 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5786 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5787 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5788 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_move_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5789 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_move_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5791 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5795 case GENERIC_MOVE_SET_UNACKNOWLEDGED
:
5796 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_unacknowledged_delta_level
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5798 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5801 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5802 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5803 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5804 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_move_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5805 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_move_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5807 proto_tree_add_item(sub_tree
, hf_btmesh_generic_move_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5811 case GENERIC_DEFAULT_TRANSITION_TIME_GET
:
5813 case GENERIC_DEFAULT_TRANSITION_TIME_SET
:
5814 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_default_transition_time_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5815 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5816 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5817 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5820 case GENERIC_DEFAULT_TRANSITION_TIME_SET_UNACKNOWLEDGED
:
5821 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5822 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5823 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5824 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5827 case GENERIC_DEFAULT_TRANSITION_TIME_STATUS
:
5828 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_default_transition_time_status_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5829 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5830 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_status_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5831 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_default_transition_time_status_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5834 case GENERIC_ONPOWERUP_GET
:
5836 case GENERIC_ONPOWERUP_STATUS
:
5837 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onpowerup_status_onpowerup
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5840 case GENERIC_ONPOWERUP_SET
:
5841 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onpowerup_set_onpowerup
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5844 case GENERIC_ONPOWERUP_SET_UNACKNOWLEDGED
:
5845 proto_tree_add_item(sub_tree
, hf_btmesh_generic_onpowerup_set_unacknowledged_onpowerup
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5848 case GENERIC_POWER_LEVEL_GET
:
5850 case GENERIC_POWER_LEVEL_SET
:
5851 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5853 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5856 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5857 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5858 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5859 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5860 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5862 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5866 case GENERIC_POWER_LEVEL_SET_UNACKNOWLEDGED
:
5867 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5869 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5872 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5873 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5874 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5875 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5876 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5878 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5882 case GENERIC_POWER_LEVEL_STATUS
:
5883 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_status_present_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5886 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
5887 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_status_target_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5889 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_level_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5890 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
5891 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5892 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_generic_power_level_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5896 case GENERIC_POWER_LAST_GET
:
5898 case GENERIC_POWER_LAST_STATUS
:
5899 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_last_status_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5902 case GENERIC_POWER_DEFAULT_GET
:
5904 case GENERIC_POWER_DEFAULT_STATUS
:
5905 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_default_status_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5908 case GENERIC_POWER_RANGE_GET
:
5910 case GENERIC_POWER_RANGE_STATUS
:
5911 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5913 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_status_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5915 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_status_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5918 case GENERIC_POWER_DEFAULT_SET
:
5919 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_default_set_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5922 case GENERIC_POWER_DEFAULT_SET_UNACKNOWLEDGED
:
5923 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_default_set_unacknowledged_power
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5926 case GENERIC_POWER_RANGE_SET
:
5927 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_set_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5929 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_set_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5932 case GENERIC_POWER_RANGE_SET_UNACKNOWLEDGED
:
5933 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_set_unacknowledged_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5935 proto_tree_add_item(sub_tree
, hf_btmesh_generic_power_range_set_unacknowledged_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5938 case GENERIC_BATTERY_GET
:
5940 case GENERIC_BATTERY_STATUS
:
5941 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_battery_level
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5943 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_time_to_discharge
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5945 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_time_to_charge
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5947 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_flags_presence
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5948 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_flags_indicator
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5949 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_flags_charging
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5950 proto_tree_add_item(sub_tree
, hf_btmesh_generic_battery_status_flags_serviceability
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5953 case GENERIC_LOCATION_GLOBAL_GET
:
5955 case GENERIC_LOCATION_LOCAL_GET
:
5957 case GENERIC_LOCATION_LOCAL_STATUS
:
5958 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_local_north
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5960 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_local_east
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5962 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_local_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5964 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_floor_number
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5966 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_uncertainty_stationary
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5967 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_uncertainty_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5968 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_uncertainty_update_time
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5969 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_status_uncertainty_precision
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5972 case GENERIC_LOCATION_LOCAL_SET
:
5973 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_local_north
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5975 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_local_east
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5977 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_local_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5979 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_floor_number
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5981 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_uncertainty_stationary
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5982 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_uncertainty_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5983 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_uncertainty_update_time
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5984 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_uncertainty_precision
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5987 case GENERIC_LOCATION_LOCAL_SET_UNACKNOWLEDGED
:
5988 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_local_north
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5990 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_local_east
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5992 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_local_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5994 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_floor_number
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5996 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_stationary
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5997 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_rfu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5998 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_update_time
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5999 proto_tree_add_item(sub_tree
, hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_precision
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6004 proto_tree_add_item(sub_tree
, hf_btmesh_scene_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6006 proto_tree_add_item(sub_tree
, hf_btmesh_scene_status_current_scene
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6009 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6010 proto_tree_add_item(sub_tree
, hf_btmesh_scene_status_target_scene
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6012 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scene_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6013 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6014 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6015 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6022 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6024 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6027 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6028 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6029 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6030 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_recall_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6031 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_recall_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6033 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6037 case SCENE_RECALL_UNACKNOWLEDGED
:
6038 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_unacknowledged_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6040 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6043 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6044 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6045 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6046 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_recall_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6047 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scene_recall_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6049 proto_tree_add_item(sub_tree
, hf_btmesh_scene_recall_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6053 case SCENE_REGISTER_GET
:
6055 case SCENE_REGISTER_STATUS
:
6056 proto_tree_add_item(sub_tree
, hf_btmesh_scene_register_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6058 proto_tree_add_item(sub_tree
, hf_btmesh_scene_register_status_current_scene
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6060 sceneslist_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_scene_register_status_scenes
, NULL
, "Scenes");
6061 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
6062 proto_tree_add_item(sceneslist_tree
, hf_btmesh_scene_register_status_scene
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6067 proto_tree_add_item(sub_tree
, hf_btmesh_scene_store_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6070 case SCENE_STORE_UNACKNOWLEDGED
:
6071 proto_tree_add_item(sub_tree
, hf_btmesh_scene_store_unacknowledged_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6075 proto_tree_add_item(sub_tree
, hf_btmesh_scene_delete_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6078 case SCENE_DELETE_UNACKNOWLEDGED
:
6079 proto_tree_add_item(sub_tree
, hf_btmesh_scene_delete_unacknowledged_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6083 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_tai_seconds
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6085 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_subsecond
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6087 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_uncertainty
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6089 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_time_authority
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6090 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_tai_utc_delta
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6092 proto_tree_add_item(sub_tree
, hf_btmesh_time_set_time_zone_offset
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6096 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_tai_seconds
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6099 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6100 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_subsecond
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6102 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_uncertainty
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6104 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_time_authority
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6105 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_tai_utc_delta
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6107 proto_tree_add_item(sub_tree
, hf_btmesh_time_status_time_zone_offset
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6111 case SCHEDULER_ACTION_STATUS
:
6112 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_index
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6113 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_year
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6114 month_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_month
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6115 month_sub_tree
= proto_item_add_subtree(month_item
, ett_btmesh_scheduler_model_month
);
6116 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_january
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6117 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_february
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6118 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_march
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6119 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_april
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6120 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_may
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6121 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_june
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6122 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_july
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6123 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_august
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6124 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_september
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6125 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_october
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6126 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_november
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6127 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_december
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6128 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_day
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6130 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_hour
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6131 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_minute
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6132 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_second
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6133 day_of_week_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_day_of_week
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6134 day_of_week_sub_tree
= proto_item_add_subtree(day_of_week_item
, ett_btmesh_scheduler_model_day_of_week
);
6135 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_monday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6136 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_tuesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6137 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_wednesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6138 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_thursday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6139 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_friday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6140 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_saturday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6141 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_sunday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6142 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_action
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6144 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6145 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6146 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6147 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6149 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_status_schedule_register_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6152 case SCHEDULER_ACTION_SET
:
6153 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_index
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6154 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_year
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6155 month_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_month
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6156 month_sub_tree
= proto_item_add_subtree(month_item
, ett_btmesh_scheduler_model_month
);
6157 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_january
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6158 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_february
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6159 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_march
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6160 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_april
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6161 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_may
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6162 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_june
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6163 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_july
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6164 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_august
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6165 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_september
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6166 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_october
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6167 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_november
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6168 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_december
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6169 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_day
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6171 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_hour
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6172 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_minute
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6173 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_second
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6174 day_of_week_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_day_of_week
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6175 day_of_week_sub_tree
= proto_item_add_subtree(day_of_week_item
, ett_btmesh_scheduler_model_day_of_week
);
6176 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_monday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6177 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_tuesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6178 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_wednesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6179 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_thursday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6180 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_friday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6181 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_saturday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6182 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_sunday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6183 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_action
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6185 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6186 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6187 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6188 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6190 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_schedule_register_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6193 case SCHEDULER_ACTION_SET_UNACKNOWLEDGED
:
6194 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_index
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6195 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_year
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6196 month_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_month
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6197 month_sub_tree
= proto_item_add_subtree(month_item
, ett_btmesh_scheduler_model_month
);
6198 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_january
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6199 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_february
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6200 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_march
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6201 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_april
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6202 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_may
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6203 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_june
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6204 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_july
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6205 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_august
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6206 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_september
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6207 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_october
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6208 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_november
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6209 proto_tree_add_item(month_sub_tree
, hf_btmesh_scheduler_schedule_register_month_december
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6210 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6212 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_hour
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6213 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_minute
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6214 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_second
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6215 day_of_week_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day_of_week
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6216 day_of_week_sub_tree
= proto_item_add_subtree(day_of_week_item
, ett_btmesh_scheduler_model_day_of_week
);
6217 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_monday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6218 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_tuesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6219 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_wednesday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6220 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_thursday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6221 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_friday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6222 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_saturday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6223 proto_tree_add_item(day_of_week_sub_tree
, hf_btmesh_scheduler_schedule_register_day_of_week_sunday
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6224 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_action
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
6226 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6227 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6228 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6229 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6231 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_scene_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6239 proto_tree_add_item(sub_tree
, hf_btmesh_time_role_set_time_role
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6242 case TIME_ROLE_STATUS
:
6243 proto_tree_add_item(sub_tree
, hf_btmesh_time_role_status_time_role
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6249 proto_tree_add_item(sub_tree
, hf_btmesh_time_zone_set_time_zone_offset_new
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6251 proto_tree_add_item(sub_tree
, hf_btmesh_time_zone_set_tai_of_zone_change
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6254 case TIME_ZONE_STATUS
:
6255 proto_tree_add_item(sub_tree
, hf_btmesh_time_zone_status_time_zone_offset_current
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6257 proto_tree_add_item(sub_tree
, hf_btmesh_time_zone_status_time_zone_offset_new
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6259 proto_tree_add_item(sub_tree
, hf_btmesh_time_zone_status_tai_of_zone_change
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6262 case TAI_UTC_DELTA_GET
:
6264 case TAI_UTC_DELTA_SET
:
6265 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_set_tai_utc_delta_new
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6266 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_set_padding
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6268 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_set_tai_of_delta_change
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6271 case TAI_UTC_DELTA_STATUS
:
6272 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_status_tai_utc_delta_current
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6273 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_status_padding_1
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6275 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_status_tai_utc_delta_new
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6276 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_status_padding_2
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6278 proto_tree_add_item(sub_tree
, hf_btmesh_tai_utc_delta_status_tai_of_delta_change
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
6281 case SCHEDULER_ACTION_GET
:
6282 proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_action_get_index
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6287 case SCHEDULER_STATUS
:
6288 scheduler_item
= proto_tree_add_item(sub_tree
, hf_btmesh_scheduler_status_schedules
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6289 scheduler_tree
= proto_item_add_subtree(scheduler_item
, ett_btmesh_scheduler_schedules
);
6290 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_0
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6291 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_1
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6292 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_2
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6293 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_3
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6294 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_4
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6295 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_5
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6296 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_6
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6297 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_7
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6298 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_8
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6299 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_9
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6300 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_10
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6301 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_11
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6302 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_12
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6303 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_13
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6304 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_14
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6305 proto_tree_add_item(scheduler_tree
, hf_btmesh_scheduler_status_schedules_schedule_15
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6308 case LIGHT_LC_PROPERTY_SET
:
6309 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_property_set_light_lc_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6310 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
6312 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_light_lc_property_set_light_lc_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
6314 case LIGHT_LC_PROPERTY_SET_UNACKNOWLEDGED
:
6315 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6316 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
6318 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
6320 case LIGHT_LC_PROPERTY_STATUS
:
6321 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_property_status_light_lc_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6322 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
6324 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_light_lc_property_status_light_lc_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
6326 case LIGHT_LIGHTNESS_GET
:
6328 case LIGHT_LIGHTNESS_SET
:
6329 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6331 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6334 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6335 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6336 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6337 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6338 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6340 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6344 case LIGHT_LIGHTNESS_SET_UNACKNOWLEDGED
:
6345 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6347 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6350 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6351 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6352 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6353 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6354 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6356 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6360 case LIGHT_LIGHTNESS_STATUS
:
6361 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_status_present_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6364 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6365 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_status_target_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6367 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6368 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6369 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6370 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6374 case LIGHT_LIGHTNESS_LINEAR_GET
:
6376 case LIGHT_LIGHTNESS_LINEAR_SET
:
6377 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6379 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6382 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6383 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6384 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6385 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6386 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6388 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6392 case LIGHT_LIGHTNESS_LINEAR_SET_UNACKNOWLEDGED
:
6393 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6395 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6398 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6399 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6400 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6401 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6402 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6404 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6408 case LIGHT_LIGHTNESS_LINEAR_STATUS
:
6409 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_status_present_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6412 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6413 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_status_target_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6415 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_linear_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6416 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6417 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6418 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lightness_linear_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6422 case LIGHT_LIGHTNESS_LAST_GET
:
6424 case LIGHT_LIGHTNESS_LAST_STATUS
:
6425 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_last_status_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6428 case LIGHT_LIGHTNESS_DEFAULT_GET
:
6430 case LIGHT_LIGHTNESS_DEFAULT_STATUS
:
6431 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_default_status_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6434 case LIGHT_LIGHTNESS_RANGE_GET
:
6436 case LIGHT_LIGHTNESS_RANGE_STATUS
:
6437 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6439 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_status_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6441 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_status_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6444 case LIGHT_LIGHTNESS_DEFAULT_SET
:
6445 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_default_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6448 case LIGHT_LIGHTNESS_DEFAULT_SET_UNACKNOWLEDGED
:
6449 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_default_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6452 case LIGHT_LIGHTNESS_RANGE_SET
:
6453 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_set_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6455 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_set_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6458 case LIGHT_LIGHTNESS_RANGE_SET_UNACKNOWLEDGED
:
6459 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_set_unacknowledged_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6461 proto_tree_add_item(sub_tree
, hf_btmesh_light_lightness_range_set_unacknowledged_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6467 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_ctl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6469 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6471 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6473 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6476 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6477 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6478 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6479 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6480 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6482 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6486 case LIGHT_CTL_SET_UNACKNOWLEDGED
:
6487 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_ctl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6489 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6491 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6493 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6496 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6497 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6498 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6499 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6500 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6502 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6506 case LIGHT_CTL_STATUS
:
6507 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_status_present_ctl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6509 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_status_present_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6512 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6513 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_status_target_ctl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6515 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_status_target_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6517 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6518 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6519 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6520 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6524 case LIGHT_CTL_TEMPERATURE_GET
:
6526 case LIGHT_CTL_TEMPERATURE_RANGE_GET
:
6528 case LIGHT_CTL_TEMPERATURE_RANGE_STATUS
:
6529 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6531 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_status_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6533 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_status_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6536 case LIGHT_CTL_TEMPERATURE_SET
:
6537 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6539 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6541 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6544 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6545 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6546 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6547 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6548 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6550 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6554 case LIGHT_CTL_TEMPERATURE_SET_UNACKNOWLEDGED
:
6555 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6557 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6559 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6562 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6563 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6564 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6565 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6566 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6568 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6572 case LIGHT_CTL_TEMPERATURE_STATUS
:
6573 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_status_present_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6575 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_status_present_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6578 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6579 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_status_target_ctl_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6581 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_status_target_ctl_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6583 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6584 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6585 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6586 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_ctl_temperature_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6590 case LIGHT_CTL_DEFAULT_GET
:
6592 case LIGHT_CTL_DEFAULT_STATUS
:
6593 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_status_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6595 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_status_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6597 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_status_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6600 case LIGHT_CTL_DEFAULT_SET
:
6601 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6603 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6605 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6608 case LIGHT_CTL_DEFAULT_SET_UNACKNOWLEDGED
:
6609 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6611 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_unacknowledged_temperature
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6613 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_default_set_unacknowledged_delta_uv
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6616 case LIGHT_CTL_TEMPERATURE_RANGE_SET
:
6617 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_set_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6619 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_set_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6622 case LIGHT_CTL_TEMPERATURE_RANGE_SET_UNACKNOWLEDGED
:
6623 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6625 proto_tree_add_item(sub_tree
, hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6630 case LIGHT_HSL_HUE_GET
:
6632 case LIGHT_HSL_HUE_SET
:
6633 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6635 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6638 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6639 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6640 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6641 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6642 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6644 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6648 case LIGHT_HSL_HUE_SET_UNACKNOWLEDGED
:
6649 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6651 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6654 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6655 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6656 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6657 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6658 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6660 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6664 case LIGHT_HSL_HUE_STATUS
:
6665 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_status_present_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6668 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6669 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_status_target_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6671 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_hue_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6672 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6673 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6674 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_hue_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6678 case LIGHT_HSL_SATURATION_GET
:
6680 case LIGHT_HSL_SATURATION_SET
:
6681 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6683 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6686 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6687 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6688 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6689 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6690 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6692 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6696 case LIGHT_HSL_SATURATION_SET_UNACKNOWLEDGED
:
6697 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6699 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6702 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6703 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6704 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6705 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6706 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6708 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6712 case LIGHT_HSL_SATURATION_STATUS
:
6713 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_status_present_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6716 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6717 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_status_target_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6719 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_saturation_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6720 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6721 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6722 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_saturation_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6727 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_hsl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6729 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_hsl_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6731 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_hsl_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6733 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6736 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6737 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6738 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6739 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6740 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6742 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6746 case LIGHT_HSL_SET_UNACKNOWLEDGED
:
6747 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_hsl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6749 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_hsl_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6751 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_hsl_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6753 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6756 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6757 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6758 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6759 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6760 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6762 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6766 case LIGHT_HSL_STATUS
:
6767 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_status_hsl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6769 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_status_hsl_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6771 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_status_hsl_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6774 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6775 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6776 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6777 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6778 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6782 case LIGHT_HSL_TARGET_GET
:
6784 case LIGHT_HSL_TARGET_STATUS
:
6785 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_target_status_hsl_lightness_target
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6787 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_target_status_hsl_hue_target
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6789 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_target_status_hsl_saturation_target
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6792 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6793 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_target_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6794 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6795 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_target_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6796 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_hsl_target_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6800 case LIGHT_HSL_DEFAULT_GET
:
6802 case LIGHT_HSL_DEFAULT_STATUS
:
6803 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_status_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6805 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_status_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6807 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_status_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6810 case LIGHT_HSL_RANGE_GET
:
6812 case LIGHT_HSL_RANGE_STATUS
:
6813 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6815 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_status_hue_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6817 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_status_hue_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6819 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_status_saturation_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6821 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_status_saturation_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6824 case LIGHT_HSL_DEFAULT_SET
:
6825 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6827 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6829 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6832 case LIGHT_HSL_DEFAULT_SET_UNACKNOWLEDGED
:
6833 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6835 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_unacknowledged_hue
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6837 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_default_set_unacknowledged_saturation
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6840 case LIGHT_HSL_RANGE_SET
:
6841 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_hue_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6843 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_hue_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6845 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_saturation_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6847 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_saturation_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6850 case LIGHT_HSL_RANGE_SET_UNACKNOWLEDGED
:
6851 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6853 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6855 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6857 proto_tree_add_item(sub_tree
, hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6863 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_xyl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6865 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6867 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6869 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6872 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6873 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6874 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6875 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6876 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6878 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6882 case LIGHT_XYL_SET_UNACKNOWLEDGED
:
6883 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_xyl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6885 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6887 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6889 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6892 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6893 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6894 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6895 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6896 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6898 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6902 case LIGHT_XYL_STATUS
:
6903 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_status_xyl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6905 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_status_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6907 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_status_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6910 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6911 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6912 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6913 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6914 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6918 case LIGHT_XYL_TARGET_GET
:
6920 case LIGHT_XYL_TARGET_STATUS
:
6921 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_target_status_target_xyl_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6923 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_target_status_target_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6925 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_target_status_target_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6928 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
6929 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_target_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6930 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
6931 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_target_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6932 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_xyl_target_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6936 case LIGHT_XYL_DEFAULT_GET
:
6938 case LIGHT_XYL_DEFAULT_STATUS
:
6939 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_status_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6941 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_status_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6943 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_status_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6946 case LIGHT_XYL_RANGE_GET
:
6948 case LIGHT_XYL_RANGE_STATUS
:
6949 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_status_status_code
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6951 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_status_xyl_x_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6953 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_status_xyl_x_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6955 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_status_xyl_y_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6957 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_status_xyl_y_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6960 case LIGHT_XYL_DEFAULT_SET
:
6961 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6963 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6965 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6968 case LIGHT_XYL_DEFAULT_SET_UNACKNOWLEDGED
:
6969 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_unacknowledged_lightness
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6971 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_unacknowledged_xyl_x
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6973 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_default_set_unacknowledged_xyl_y
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6976 case LIGHT_XYL_RANGE_SET
:
6977 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_xyl_x_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6979 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_xyl_x_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6981 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_xyl_y_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6983 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_xyl_y_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6986 case LIGHT_XYL_RANGE_SET_UNACKNOWLEDGED
:
6987 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6989 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6991 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6993 proto_tree_add_item(sub_tree
, hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6996 case LIGHT_LC_MODE_GET
:
6998 case LIGHT_LC_MODE_SET
:
6999 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_mode_set_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7002 case LIGHT_LC_MODE_SET_UNACKNOWLEDGED
:
7003 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_mode_set_unacknowledged_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7006 case LIGHT_LC_MODE_STATUS
:
7007 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_mode_status_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7010 case LIGHT_LC_OM_GET
:
7012 case LIGHT_LC_OM_SET
:
7013 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_om_set_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7016 case LIGHT_LC_OM_SET_UNACKNOWLEDGED
:
7017 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_om_set_unacknowledged_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7020 case LIGHT_LC_OM_STATUS
:
7021 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_om_status_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7024 case LIGHT_LC_LIGHT_ONOFF_GET
:
7026 case LIGHT_LC_LIGHT_ONOFF_SET
:
7027 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_light_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7029 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7032 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7033 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7034 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
7035 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_set_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7036 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_set_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7038 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7042 case LIGHT_LC_LIGHT_ONOFF_SET_UNACKNOWLEDGED
:
7043 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_light_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7045 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_tid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7048 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7049 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7050 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
7051 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7052 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7054 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_set_unacknowledged_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7058 case LIGHT_LC_LIGHT_ONOFF_STATUS
:
7059 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_status_present_light_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7062 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7063 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_status_target_light_onoff
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7065 publishperiod_item
= proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_light_onoff_status_remaining_time
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7066 publishperiod_sub_tree
= proto_item_add_subtree(publishperiod_item
, ett_btmesh_config_model_publishperiod
);
7067 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_status_remaining_time_steps
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7068 proto_tree_add_item(publishperiod_sub_tree
, hf_btmesh_light_lc_light_onoff_status_remaining_time_resolution
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7072 case LIGHT_LC_PROPERTY_GET
:
7073 proto_tree_add_item(sub_tree
, hf_btmesh_light_lc_property_get_light_lc_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7076 case GENERIC_MANUFACTURER_PROPERTIES_GET
:
7078 case GENERIC_MANUFACTURER_PROPERTIES_STATUS
:
7079 manufacturer_property_ids_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_manufacturer_property_ids
, NULL
, "Manufacturer Property IDs");
7080 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7081 proto_tree_add_item(manufacturer_property_ids_tree
, hf_btmesh_generic_manufacturer_properties_status_manufacturer_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7085 case GENERIC_MANUFACTURER_PROPERTY_GET
:
7086 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_get_manufacturer_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7089 case GENERIC_MANUFACTURER_PROPERTY_SET
:
7090 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_set_manufacturer_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7092 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_set_manufacturer_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7095 case GENERIC_MANUFACTURER_PROPERTY_SET_UNACKNOWLEDGED
:
7096 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7098 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7101 case GENERIC_MANUFACTURER_PROPERTY_STATUS
:
7102 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_status_manufacturer_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7103 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7106 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7107 proto_tree_add_item(sub_tree
, hf_btmesh_generic_manufacturer_property_status_manufacturer_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7109 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_manufacturer_property_status_manufacturer_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7112 case GENERIC_ADMIN_PROPERTIES_GET
:
7114 case GENERIC_ADMIN_PROPERTIES_STATUS
:
7115 admin_property_ids_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_admin_property_ids
, NULL
, "Admin Property IDs");
7116 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7117 proto_tree_add_item(admin_property_ids_tree
, hf_btmesh_generic_admin_properties_status_admin_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7121 case GENERIC_ADMIN_PROPERTY_GET
:
7122 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_get_admin_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7125 case GENERIC_ADMIN_PROPERTY_SET
:
7126 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_set_admin_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7127 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7129 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_set_admin_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7131 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_admin_property_set_admin_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7133 case GENERIC_ADMIN_PROPERTY_SET_UNACKNOWLEDGED
:
7134 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7135 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7137 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_set_unacknowledged_admin_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7139 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7141 case GENERIC_ADMIN_PROPERTY_STATUS
:
7142 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_status_admin_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7143 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7146 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7147 proto_tree_add_item(sub_tree
, hf_btmesh_generic_admin_property_status_admin_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7149 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_admin_property_status_admin_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7152 case GENERIC_USER_PROPERTIES_GET
:
7154 case GENERIC_USER_PROPERTIES_STATUS
:
7155 user_property_ids_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_user_property_ids
, NULL
, "User Property IDs");
7156 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7157 proto_tree_add_item(user_property_ids_tree
, hf_btmesh_generic_user_properties_status_user_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7161 case GENERIC_USER_PROPERTY_GET
:
7162 proto_tree_add_item(sub_tree
, hf_btmesh_generic_user_property_get_user_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7165 case GENERIC_USER_PROPERTY_SET
:
7166 proto_tree_add_item(sub_tree
, hf_btmesh_generic_user_property_set_user_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7167 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7169 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_user_property_set_user_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7171 case GENERIC_USER_PROPERTY_SET_UNACKNOWLEDGED
:
7172 proto_tree_add_item(sub_tree
, hf_btmesh_generic_user_property_set_unacknowledged_user_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7173 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7175 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_user_property_set_unacknowledged_user_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7177 case GENERIC_USER_PROPERTY_STATUS
:
7178 proto_tree_add_item(sub_tree
, hf_btmesh_generic_user_property_status_user_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7179 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7182 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7183 proto_tree_add_item(sub_tree
, hf_btmesh_generic_user_property_status_user_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7185 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_generic_user_property_status_user_property_value
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7188 case GENERIC_CLIENT_PROPERTIES_GET
:
7189 proto_tree_add_item(sub_tree
, hf_btmesh_generic_client_properties_get_client_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7192 case GENERIC_CLIENT_PROPERTIES_STATUS
:
7193 generic_client_property_ids_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_generic_client_property_ids
, NULL
, "Client Property IDs");
7194 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7195 proto_tree_add_item(generic_client_property_ids_tree
, hf_btmesh_generic_client_properties_status_client_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7199 case SENSOR_DESCRIPTOR_GET
:
7201 if (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7202 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_get_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7206 case SENSOR_DESCRIPTOR_STATUS
:
7207 if (tvb_reported_length_remaining(tvb
, offset
) == 2) {
7208 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7211 while (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7212 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7214 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_positive_tolerance
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
7215 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_negative_tolerance
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
7217 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_sampling_function
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7219 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_measurement_period
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7221 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_descriptor_status_descriptor_sensor_update_interval
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7226 case SENSOR_CADENCE_GET
:
7227 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_get_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7230 case SENSOR_CADENCE_SET
:
7231 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7232 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7234 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_fast_cadence_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7235 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_status_trigger_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7236 trigger_type
= tvb_get_uint8(tvb
, offset
) >> 7;
7238 offset
+=dissect_sensor_cadence(sub_tree
, tvb
, offset
, property_id
, trigger_type
, &sensor_cadence_set_hfs
);
7240 case SENSOR_CADENCE_SET_UNACKNOWLEDGED
:
7241 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_unacknowledged_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7242 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7244 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7245 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7246 trigger_type
= tvb_get_uint8(tvb
, offset
) >> 7;
7249 offset
+=dissect_sensor_cadence(sub_tree
, tvb
, offset
, property_id
, trigger_type
, &sensor_cadence_set_unacknowledged_hfs
);
7251 case SENSOR_CADENCE_STATUS
:
7252 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_status_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7253 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7255 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_status_fast_cadence_period_divisor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7256 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_cadence_status_status_trigger_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7257 trigger_type
= tvb_get_uint8(tvb
, offset
) >> 7;
7259 offset
+=dissect_sensor_cadence(sub_tree
, tvb
, offset
, property_id
, trigger_type
, &sensor_cadence_status_hfs
);
7261 case SENSOR_SETTINGS_GET
:
7262 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_settings_get_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7265 case SENSOR_SETTINGS_STATUS
:
7266 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_settings_status_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7269 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7270 sensor_setting_property_ids_tree
= proto_tree_add_subtree(sub_tree
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ett_btmesh_sensor_setting_property_ids
, NULL
, "Sensor Setting Property IDs");
7271 while (tvb_reported_length_remaining(tvb
, offset
) > 1) {
7272 proto_tree_add_item(sensor_setting_property_ids_tree
, hf_btmesh_sensor_settings_status_sensor_setting_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7277 case SENSOR_SETTING_GET
:
7278 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_get_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7280 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_get_sensor_setting_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7283 case SENSOR_SETTING_SET
:
7284 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_set_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7286 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_set_sensor_setting_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7287 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7289 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_sensor_setting_set_sensor_setting_raw
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7291 case SENSOR_SETTING_SET_UNACKNOWLEDGED
:
7292 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_set_unacknowledged_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7294 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7295 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7297 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_raw
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7299 case SENSOR_SETTING_STATUS
:
7300 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_status_sensor_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7302 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_status_sensor_setting_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7303 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7306 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7307 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_setting_status_sensor_setting_access
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
7309 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_sensor_setting_status_sensor_setting_raw
, tvb
, offset
, property_id
, PROPERTY_LENGTH_NO_HINT
);
7314 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7315 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_get_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7321 while (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7322 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sensor_status_mpid_format
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
, &mpid_format
);
7323 if (mpid_format
== MPID_FORMAT_A
) {
7324 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sensor_status_mpid_format_a_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
, &mpid_length
);
7325 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sensor_status_mpid_format_a_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
, &mpid_property_id
);
7328 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sensor_status_mpid_format_b_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
, &mpid_length
);
7330 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sensor_status_mpid_format_b_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
, &mpid_property_id
);
7333 offset
+=dissect_btmesh_property(sub_tree
, hf_btmesh_sensor_status_raw_value
, tvb
, offset
, (uint16_t)mpid_property_id
, mpid_length
);
7336 case SENSOR_COLUMN_GET
:
7337 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_column_get_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7338 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7340 offset
+=dissect_columns_raw_value(sub_tree
, tvb
, offset
, property_id
, &sensor_column_get_hfs
);
7342 case SENSOR_COLUMN_STATUS
:
7343 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_column_status_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7344 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7346 offset
+=dissect_property_raw_value_entry(sub_tree
, tvb
, offset
, property_id
, &sensor_column_status_hfs
);
7348 case SENSOR_SERIES_GET
:
7349 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_series_get_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7350 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7353 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7354 offset
+=dissect_columns_raw_value(sub_tree
, tvb
, offset
, property_id
, &sensor_series_get_hfs
);
7357 case SENSOR_SERIES_STATUS
:
7358 //first property_id is manadatory
7359 proto_tree_add_item(sub_tree
, hf_btmesh_sensor_series_status_property_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
7360 property_id
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
7362 //Optional, dissect one or more values
7363 while (tvb_reported_length_remaining(tvb
, offset
) > 0) {
7364 offset
+=dissect_property_raw_value_entry(sub_tree
, tvb
, offset
, property_id
, &sensor_series_status_hfs
);
7368 // ******************************************************************************************
7371 if (tvb_reported_length_remaining(tvb
, offset
)) {
7372 proto_tree_add_item(sub_tree
, hf_btmesh_model_layer_parameters
, tvb
, offset
, -1, ENC_NA
);
7373 offset
+=tvb_reported_length_remaining(tvb
, offset
);
7376 /* Still some octets left */
7377 if (tvb_reported_length_remaining(tvb
, offset
)) {
7378 proto_tree_add_expert(sub_tree
, pinfo
, &ei_btmesh_unknown_payload
, tvb
, offset
, -1);
7383 dissect_btmesh_access_message(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int offset
)
7385 proto_tree
*sub_tree
;
7387 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, -1, ett_btmesh_access_pdu
, NULL
, "Access PDU");
7388 proto_tree_add_item(sub_tree
, hf_btmesh_decrypted_access
, tvb
, offset
, -1, ENC_NA
);
7390 dissect_btmesh_model_layer(tvb
, pinfo
, tree
, offset
);
7394 dissect_btmesh_transport_control_message(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int offset
, uint32_t opcode
)
7396 proto_tree
*sub_tree
;
7398 col_append_str(pinfo
->cinfo
, COL_INFO
,
7399 val_to_str_const(opcode
, btmesh_ctrl_opcode_vals
, "Control Message Unknown"));
7401 sub_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
, -1, ett_btmesh_transp_ctrl_msg
, NULL
, "Transport Control Message %s",
7402 val_to_str_const(opcode
, btmesh_ctrl_opcode_vals
, "Unknown"));
7406 /* 3.6.5.1 Friend Poll */
7407 /* Padding 7 bits */
7408 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_padding
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7410 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_fsn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7413 /* 3.6.5.2 Friend Update */
7415 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_key_refresh_flag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7416 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_iv_update_flag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7417 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_flags_rfu
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7419 /* IV Index 4 octets*/
7420 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_iv_index
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7423 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_md
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7427 /* Friend Request */
7428 /* Criteria 1 octet */
7430 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_criteria_rfu
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7431 /* RSSIFactor 2 bits */
7432 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_criteria_rssifactor
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7433 /* ReceiveWindowFactor 2 bits */
7434 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_criteria_receivewindowfactor
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7435 /* MinQueueSizeLog 3 bits */
7436 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_criteria_minqueuesizelog
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7438 /* ReceiveDelay 1 octet */
7439 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_receivedelay
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7441 /* PollTimeout 3 octets */
7442 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_polltimeout
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
7444 /* PreviousAddress 2 octets */
7445 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_previousaddress
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7447 /* NumElements 1 octets */
7448 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_numelements
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7450 /* LPNCounter 1 octets */
7451 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_lpncounter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7454 /* 3.6.5.4 Friend Offer */
7455 /* ReceiveWindow 1 octet */
7456 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_receivewindow
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7458 /* QueueSize 1 octet */
7459 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_queuesize
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7461 /* SubscriptionListSize 1 octet */
7462 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_subscriptionlistsize
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7465 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_rssi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7467 /* FriendCounter 2 octets */
7468 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_friendcounter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7471 /* 3.6.5.5 Friend Clear */
7472 /* LPNAddress 2 octets */
7473 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_lpnaddress
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7475 /* LPNCounter 2 octets */
7476 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_lpncounter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7479 /* 3.6.5.6 Friend Clear Confirm */
7480 /* LPNAddress 2 octets */
7481 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_lpnaddress
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7483 /* LPNCounter 2 octets */
7484 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_lpncounter
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7488 /* 3.6.5.7 Friend Subscription List Add */
7489 /* TransactionNumber 1 octet */
7490 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_transactionnumber
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7492 /* AddressList 2 * N */
7493 proto_tree_add_expert(sub_tree
, pinfo
, &ei_btmesh_not_decoded_yet
, tvb
, offset
, -1);
7496 /* 3.6.5.8 Friend Subscription List Remove */
7497 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_transactionnumber
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7499 /* AddressList 2 * N */
7500 proto_tree_add_expert(sub_tree
, pinfo
, &ei_btmesh_not_decoded_yet
, tvb
, offset
, -1);
7503 /* 3.6.5.9 Friend Subscription List Confirm */
7504 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_transactionnumber
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7508 /* 3.6.5.10 Heartbeat */
7510 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_heartbeat_rfu
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7511 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_init_ttl
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7514 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_feature_relay
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7515 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_feature_proxy
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7516 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_feature_friend
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7517 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_feature_low_power
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7518 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_feature_rfu
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7521 /* Unknown Control Message */
7522 proto_tree_add_item(sub_tree
, hf_btmesh_cntr_unknown_payload
, tvb
, offset
, -1, ENC_NA
);
7523 proto_tree_add_expert(sub_tree
, pinfo
, &ei_btmesh_not_decoded_yet
, tvb
, offset
, -1);
7529 try_access_decrypt(tvbuff_t
*tvb
, int offset
, uint8_t *decrypted_data
, int enc_data_len
, uint8_t *key
, network_decryption_ctx_t
*dec_ctx
)
7531 uint8_t accessnonce
[13];
7532 gcry_cipher_hd_t cipher_hd
;
7533 gcry_error_t gcrypt_err
;
7534 uint64_t ccm_lengths
[3];
7537 accessnonce
[0] = dec_ctx
->app_nonce_type
;
7538 accessnonce
[1] = (dec_ctx
->transmic_size
== 4 ? 0x00 : 0x80 );
7539 memcpy((uint8_t *)&accessnonce
+ 2, dec_ctx
->seq_src_buf
, 5);
7541 accessnonce
[2] = (dec_ctx
->seqzero
& 0xff0000 ) >> 16;
7542 accessnonce
[3] = (dec_ctx
->seqzero
& 0x00ff00 ) >> 8;
7543 accessnonce
[4] = (dec_ctx
->seqzero
& 0x0000ff );
7545 memcpy((uint8_t *)&accessnonce
+ 7, dec_ctx
->dst_buf
, sizeof(dec_ctx
->dst_buf
));
7546 memcpy((uint8_t *)&accessnonce
+ 9, dec_ctx
->ivindex_buf
, sizeof(dec_ctx
->ivindex_buf
));
7548 /* Decrypt packet EXPERIMENTAL CODE */
7549 if (gcry_cipher_open(&cipher_hd
, GCRY_CIPHER_AES128
, GCRY_CIPHER_MODE_CCM
, 0)) {
7553 gcrypt_err
= gcry_cipher_setkey(cipher_hd
, key
, 16);
7554 if (gcrypt_err
!= 0) {
7555 gcry_cipher_close(cipher_hd
);
7559 gcrypt_err
= gcry_cipher_setiv(cipher_hd
, &accessnonce
, 13);
7560 if (gcrypt_err
!= 0) {
7561 gcry_cipher_close(cipher_hd
);
7564 ccm_lengths
[0] = enc_data_len
;
7565 ccm_lengths
[1] = (dec_ctx
->label_uuid_idx
== NO_LABEL_UUID_IDX_USED
? 0 : 16);
7566 ccm_lengths
[2] = dec_ctx
->transmic_size
;
7568 gcrypt_err
= gcry_cipher_ctl(cipher_hd
, GCRYCTL_SET_CCM_LENGTHS
, ccm_lengths
, sizeof(ccm_lengths
));
7569 if (gcrypt_err
!= 0) {
7570 gcry_cipher_close(cipher_hd
);
7574 if (dec_ctx
->label_uuid_idx
!= NO_LABEL_UUID_IDX_USED
) {
7575 gcrypt_err
= gcry_cipher_authenticate(cipher_hd
, uat_btmesh_label_uuid_records
[dec_ctx
->label_uuid_idx
].label_uuid
, 16);
7576 if (gcrypt_err
!= 0) {
7577 gcry_cipher_close(cipher_hd
);
7583 gcrypt_err
= gcry_cipher_decrypt(cipher_hd
, decrypted_data
, enc_data_len
, tvb_get_ptr(tvb
, offset
, enc_data_len
), enc_data_len
);
7584 if (gcrypt_err
!= 0) {
7585 gcry_cipher_close(cipher_hd
);
7589 tag
= (uint8_t *)wmem_alloc(wmem_packet_scope(), dec_ctx
->transmic_size
);
7590 gcrypt_err
= gcry_cipher_gettag(cipher_hd
, tag
, dec_ctx
->transmic_size
);
7591 gcry_cipher_close(cipher_hd
);
7593 if (gcrypt_err
!= 0 || memcmp(tag
, tvb_get_ptr(tvb
, offset
+ enc_data_len
, dec_ctx
->transmic_size
), dec_ctx
->transmic_size
)) {
7594 /* Tag mismatch or cipher error */
7597 /* Tag authenticated */
7602 check_address_type(uint32_t btmesh_address
)
7604 if (btmesh_address
& 0x8000 ) {
7605 if (btmesh_address
& 0x4000) {
7606 return BTMESH_ADDRESS_GROUP
;
7608 return BTMESH_ADDRESS_VIRTUAL
;
7610 if (btmesh_address
) {
7611 return BTMESH_ADDRESS_UNICAST
;
7613 return BTMESH_ADDRESS_UNASSIGNED
;
7618 btmesh_access_find_key_and_decrypt(tvbuff_t
*tvb
, packet_info
*pinfo
, int offset
, network_decryption_ctx_t
*dec_ctx
)
7620 unsigned i
, j
, dst_address_type
;
7621 uat_btmesh_record_t
*record
;
7622 uat_btmesh_dev_key_record_t
*dev_record
;
7623 uat_btmesh_label_uuid_record_t
*label_record
;
7625 uint8_t *decrypted_data
;
7627 enc_data_len
= tvb_reported_length_remaining(tvb
, offset
) - dec_ctx
->transmic_size
;
7628 decrypted_data
= (uint8_t *)wmem_alloc(pinfo
->pool
, enc_data_len
);
7629 dec_ctx
->label_uuid_idx
= NO_LABEL_UUID_IDX_USED
;
7631 if (enc_data_len
<= 0) {
7635 dst_address_type
= check_address_type(dec_ctx
->dst
);
7637 /* Application key */
7638 if (dec_ctx
->app_nonce_type
== BTMESH_NONCE_TYPE_APPLICATION
) {
7639 for (i
= 0; i
< num_btmesh_uat
; i
++) {
7640 record
= &uat_btmesh_records
[i
];
7641 if (record
->valid
== BTMESH_KEY_ENTRY_VALID
) {
7642 if (dec_ctx
->net_key_iv_index_hash
== record
->net_key_iv_index_hash
&& dec_ctx
->aid
== record
->aid
) {
7643 /* Try Label UUID */
7644 if (dst_address_type
== BTMESH_ADDRESS_VIRTUAL
) {
7645 for (j
= 0; j
< num_btmesh_label_uuid_uat
; j
++) {
7646 label_record
= &uat_btmesh_label_uuid_records
[j
];
7647 if (label_record
->valid
== BTMESH_LABEL_UUID_ENTRY_VALID
&& label_record
->hash
== dec_ctx
->dst
) {
7648 dec_ctx
->label_uuid_idx
= j
;
7649 if (try_access_decrypt(tvb
, offset
, decrypted_data
, enc_data_len
, record
->application_key
, dec_ctx
)) {
7650 return tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
7655 if (try_access_decrypt(tvb
, offset
, decrypted_data
, enc_data_len
, record
->application_key
, dec_ctx
)) {
7656 return tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
7664 if (dec_ctx
->app_nonce_type
== BTMESH_NONCE_TYPE_DEVICE
) {
7665 for (i
= 0; i
< num_btmesh_dev_key_uat
; i
++) {
7666 dev_record
= &uat_btmesh_dev_key_records
[i
];
7667 if (dev_record
->valid
== BTMESH_DEVICE_KEY_ENTRY_VALID
) {
7668 /* Try Device Key from SRC */
7669 if ( !memcmp(dev_record
->src
, dec_ctx
->seq_src_buf
+ 3, 2) ) {
7670 /* Try Label UUID */
7671 if (dst_address_type
== BTMESH_ADDRESS_VIRTUAL
) {
7672 for (j
= 0; j
< num_btmesh_label_uuid_uat
; j
++) {
7673 label_record
= &uat_btmesh_label_uuid_records
[j
];
7674 if (label_record
->valid
== BTMESH_LABEL_UUID_ENTRY_VALID
&& label_record
->hash
== dec_ctx
->dst
) {
7675 dec_ctx
->label_uuid_idx
= j
;
7676 if (try_access_decrypt(tvb
, offset
, decrypted_data
, enc_data_len
, dev_record
->device_key
, dec_ctx
)) {
7677 return tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
7682 if (try_access_decrypt(tvb
, offset
, decrypted_data
, enc_data_len
, dev_record
->device_key
, dec_ctx
)) {
7683 return tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
7687 /* Try Device Key from DST when DST is a unicast address */
7688 if (dst_address_type
== BTMESH_ADDRESS_UNICAST
) {
7689 if ( !memcmp(dev_record
->src
, dec_ctx
->dst_buf
, 2) ) {
7690 if (try_access_decrypt(tvb
, offset
, decrypted_data
, enc_data_len
, dev_record
->device_key
, dec_ctx
)) {
7691 return tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
7702 dissect_btmesh_transport_access_message(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int offset
, network_decryption_ctx_t
*dec_ctx
)
7704 tvbuff_t
*de_acc_tvb
;
7705 proto_tree
*sub_tree
;
7707 int length
= tvb_reported_length_remaining(tvb
, offset
);
7709 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, -1, ett_btmesh_upper_transp_acc_pdu
, NULL
, "Upper Transport Access PDU");
7710 de_acc_tvb
= btmesh_access_find_key_and_decrypt(tvb
, pinfo
, offset
, dec_ctx
);
7712 proto_tree_add_item(sub_tree
, hf_btmesh_enc_access_pld
, tvb
, offset
, length
- dec_ctx
->transmic_size
, ENC_NA
);
7713 offset
+= (length
- dec_ctx
->transmic_size
);
7715 proto_tree_add_item(sub_tree
, hf_btmesh_transtmic
, tvb
, offset
, dec_ctx
->transmic_size
, ENC_NA
);
7718 add_new_data_source(pinfo
, de_acc_tvb
, "Decrypted access data");
7719 dissect_btmesh_access_message(de_acc_tvb
, pinfo
, tree
, 0);
7724 dissect_btmesh_transport_pdu(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, bool cntrl
, network_decryption_ctx_t
*dec_ctx
)
7726 proto_tree
*sub_tree
;
7729 uint32_t seg
, opcode
, rfu
;
7730 uint32_t seqzero
, sego
, segn
;
7732 /* We receive the full decrypted buffer including DST, skip to opcode */
7734 sub_tree
= proto_tree_add_subtree(tree
, tvb
, offset
, -1, ett_btmesh_transp_pdu
, &ti
, "Lower Transport PDU");
7736 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_cntr_seg
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &seg
);
7737 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_cntr_opcode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &opcode
);
7742 fragment_head
*fd_head
= NULL
;
7745 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_seg_rfu
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &rfu
);
7747 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_seqzero_data
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &seqzero
);
7748 /* SegO 5 Segment Offset number */
7749 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sego
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &sego
);
7750 /* SegN 5 Last Segment number */
7751 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_segn
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &segn
);
7755 proto_tree_add_item(sub_tree
, hf_btmesh_segment
, tvb
, offset
, -1, ENC_NA
);
7757 /* Use 13 Lsbs from seqzero */
7758 dec_ctx
->seqzero
= dec_ctx
->seq
;
7759 /* Check for overflow */
7760 if ((dec_ctx
->seq
& 0x1fff) < seqzero
) {
7761 dec_ctx
->seqzero
-= 0x2000;
7763 dec_ctx
->seqzero
= dec_ctx
->seqzero
& ~0x1fff;
7764 dec_ctx
->seqzero
+= seqzero
;
7767 dissect_btmesh_transport_control_message(tvb
, pinfo
, tree
, offset
, opcode
);
7769 upper_transport_fragment_key frg_key
;
7770 frg_key
.src
= dec_ctx
->src
;
7771 frg_key
.net_key_iv_index_hash
= dec_ctx
->net_key_iv_index_hash
;
7772 memcpy(&frg_key
.ivindex
, dec_ctx
->ivindex_buf
, sizeof(frg_key
.ivindex
));
7773 frg_key
.seq0
= dec_ctx
->seqzero
;
7775 if (!pinfo
->fd
->visited
) {
7776 uint32_t total_length
= 0;
7778 total_length
= segn
* 8 + tvb_captured_length_remaining(tvb
, offset
);
7781 /* Last fragment can be delivered out of order, and can be the first one. */
7782 fd_head
= fragment_get(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
);
7784 if ((fd_head
) && (total_length
)) {
7785 fragment_set_tot_len(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
, total_length
);
7787 fd_head
= fragment_add(&upper_transport_reassembly_table
,
7789 BTMESH_NOT_USED
, &frg_key
,
7791 tvb_captured_length_remaining(tvb
, offset
),
7792 ( segn
== 0 ? false : true) );
7794 if ((!fd_head
) && (total_length
)) {
7795 fragment_set_tot_len(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
, total_length
);
7798 fd_head
= fragment_get(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
);
7799 if (fd_head
&& (fd_head
->flags
&FD_DEFRAGMENTED
)) {
7801 next_tvb
= process_reassembled_data(tvb
, offset
, pinfo
, "Reassembled Control PDU", fd_head
, &btmesh_segmented_control_frag_items
, NULL
, sub_tree
);
7803 dissect_btmesh_transport_control_message(next_tvb
, pinfo
, tree
, 0, opcode
);
7804 col_append_str(pinfo
->cinfo
, COL_INFO
, " (Message Reassembled)");
7806 col_clear(pinfo
->cinfo
, COL_INFO
);
7807 col_append_fstr(pinfo
->cinfo
, COL_INFO
,"Control Message (fragment %u)", sego
);
7814 col_clear(pinfo
->cinfo
, COL_INFO
);
7815 col_append_str(pinfo
->cinfo
, COL_INFO
,
7816 val_to_str_const(opcode
, btmesh_ctrl_opcode_vals
, "Control Message Unknown"));
7818 proto_tree_add_item(sub_tree
, hf_btmesh_obo
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7820 proto_tree_add_item(sub_tree
, hf_btmesh_seqzero
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7822 proto_tree_add_item(sub_tree
, hf_btmesh_rfu
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7825 proto_tree_add_item(sub_tree
, hf_btmesh_blockack
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7828 dissect_btmesh_transport_control_message(tvb
, pinfo
, tree
, offset
, opcode
);
7831 /* Access message */
7832 uint32_t afk
, aid
, szmic
;
7833 /* Access message */
7834 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_acc_seg
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &seg
);
7835 /* AKF 1 Application Key Flag */
7836 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_acc_akf
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &afk
);
7837 /* AID 6 Application key identifier */
7838 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_acc_aid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &aid
);
7843 dec_ctx
->app_nonce_type
= (afk
? BTMESH_NONCE_TYPE_APPLICATION
: BTMESH_NONCE_TYPE_DEVICE
);
7847 fragment_head
*fd_head
= NULL
;
7849 /* SZMIC 1 Size of TransMIC */
7850 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_szmic
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &szmic
);
7851 /* SeqZero 13 Least significant bits of SeqAuth */
7852 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_seqzero_data
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &seqzero
);
7853 /* SegO 5 Segment Offset number */
7854 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_sego
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &sego
);
7855 /* SegN 5 Last Segment number */
7856 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_segn
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &segn
);
7859 /* Segment m 8 to 96 Segment m of the Upper Transport Access PDU */
7860 proto_tree_add_item(sub_tree
, hf_btmesh_segment
, tvb
, offset
, -1, ENC_NA
);
7862 /* Use 13 Lsbs from seqzero */
7863 dec_ctx
->seqzero
= dec_ctx
->seq
;
7864 /* Check for overflow */
7865 if ((dec_ctx
->seq
& 0x1fff) < seqzero
) {
7866 dec_ctx
->seqzero
-= 0x2000;
7868 dec_ctx
->seqzero
= dec_ctx
->seqzero
& ~0x1fff;
7869 dec_ctx
->seqzero
+= seqzero
;
7872 proto_item_set_len(ti
, 1);
7873 dec_ctx
->transmic_size
= 4; /*TransMic is 32 bits*/
7874 dissect_btmesh_transport_access_message(tvb
, pinfo
, tree
, offset
, dec_ctx
);
7876 upper_transport_fragment_key frg_key
;
7877 frg_key
.src
= dec_ctx
->src
;
7878 frg_key
.net_key_iv_index_hash
= dec_ctx
->net_key_iv_index_hash
;
7879 memcpy(&frg_key
.ivindex
, dec_ctx
->ivindex_buf
, sizeof(frg_key
.ivindex
));
7880 frg_key
.seq0
= dec_ctx
->seqzero
;
7882 if (!pinfo
->fd
->visited
) {
7883 uint32_t total_length
= 0;
7885 total_length
= segn
* 12 + tvb_captured_length_remaining(tvb
, offset
);
7888 /* Last fragment can be delivered out of order, and can be the first one. */
7889 fd_head
= fragment_get(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
);
7891 if ((fd_head
) && (total_length
)) {
7892 fragment_set_tot_len(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
, total_length
);
7894 fd_head
= fragment_add(&upper_transport_reassembly_table
,
7896 BTMESH_NOT_USED
, &frg_key
,
7898 tvb_captured_length_remaining(tvb
, offset
),
7899 ( segn
== 0 ? false : true) );
7901 if ((!fd_head
) && (total_length
)) {
7902 fragment_set_tot_len(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
, total_length
);
7905 fd_head
= fragment_get(&upper_transport_reassembly_table
, pinfo
, BTMESH_NOT_USED
, &frg_key
);
7906 if (fd_head
&& (fd_head
->flags
&FD_DEFRAGMENTED
)) {
7908 next_tvb
= process_reassembled_data(tvb
, offset
, pinfo
, "Reassembled Access PDU", fd_head
, &btmesh_segmented_access_frag_items
, NULL
, sub_tree
);
7910 dec_ctx
->transmic_size
= (szmic
? 8 : 4 );
7911 dissect_btmesh_transport_access_message(next_tvb
, pinfo
, tree
, 0, dec_ctx
);
7912 col_append_str(pinfo
->cinfo
, COL_INFO
, " (Message Reassembled)");
7914 col_clear(pinfo
->cinfo
, COL_INFO
);
7915 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "Access Message (fragment %u)", sego
);
7921 proto_item_set_len(ti
, 1);
7922 dec_ctx
->transmic_size
= 4; /*TransMic is 32 bits*/
7923 dissect_btmesh_transport_access_message(tvb
, pinfo
, tree
, offset
, dec_ctx
);
7929 btmesh_network_find_key_and_decrypt(tvbuff_t
*tvb
, packet_info
*pinfo
, uint8_t **decrypted_data
, int *enc_data_len
, network_decryption_ctx_t
*dec_ctx
) {
7933 tvbuff_t
*de_obf_tvb
;
7934 uint8_t networknonce
[13];
7935 uat_btmesh_record_t
*record
;
7936 gcry_cipher_hd_t cipher_hd
;
7937 uint32_t net_mic_size
;
7938 gcry_error_t gcrypt_err
;
7939 uint64_t ccm_lengths
[3];
7942 nid
= tvb_get_uint8(tvb
, offset
) & 0x7f;
7944 /* Get the next record to try */
7945 for (i
= 0; i
< num_btmesh_uat
; i
++) {
7946 record
= &uat_btmesh_records
[i
];
7947 if (record
->valid
== BTMESH_KEY_ENTRY_VALID
&& nid
== record
->nid
) {
7949 de_obf_tvb
= btmesh_deobfuscate(tvb
, pinfo
, offset
, record
);
7951 if (de_obf_tvb
== NULL
) {
7954 net_mic_size
= (((tvb_get_uint8(de_obf_tvb
, 0) & 0x80) >> 7 ) + 1 ) * 4; /* CTL */
7957 (*enc_data_len
) = tvb_reported_length(tvb
) - offset
- net_mic_size
;
7958 enc_offset
= offset
;
7960 /* Start setting network nonce.*/
7961 networknonce
[0] = dec_ctx
->net_nonce_type
; /* Nonce Type */
7963 tvb_memcpy(de_obf_tvb
, (uint8_t *)&networknonce
+ 1, 0, 6);
7964 if (dec_ctx
->net_nonce_type
== BTMESH_NONCE_TYPE_PROXY
) {
7965 networknonce
[1] = 0x00; /*Pad*/
7967 networknonce
[7] = 0x00; /*Pad*/
7968 networknonce
[8] = 0x00; /*Pad*/
7970 memcpy((uint8_t *)&networknonce
+ 9, record
->ivindex
, 4);
7971 /* Decrypt packet EXPERIMENTAL CODE */
7972 if (gcry_cipher_open(&cipher_hd
, GCRY_CIPHER_AES128
, GCRY_CIPHER_MODE_CCM
, 0)) {
7976 gcrypt_err
= gcry_cipher_setkey(cipher_hd
, record
->encryptionkey
, 16);
7977 if (gcrypt_err
!= 0) {
7978 gcry_cipher_close(cipher_hd
);
7983 gcrypt_err
= gcry_cipher_setiv(cipher_hd
, &networknonce
, 13);
7984 if (gcrypt_err
!= 0) {
7985 gcry_cipher_close(cipher_hd
);
7989 ccm_lengths
[0] = (*enc_data_len
);
7990 ccm_lengths
[1] = 0; /* aad */
7991 ccm_lengths
[2] = net_mic_size
; /* icv */
7993 gcrypt_err
= gcry_cipher_ctl(cipher_hd
, GCRYCTL_SET_CCM_LENGTHS
, ccm_lengths
, sizeof(ccm_lengths
));
7994 if (gcrypt_err
!= 0) {
7995 gcry_cipher_close(cipher_hd
);
7999 (*decrypted_data
) = (uint8_t *)wmem_alloc(pinfo
->pool
, *enc_data_len
);
8001 gcrypt_err
= gcry_cipher_decrypt(cipher_hd
, (*decrypted_data
), *enc_data_len
, tvb_get_ptr(tvb
, enc_offset
, *enc_data_len
), *enc_data_len
);
8002 if (gcrypt_err
!= 0) {
8003 gcry_cipher_close(cipher_hd
);
8008 tag
= (uint8_t *)wmem_alloc(pinfo
->pool
, net_mic_size
);
8009 gcrypt_err
= gcry_cipher_gettag(cipher_hd
, tag
, net_mic_size
);
8011 if (gcrypt_err
== 0 && !memcmp(tag
, tvb_get_ptr(tvb
, enc_offset
+ (*enc_data_len
), net_mic_size
), net_mic_size
)) {
8012 /* Tag authenticated, now close the cypher handle */
8013 gcry_cipher_close(cipher_hd
);
8014 dec_ctx
->net_key_iv_index_hash
= record
->net_key_iv_index_hash
;
8015 memcpy(dec_ctx
->ivindex_buf
, record
->ivindex
, sizeof(dec_ctx
->ivindex_buf
));
8019 /* Now close the cypher handle */
8020 gcry_cipher_close(cipher_hd
);
8022 /* Tag mismatch or cipher error */
8031 dissect_btmesh_msg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8034 proto_tree
*netw_tree
, *sub_tree
;
8036 uint32_t net_mic_size
, seq
, src
, dst
;
8037 int enc_data_len
= 0;
8038 tvbuff_t
*de_obf_tvb
;
8039 tvbuff_t
*de_cry_tvb
;
8041 uint8_t *decrypted_data
= NULL
;
8042 network_decryption_ctx_t
*dec_ctx
;
8044 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "BT Mesh");
8046 item
= proto_tree_add_item(tree
, proto_btmesh
, tvb
, offset
, -1, ENC_NA
);
8047 netw_tree
= proto_item_add_subtree(item
, ett_btmesh
);
8049 sub_tree
= proto_tree_add_subtree(netw_tree
, tvb
, offset
, -1, ett_btmesh_net_pdu
, NULL
, "Network PDU");
8050 /* Check length >= , if not error packet */
8051 /* First byte in plaintext */
8052 /* IVI 1 bit Least significant bit of IV Index */
8053 proto_tree_add_item(sub_tree
, hf_btmesh_ivi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8054 proto_tree_add_item(sub_tree
, hf_btmesh_nid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8057 dec_ctx
= wmem_new(pinfo
->pool
, network_decryption_ctx_t
);
8058 dec_ctx
->net_nonce_type
= BTMESH_NONCE_TYPE_NETWORK
;
8060 de_obf_tvb
= btmesh_network_find_key_and_decrypt(tvb
, pinfo
, &decrypted_data
, &enc_data_len
, dec_ctx
);
8063 add_new_data_source(pinfo
, de_obf_tvb
, "Deobfuscated data");
8067 /* CTL 1 bit Network Control*/
8068 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_ctl
, de_obf_tvb
, 0, 1, ENC_BIG_ENDIAN
, &net_mic_size
);
8069 /* 32 or 64 bits ( 0 or 1 )*/
8070 cntrl
= net_mic_size
;
8071 net_mic_size
= (net_mic_size
+ 1) * 4;
8072 /* The TTL field is a 7-bit field */
8073 proto_tree_add_item(sub_tree
, hf_btmesh_ttl
, de_obf_tvb
, 0, 1, ENC_BIG_ENDIAN
);
8075 /* SEQ field is a 24-bit integer */
8076 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_seq
, de_obf_tvb
, 1, 3, ENC_BIG_ENDIAN
, &seq
);
8078 /* SRC field is a 16-bit value */
8079 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_src
, de_obf_tvb
, 4, 2, ENC_BIG_ENDIAN
, &src
);
8082 de_cry_tvb
= tvb_new_child_real_data(tvb
, decrypted_data
, enc_data_len
, enc_data_len
);
8083 add_new_data_source(pinfo
, de_cry_tvb
, "Decrypted network data");
8086 proto_tree_add_item_ret_uint(sub_tree
, hf_btmesh_dst
, de_cry_tvb
, decry_off
, 2, ENC_BIG_ENDIAN
, &dst
);
8089 proto_tree_add_item(sub_tree
, hf_btmesh_transp_pdu
, de_cry_tvb
, decry_off
, enc_data_len
-2, ENC_NA
);
8090 offset
+= enc_data_len
;
8092 proto_tree_add_item(sub_tree
, hf_btmesh_netmic
, tvb
, offset
, net_mic_size
, ENC_BIG_ENDIAN
);
8093 offset
+= net_mic_size
;
8099 tvb_memcpy(de_obf_tvb
, dec_ctx
->seq_src_buf
, 1, 5);
8100 tvb_memcpy(de_cry_tvb
, dec_ctx
->dst_buf
, 0, 2);
8102 dissect_btmesh_transport_pdu(de_cry_tvb
, pinfo
, netw_tree
, cntrl
, dec_ctx
);
8105 proto_tree_add_item(sub_tree
, hf_btmesh_obfuscated
, tvb
, offset
, 6, ENC_NA
);
8108 proto_tree_add_item(sub_tree
, hf_btmesh_encrypted
, tvb
, offset
, -1, ENC_NA
);
8109 offset
= tvb_reported_length(tvb
);
8116 compute_ascii_key(unsigned char **ascii_key
, const char *key
, const char *key_name
, unsigned expected_octets
, char **err
)
8118 unsigned key_len
= 0, raw_key_len
;
8120 unsigned char key_byte
;
8125 raw_key_len
= (unsigned)strlen(key
);
8126 if (((raw_key_len
== expected_octets
* 2 + 2) || (raw_key_len
== expected_octets
* 2 + 1)) &&
8128 && ((key
[1] == 'x') || (key
[1] == 'X')))
8131 * Key begins with "0x" or "0X"; skip that and treat the rest
8132 * as a sequence of hex digits.
8134 i
= 2; /* first character after "0[Xx]" */
8136 if (raw_key_len
% 2 == 1)
8139 * Key has an odd number of characters; we act as if the
8140 * first character had a 0 in front of it, making the
8141 * number of characters even.
8143 key_len
= (raw_key_len
- 2) / 2 + 1;
8144 *ascii_key
= (unsigned char *)g_malloc((key_len
+ 1) * sizeof(char));
8145 hex_digit
= g_ascii_xdigit_value(key
[i
]);
8147 if (hex_digit
== -1)
8151 *err
= ws_strdup_printf("Key %s begins with an invalid hex char (%c)", key
, key
[i
]);
8152 return -1; /* not a valid hex digit */
8154 (*ascii_key
)[j
] = (unsigned char)hex_digit
;
8160 * Key has an even number of characters, so we treat each
8161 * pair of hex digits as a single byte value.
8163 key_len
= (raw_key_len
- 2) / 2;
8164 *ascii_key
= (unsigned char *)g_malloc((key_len
+ 1) * sizeof(char));
8166 while (i
< (raw_key_len
- 1))
8168 hex_digit
= g_ascii_xdigit_value(key
[i
]);
8170 if (hex_digit
== -1)
8174 *err
= ws_strdup_printf("%s %s has an invalid hex char (%c)", key_name
, key
, key
[i
-1]);
8175 return -1; /* not a valid hex digit */
8177 key_byte
= ((unsigned char)hex_digit
) << 4;
8178 hex_digit
= g_ascii_xdigit_value(key
[i
]);
8180 if (hex_digit
== -1)
8184 *err
= ws_strdup_printf("%s %s has an invalid hex char (%c)", key_name
, key
, key
[i
-1]);
8185 return -1; /* not a valid hex digit */
8187 key_byte
|= (unsigned char)hex_digit
;
8188 (*ascii_key
)[j
] = key_byte
;
8191 (*ascii_key
)[j
] = '\0';
8194 *err
= ws_strdup_printf("%s %s has to start with '0x' or '0X', and represent exactly %d octets", key_name
, key
, expected_octets
);
8202 uat_btmesh_record_update_cb(void *r
, char **err
)
8204 uat_btmesh_record_t
*rec
= (uat_btmesh_record_t
*)r
;
8208 /* Compute keys & lengths once and for all */
8209 if (rec
->network_key_string
) {
8210 g_free(rec
->network_key
);
8211 rec
->network_key_length
= compute_ascii_key(&rec
->network_key
, rec
->network_key_string
, "Network Key", 16, err
);
8212 g_free(rec
->encryptionkey
);
8213 rec
->encryptionkey
= g_new(uint8_t, 16);
8214 memset(rec
->encryptionkey
, 0, 16 * sizeof(uint8_t));
8215 g_free(rec
->privacykey
);
8216 rec
->privacykey
= g_new(uint8_t, 16);
8217 if (*err
== NULL
&& create_central_security_keys(rec
)) {
8221 rec
->network_key_length
= 0;
8222 rec
->network_key
= NULL
;
8224 if (*err
== NULL
&& rec
->application_key_string
) {
8225 g_free(rec
->application_key
);
8226 rec
->application_key_length
= compute_ascii_key(&rec
->application_key
, rec
->application_key_string
, "Application Key", 16, err
);
8228 if (*err
== NULL
&& k4(rec
)) {
8232 rec
->application_key_length
= 0;
8233 rec
->application_key
= NULL
;
8235 if (*err
== NULL
&& rec
->ivindex_string
) {
8236 g_free(rec
->ivindex
);
8237 rec
->ivindex_string_length
= compute_ascii_key(&rec
->ivindex
, rec
->ivindex_string
, "IVindex", 4, err
);
8242 if (rec
->valid
== BTMESH_KEY_ENTRY_VALID
- 1) {
8243 /* Compute net_key_index_hash */
8244 const uint8_t hash_buf_len
= 16 + 4;
8246 uint8_t* hash_buf
= (uint8_t *)g_malloc(hash_buf_len
);
8247 memcpy(hash_buf
, rec
->encryptionkey
, 16);
8249 memcpy(&hash_buf
[idx
], rec
->ivindex
, 4);
8250 rec
->net_key_iv_index_hash
= wmem_strong_hash(hash_buf
, hash_buf_len
);
8254 return rec
->valid
== BTMESH_KEY_ENTRY_VALID
;
8258 uat_btmesh_record_copy_cb(void *n
, const void *o
, size_t siz _U_
)
8260 uat_btmesh_record_t
*new_rec
= (uat_btmesh_record_t
*)n
;
8261 const uat_btmesh_record_t
* old_rec
= (const uat_btmesh_record_t
*)o
;
8263 memset(new_rec
, 0x00, sizeof(uat_btmesh_record_t
));
8265 /* Copy UAT fields */
8266 new_rec
->network_key_string
= g_strdup(old_rec
->network_key_string
);
8267 new_rec
->application_key_string
= g_strdup(old_rec
->application_key_string
);
8268 new_rec
->ivindex_string
= g_strdup(old_rec
->ivindex_string
);
8270 /* Parse keys as in an update */
8272 uat_btmesh_record_update_cb(new_rec
, &err
);
8280 uat_btmesh_record_free_cb(void *r
)
8282 uat_btmesh_record_t
*rec
= (uat_btmesh_record_t
*)r
;
8284 g_free(rec
->network_key_string
);
8285 g_free(rec
->network_key
);
8286 g_free(rec
->application_key_string
);
8287 g_free(rec
->application_key
);
8288 g_free(rec
->ivindex_string
);
8289 g_free(rec
->ivindex
);
8290 g_free(rec
->privacykey
);
8291 g_free(rec
->encryptionkey
);
8294 UAT_CSTRING_CB_DEF(uat_btmesh_records
, network_key_string
, uat_btmesh_record_t
)
8295 UAT_CSTRING_CB_DEF(uat_btmesh_records
, application_key_string
, uat_btmesh_record_t
)
8296 UAT_CSTRING_CB_DEF(uat_btmesh_records
, ivindex_string
, uat_btmesh_record_t
)
8299 uat_btmesh_dev_key_record_update_cb(void *r
, char **err
)
8301 uat_btmesh_dev_key_record_t
*rec
= (uat_btmesh_dev_key_record_t
*)r
;
8305 /* Compute key & lengths once and for all */
8306 if (rec
->device_key_string
) {
8307 g_free(rec
->device_key
);
8308 rec
->device_key_length
= compute_ascii_key(&rec
->device_key
, rec
->device_key_string
, "Device Key", 16, err
);
8313 rec
->device_key_length
= 0;
8314 rec
->device_key
= NULL
;
8316 if (*err
== NULL
&& rec
->src_string
) {
8318 rec
->src_length
= compute_ascii_key(&rec
->src
, rec
->src_string
, "SRC Address", 2, err
);
8323 rec
->src_length
= 0;
8326 return rec
->valid
== BTMESH_DEVICE_KEY_ENTRY_VALID
;
8330 uat_btmesh_dev_key_record_copy_cb(void *n
, const void *o
, size_t siz _U_
)
8332 uat_btmesh_dev_key_record_t
*new_rec
= (uat_btmesh_dev_key_record_t
*)n
;
8333 const uat_btmesh_dev_key_record_t
* old_rec
= (const uat_btmesh_dev_key_record_t
*)o
;
8335 memset(new_rec
, 0x00, sizeof(uat_btmesh_dev_key_record_t
));
8337 /* Copy UAT fields */
8338 new_rec
->device_key_string
= g_strdup(old_rec
->device_key_string
);
8339 new_rec
->src_string
= g_strdup(old_rec
->src_string
);
8341 /* Parse key and src as in an update */
8343 uat_btmesh_dev_key_record_update_cb(new_rec
, &err
);
8351 uat_btmesh_dev_key_record_free_cb(void *r
)
8353 uat_btmesh_dev_key_record_t
*rec
= (uat_btmesh_dev_key_record_t
*)r
;
8355 g_free(rec
->device_key_string
);
8356 g_free(rec
->device_key
);
8357 g_free(rec
->src_string
);
8361 UAT_CSTRING_CB_DEF(uat_btmesh_dev_key_records
, device_key_string
, uat_btmesh_dev_key_record_t
)
8362 UAT_CSTRING_CB_DEF(uat_btmesh_dev_key_records
, src_string
, uat_btmesh_dev_key_record_t
)
8365 uat_btmesh_label_uuid_record_update_cb(void *r
, char **err
)
8367 uat_btmesh_label_uuid_record_t
*rec
= (uat_btmesh_label_uuid_record_t
*)r
;
8371 /* Compute label UUID & lengths */
8372 if (rec
->label_uuid_string
) {
8373 g_free(rec
->label_uuid
);
8374 rec
->label_uuid_length
= compute_ascii_key(&rec
->label_uuid
, rec
->label_uuid_string
, "Label UUID", 16, err
);
8375 if (*err
== NULL
&& label_uuid_hash(rec
)) {
8379 rec
->label_uuid_length
= 0;
8380 rec
->label_uuid
= NULL
;
8382 return rec
->valid
== BTMESH_LABEL_UUID_ENTRY_VALID
;
8386 uat_btmesh_label_uuid_record_copy_cb(void *n
, const void *o
, size_t siz _U_
)
8388 uat_btmesh_label_uuid_record_t
*new_rec
= (uat_btmesh_label_uuid_record_t
*)n
;
8389 const uat_btmesh_label_uuid_record_t
* old_rec
= (const uat_btmesh_label_uuid_record_t
*)o
;
8391 memset(new_rec
, 0x00, sizeof(uat_btmesh_label_uuid_record_t
));
8393 /* Copy UAT field */
8394 new_rec
->label_uuid_string
= g_strdup(old_rec
->label_uuid_string
);
8396 /* Parse Label UUID as in an update */
8398 uat_btmesh_label_uuid_record_update_cb(new_rec
, &err
);
8407 uat_btmesh_label_uuid_record_free_cb(void *r
)
8409 uat_btmesh_label_uuid_record_t
*rec
= (uat_btmesh_label_uuid_record_t
*)r
;
8411 g_free(rec
->label_uuid_string
);
8412 g_free(rec
->label_uuid
);
8415 UAT_CSTRING_CB_DEF(uat_btmesh_label_uuid_records
, label_uuid_string
, uat_btmesh_label_uuid_record_t
)
8418 proto_register_btmesh(void)
8420 static hf_register_info hf
[] = {
8422 { "IVI", "btmesh.ivi",
8423 FT_UINT8
, BASE_DEC
, NULL
, 0x80,
8427 { "NID", "btmesh.nid",
8428 FT_UINT8
, BASE_DEC
, NULL
, 0x7f,
8431 { &hf_btmesh_obfuscated
,
8432 { "Obfuscated", "btmesh.obfuscated",
8433 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8436 { &hf_btmesh_encrypted
,
8437 { "Encrypted data and NetMIC", "btmesh.encrypted",
8438 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8441 { &hf_btmesh_netmic
,
8442 { "NetMIC", "btmesh.netmic",
8443 FT_UINT64
, BASE_HEX
, NULL
, 0x0,
8447 { "CTL", "btmesh.ctl",
8448 FT_UINT8
, BASE_DEC
, VALS(btmesh_ctl_vals
), 0x80,
8452 { "TTL", "btmesh.ttl",
8453 FT_UINT8
, BASE_DEC
, NULL
, 0x7f,
8457 { "SEQ", "btmesh.seq",
8458 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
8462 { "SRC", "btmesh.src",
8463 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8467 { "DST", "btmesh.dst",
8468 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8471 { &hf_btmesh_transp_pdu
,
8472 { "TransportPDU", "btmesh.transp_pdu",
8473 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8476 { &hf_btmesh_cntr_seg
,
8477 { "SEG", "btmesh.cntr.seg",
8478 FT_UINT8
, BASE_DEC
, VALS(btmesh_ctrl_seg_vals
), 0x80,
8481 { &hf_btmesh_acc_seg
,
8482 { "SEG", "btmesh.acc.seg",
8483 FT_UINT8
, BASE_DEC
, VALS(btmesh_acc_seg_vals
), 0x80,
8486 { &hf_btmesh_cntr_opcode
,
8487 { "Opcode", "btmesh.cntr.opcode",
8488 FT_UINT8
, BASE_DEC
, VALS(btmesh_ctrl_opcode_vals
), 0x7f,
8491 { &hf_btmesh_acc_akf
,
8492 { "AKF", "btmesh.acc.akf",
8493 FT_UINT8
, BASE_DEC
, VALS(btmesh_acc_akf_vals
), 0x40,
8496 { &hf_btmesh_acc_aid
,
8497 { "AID", "btmesh.acc.aid",
8498 FT_UINT8
, BASE_DEC
, NULL
, 0x3f,
8502 { "OBO", "btmesh.obo",
8503 FT_BOOLEAN
, 16, TFS(&btmesh_obo
), 0x8000,
8506 { &hf_btmesh_seqzero
,
8507 { "SeqZero", "btmesh.seqzero",
8508 FT_UINT16
, BASE_DEC
, NULL
, 0x7ffc,
8512 { "Reserved for Future Use", "btmesh.rfu",
8513 FT_UINT16
, BASE_DEC
, NULL
, 0x0003,
8516 { &hf_btmesh_blockack
,
8517 { "BlockAck", "btmesh.blockack",
8518 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8521 { &hf_btmesh_cntr_criteria_rfu
,
8522 { "RFU", "btmesh.cntr.criteria.rfu",
8523 FT_UINT8
, BASE_DEC
, NULL
, 0x80,
8526 { &hf_btmesh_cntr_padding
,
8527 { "Padding", "btmesh.cntr.padding",
8528 FT_UINT8
, BASE_DEC
, NULL
, 0xfe,
8531 { &hf_btmesh_cntr_fsn
,
8532 { "Friend Sequence Number(FSN)", "btmesh.cntr.fsn",
8533 FT_UINT8
, BASE_DEC
, NULL
, 0x01,
8536 { &hf_btmesh_cntr_key_refresh_flag
,
8537 { "Key Refresh Flag", "btmesh.cntr.keyrefreshflag",
8538 FT_UINT8
, BASE_DEC
, VALS(btmesh_cntr_key_refresh_flag_vals
), 0x01,
8541 { &hf_btmesh_cntr_iv_update_flag
,
8542 { "IV Update Flag", "btmesh.cntr.ivupdateflag",
8543 FT_UINT8
, BASE_DEC
, VALS(btmesh_cntr_iv_update_flag_vals
), 0x02,
8546 { &hf_btmesh_cntr_flags_rfu
,
8547 { "IV Update Flag", "btmesh.cntr.flagsrfu",
8548 FT_UINT8
, BASE_DEC
, NULL
, 0xFC,
8551 { &hf_btmesh_cntr_iv_index
,
8552 { "IV Index", "btmesh.cntr.ivindex",
8553 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8556 { &hf_btmesh_cntr_md
,
8557 { "MD (More Data)", "btmesh.cntr.md",
8558 FT_UINT8
, BASE_DEC
, VALS(btmesh_cntr_md_vals
), 0x0,
8561 { &hf_btmesh_cntr_criteria_rssifactor
,
8562 { "RSSIFactor", "btmesh.cntr.criteria.rssifactor",
8563 FT_UINT8
, BASE_DEC
, VALS(btmesh_criteria_rssifactor_vals
), 0x60,
8566 { &hf_btmesh_cntr_criteria_receivewindowfactor
,
8567 { "ReceiveWindowFactor", "btmesh.cntr.criteria.receivewindowfactor",
8568 FT_UINT8
, BASE_DEC
, VALS(btmesh_criteria_receivewindowfactor_vals
), 0x18,
8571 { &hf_btmesh_cntr_criteria_minqueuesizelog
,
8572 { "MinQueueSizeLog", "btmesh.cntr.criteria.minqueuesizelog",
8573 FT_UINT8
, BASE_DEC
, VALS(btmesh_criteria_minqueuesizelog_vals
), 0x07,
8576 { &hf_btmesh_cntr_receivedelay
,
8577 { "ReceiveDelay", "btmesh.cntr.receivedelay",
8578 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8581 { &hf_btmesh_cntr_polltimeout
,
8582 { "PollTimeout", "btmesh.cntr.polltimeout",
8583 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
8586 { &hf_btmesh_cntr_previousaddress
,
8587 { "PreviousAddress", "btmesh.cntr.previousaddress",
8588 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8591 { &hf_btmesh_cntr_numelements
,
8592 { "NumElements", "btmesh.cntr.numelements",
8593 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8596 { &hf_btmesh_cntr_lpncounter
,
8597 { "LPNCounter", "btmesh.cntr.lpncounter",
8598 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8601 { &hf_btmesh_cntr_receivewindow
,
8602 { "ReceiveWindow", "btmesh.cntr.receivewindow",
8603 FT_UINT8
, BASE_DEC
| BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
8606 { &hf_btmesh_cntr_queuesize
,
8607 { "QueueSize", "btmesh.cntr.queuesize",
8608 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8611 { &hf_btmesh_cntr_subscriptionlistsize
,
8612 { "SubscriptionListSize", "btmesh.cntr.subscriptionlistsize",
8613 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8616 { &hf_btmesh_cntr_rssi
,
8617 { "RSSI", "btmesh.cntr.rssi",
8618 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8621 { &hf_btmesh_cntr_friendcounter
,
8622 { "FriendCounter", "btmesh.cntr.friendcounter",
8623 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8626 { &hf_btmesh_cntr_lpnaddress
,
8627 { "LPNAddress", "btmesh.cntr.lpnaddress",
8628 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8631 { &hf_btmesh_cntr_transactionnumber
,
8632 { "TransactionNumber", "btmesh.cntr.transactionnumber",
8633 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8636 { &hf_btmesh_cntr_heartbeat_rfu
,
8637 { "Reserved for Future Use", "btmesh.cntr.heartbeatrfu",
8638 FT_UINT8
, BASE_DEC
, NULL
, 0x80,
8641 { &hf_btmesh_cntr_init_ttl
,
8642 { "InitTTL", "btmesh.cntr.initttl",
8643 FT_UINT8
, BASE_DEC
, NULL
, 0x7F,
8646 { &hf_btmesh_cntr_feature_relay
,
8647 { "Relay feature in use", "btmesh.cntr.feature.relay",
8648 FT_BOOLEAN
, 16, NULL
, 0x0001,
8651 { &hf_btmesh_cntr_feature_proxy
,
8652 { "Proxy feature in use", "btmesh.cntr.feature.proxy",
8653 FT_BOOLEAN
, 16, NULL
, 0x0002,
8656 { &hf_btmesh_cntr_feature_friend
,
8657 { "Friend feature in use", "btmesh.cntr.feature.friend",
8658 FT_BOOLEAN
, 16, NULL
, 0x0004,
8661 { &hf_btmesh_cntr_feature_low_power
,
8662 { "Low Power feature in use", "btmesh.cntr.feature.lowpower",
8663 FT_BOOLEAN
, 16, NULL
, 0x0008,
8666 { &hf_btmesh_cntr_feature_rfu
,
8667 { "Reserved for Future Use", "btmesh.cntr.feature.rfu",
8668 FT_UINT16
, BASE_DEC
, NULL
, 0xfff0,
8671 { &hf_btmesh_cntr_unknown_payload
,
8672 { "Unknown Control Message payload", "btmesh.cntr.unknownpayload",
8673 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8676 { &hf_btmesh_enc_access_pld
,
8677 { "Encrypted Access Payload", "btmesh.enc_access_pld",
8678 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8681 { &hf_btmesh_transtmic
,
8682 { "TransMIC", "btmesh.transtmic",
8683 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8687 { "SZMIC", "btmesh.szmic",
8688 FT_UINT24
, BASE_DEC
, VALS(btmesh_szmic_vals
), 0x800000,
8691 { &hf_btmesh_seqzero_data
,
8692 { "SeqZero", "btmesh.seqzero_data",
8693 FT_UINT24
, BASE_DEC
, NULL
, 0x7ffc00,
8697 { "Segment Offset number(SegO)", "btmesh.sego",
8698 FT_UINT24
, BASE_DEC
, NULL
, 0x0003e0,
8702 { "Last Segment number(SegN)", "btmesh.segn",
8703 FT_UINT24
, BASE_DEC
, NULL
, 0x00001f,
8706 { &hf_btmesh_seg_rfu
,
8707 { "RFU", "btmesh.seg.rfu",
8708 FT_UINT24
, BASE_DEC
, NULL
, 0x800000,
8711 { &hf_btmesh_segment
,
8712 { "Segment", "btmesh.segment",
8713 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8716 /* Access Message Reassembly */
8717 { &hf_btmesh_segmented_access_fragments
,
8718 { "Reassembled Segmented Access Message Fragments", "btmesh.segmented.access.fragments",
8719 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8722 { &hf_btmesh_segmented_access_fragment
,
8723 { "Segmented Access Message Fragment", "btmesh.segmented.access.fragment",
8724 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8727 { &hf_btmesh_segmented_access_fragment_overlap
,
8728 { "Fragment overlap", "btmesh.segmented.access.fragment.overlap",
8729 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8730 "Fragment overlaps with other fragments", HFILL
}
8732 { &hf_btmesh_segmented_access_fragment_overlap_conflict
,
8733 { "Conflicting data in fragment overlap", "btmesh.segmented.access.fragment.overlap.conflict",
8734 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8735 "Overlapping fragments contained conflicting data", HFILL
}
8737 { &hf_btmesh_segmented_access_fragment_multiple_tails
,
8738 { "Multiple tail fragments found", "btmesh.segmented.access.fragment.multipletails",
8739 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8740 "Several tails were found when defragmenting the packet", HFILL
}
8742 { &hf_btmesh_segmented_access_fragment_too_long_fragment
,
8743 { "Fragment too long", "btmesh.segmented.access.fragment.toolongfragment",
8744 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8745 "Fragment contained data past end of packet", HFILL
}
8747 { &hf_btmesh_segmented_access_fragment_error
,
8748 { "Defragmentation error", "btmesh.segmented.access.fragment.error",
8749 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8750 "Defragmentation error due to illegal fragments", HFILL
}
8752 { &hf_btmesh_segmented_access_fragment_count
,
8753 { "Fragment count", "btmesh.segmented.access.fragment.count",
8754 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8757 { &hf_btmesh_segmented_access_reassembled_length
,
8758 { "Reassembled Segmented Access Message length", "btmesh.segmented.access.reassembled.length",
8759 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8760 "The total length of the reassembled payload", HFILL
}
8762 /* Control Message Reassembly */
8763 { &hf_btmesh_segmented_control_fragments
,
8764 { "Reassembled Segmented Control Message Fragments", "btmesh.segmented.control.fragments",
8765 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8766 "Segmented Access Message Fragments", HFILL
}
8768 { &hf_btmesh_segmented_control_fragment
,
8769 { "Segmented Control Message Fragment", "btmesh.segmented.control.fragment",
8770 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8773 { &hf_btmesh_segmented_control_fragment_overlap
,
8774 { "Fragment overlap", "btmesh.segmented.control.fragment.overlap",
8775 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8776 "Fragment overlaps with other fragments", HFILL
}
8778 { &hf_btmesh_segmented_control_fragment_overlap_conflict
,
8779 { "Conflicting data in fragment overlap", "btmesh.segmented.control.fragment.overlap.conflict",
8780 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8781 "Overlapping fragments contained conflicting data", HFILL
}
8783 { &hf_btmesh_segmented_control_fragment_multiple_tails
,
8784 { "Multiple tail fragments found", "btmesh.segmented.control.fragment.multipletails",
8785 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8786 "Several tails were found when defragmenting the packet", HFILL
}
8788 { &hf_btmesh_segmented_control_fragment_too_long_fragment
,
8789 { "Fragment too long", "btmesh.segmented.control.fragment.toolongfragment",
8790 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8791 "Fragment contained data past end of packet", HFILL
}
8793 { &hf_btmesh_segmented_control_fragment_error
,
8794 { "Defragmentation error", "btmesh.segmented.control.fragment.error",
8795 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8796 "Defragmentation error due to illegal fragments", HFILL
}
8798 { &hf_btmesh_segmented_control_fragment_count
,
8799 { "Fragment count", "btmesh.segmented.control.fragment.count",
8800 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8803 { &hf_btmesh_segmented_control_reassembled_length
,
8804 { "Reassembled Segmented Control Message length", "btmesh.segmented.control.reassembled.length",
8805 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8806 "The total length of the reassembled payload", HFILL
}
8808 { &hf_btmesh_decrypted_access
,
8809 { "Decrypted Access", "btmesh.access.decrypted",
8810 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8813 { &hf_btmesh_model_layer_vendor_opcode
,
8814 { "Opcode", "btmesh.model.vendor.opcode",
8815 FT_UINT8
, BASE_DEC
, NULL
, 0x3f,
8818 { &hf_btmesh_model_layer_vendor
,
8819 { "Company ID", "btmesh.model.vendor",
8820 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
8823 { &hf_btmesh_model_layer_opcode
,
8824 { "Opcode", "btmesh.model.opcode",
8825 FT_UINT16
, BASE_HEX
, VALS(btmesh_models_opcode_vals
), 0x0,
8828 { &hf_btmesh_model_layer_parameters
,
8829 { "Parameters", "btmesh.model.parameters",
8830 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8833 /* Config Model opcodes parameters */
8834 { &hf_btmesh_config_appkey_add_netkeyindexandappkeyindex
,
8835 { "NetKeyIndexAndAppKeyIndex", "btmesh.model.config_appkey_add.netkeyindexandappkeyindex",
8836 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_dual_key_index
), 0x0,
8839 { &hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_net
,
8840 { "NetKeyIndex", "btmesh.model.config_appkey_add.netkeyindexandappkeyindex.net",
8841 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x000FFF,
8844 { &hf_btmesh_config_appkey_add_netkeyindexandappkeyindex_app
,
8845 { "AppKeyIndex", "btmesh.model.config_appkey_add.netkeyindexandappkeyindex.app",
8846 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0xFFF000,
8849 { &hf_btmesh_config_appkey_add_appkey
,
8850 { "AppKey", "btmesh.model.config_appkey_add.appkey",
8851 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8854 { &hf_btmesh_config_appkey_update_netkeyindexandappkeyindex
,
8855 { "NetKeyIndexAndAppKeyIndex", "btmesh.model.config_appkey_update.netkeyindexandappkeyindex",
8856 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_dual_key_index
), 0x0,
8859 { &hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_net
,
8860 { "NetKeyIndex", "btmesh.model.config_appkey_update.netkeyindexandappkeyindex.net",
8861 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x000FFF,
8864 { &hf_btmesh_config_appkey_update_netkeyindexandappkeyindex_app
,
8865 { "AppKeyIndex", "btmesh.model.config_appkey_update.netkeyindexandappkeyindex.app",
8866 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0xFFF000,
8869 { &hf_btmesh_config_appkey_update_appkey
,
8870 { "AppKey", "btmesh.model.config_appkey_update.appkey",
8871 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8874 { &hf_btmesh_config_composition_data_status_page
,
8875 { "Page", "btmesh.model.config_composition_data_status.page",
8876 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8879 { &hf_btmesh_config_composition_data_status_cid
,
8880 { "CID", "btmesh.model.config_composition_data_status.cid",
8881 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
8884 { &hf_btmesh_config_composition_data_status_pid
,
8885 { "PID", "btmesh.model.config_composition_data_status.pid",
8886 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8889 { &hf_btmesh_config_composition_data_status_vid
,
8890 { "VID", "btmesh.model.config_composition_data_status.vid",
8891 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8894 { &hf_btmesh_config_composition_data_status_crpl
,
8895 { "CRPL", "btmesh.model.config_composition_data_status.crpl",
8896 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8899 { &hf_btmesh_config_composition_data_status_features_relay
,
8900 { "Relay feature", "btmesh.model.config_composition_data_status.features.relay",
8901 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0001,
8904 { &hf_btmesh_config_composition_data_status_features_proxy
,
8905 { "Proxy feature", "btmesh.model.config_composition_data_status.features.proxy",
8906 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0002,
8909 { &hf_btmesh_config_composition_data_status_features_friend
,
8910 { "Friend feature", "btmesh.model.config_composition_data_status.features.friend",
8911 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0004,
8914 { &hf_btmesh_config_composition_data_status_features_low_power
,
8915 { "Low Power feature", "btmesh.model.config_composition_data_status.features.low_power",
8916 FT_BOOLEAN
, 16, TFS(&tfs_supported_not_supported
), 0x0008,
8919 { &hf_btmesh_config_composition_data_status_features_rfu
,
8920 { "RFU", "btmesh.model.config_composition_data_status.features.rfu",
8921 FT_UINT16
, BASE_HEX
, NULL
, 0xFFF0,
8924 { &hf_btmesh_config_composition_data_status_features
,
8925 { "Features", "btmesh.model.config_composition_data_status.features",
8926 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8929 { &hf_btmesh_config_composition_data_status_loc
,
8930 { "Loc", "btmesh.model.config_composition_data_status.loc",
8931 FT_UINT16
, BASE_HEX
, VALS(characteristic_presentation_namespace_description_btsig_vals
), 0x0,
8934 { &hf_btmesh_config_composition_data_status_nums
,
8935 { "NumS", "btmesh.model.config_composition_data_status.nums",
8936 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8939 { &hf_btmesh_config_composition_data_status_numv
,
8940 { "NumV", "btmesh.model.config_composition_data_status.numv",
8941 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8944 { &hf_btmesh_config_composition_data_status_sig_model
,
8945 { "SIG Model", "btmesh.model.config_composition_data_status.sig_model",
8946 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
8949 { &hf_btmesh_config_composition_data_status_vendor_model
,
8950 { "Vendor Model", "btmesh.model.config_composition_data_status.vendor_model",
8951 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
8954 { &hf_btmesh_config_model_publication_set_elementaddress
,
8955 { "ElementAddress", "btmesh.model.config_model_publication_set.elementaddress",
8956 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8959 { &hf_btmesh_config_model_publication_set_publishaddress
,
8960 { "PublishAddress", "btmesh.model.config_model_publication_set.publishaddress",
8961 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8964 { &hf_btmesh_config_model_publication_set_appkey
,
8965 { "AppKeyIndex", "btmesh.model.config_model_publication_set.appkey",
8966 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_publish_appkeyindex_model
), 0x0,
8969 { &hf_btmesh_config_model_publication_set_appkeyindex
,
8970 { "AppKeyIndex", "btmesh.model.config_model_publication_set.appkeyindex",
8971 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
8974 { &hf_btmesh_config_model_publication_set_credentialflag
,
8975 { "CredentialFlag", "btmesh.model.config_model_publication_set.credentialflag",
8976 FT_UINT16
, BASE_DEC
, VALS(btmesh_friendship_credentials_flag_vals
), 0x1000,
8979 { &hf_btmesh_config_model_publication_set_rfu
,
8980 { "RFU", "btmesh.model.config_model_publication_set.rfu",
8981 FT_UINT16
, BASE_DEC
, VALS(btmesh_friendship_credentials_flag_vals
), 0xE000,
8984 { &hf_btmesh_config_model_publication_set_publishttl
,
8985 { "PublishTTL", "btmesh.model.config_model_publication_set.publishttl",
8986 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8989 { &hf_btmesh_config_model_publication_set_publishperiod
,
8990 { "PublishPeriod", "btmesh.model.config_model_publication_set.publishperiod",
8991 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
8994 { &hf_btmesh_config_model_publication_set_publishperiod_resolution
,
8995 { "Step Resolution", "btmesh.model.config_model_publication_set.publishperiod.resolution",
8996 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
8999 { &hf_btmesh_config_model_publication_set_publishperiod_steps
,
9000 { "Number of Steps", "btmesh.model.config_model_publication_set.publishperiod.steps",
9001 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
9004 { &hf_btmesh_config_model_publication_set_publishretransmit
,
9005 { "PublishRetransmit", "btmesh.model.config_model_publication_set.publishretransmit",
9006 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_retransmit
), 0x00,
9009 { &hf_btmesh_config_model_publication_set_publishretransmit_count
,
9010 { "PublishRetransmitCount", "btmesh.model.config_model_publication_set.publishretransmit.count",
9011 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9014 { &hf_btmesh_config_model_publication_set_publishretransmit_intervalsteps
,
9015 { "PublishRetransmitIntervalSteps", "btmesh.model.config_model_publication_set.publishretransmit.intervalsteps",
9016 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9019 { &hf_btmesh_config_model_publication_set_modelidentifier
,
9020 { "ModelIdentifier", "btmesh.model.config_model_publication_set.modelidentifier",
9021 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9024 { &hf_btmesh_config_model_publication_set_vendormodelidentifier
,
9025 { "ModelIdentifier", "btmesh.model.config_model_publication_set.vendormodelidentifier",
9026 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9029 { &hf_btmesh_health_current_status_test_id
,
9030 { "Test ID", "btmesh.model.health_current_status.test_id",
9031 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9034 { &hf_btmesh_health_current_status_company_id
,
9035 { "Company ID", "btmesh.model.health_current_status.company_id",
9036 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9039 { &hf_btmesh_health_current_status_fault
,
9040 { "Fault", "btmesh.model.health_current_status.fault",
9041 FT_UINT8
, BASE_DEC
, VALS(btmesh_fault_array_vals
), 0x0,
9044 { &hf_btmesh_health_fault_status_test_id
,
9045 { "Test ID", "btmesh.model.health_fault_status.test_id",
9046 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9049 { &hf_btmesh_health_fault_status_company_id
,
9050 { "Company ID", "btmesh.model.health_fault_status.company_id",
9051 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9054 { &hf_btmesh_health_fault_status_fault
,
9055 { "Fault", "btmesh.model.health_fault_status.fault",
9056 FT_UINT8
, BASE_DEC
, VALS(btmesh_fault_array_vals
), 0x0,
9059 { &hf_btmesh_config_heartbeat_publication_status_status
,
9060 { "Status", "btmesh.model.config_heartbeat_publication_status.status",
9061 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9064 { &hf_btmesh_config_heartbeat_publication_status_destination
,
9065 { "Destination", "btmesh.model.config_heartbeat_publication_status.destination",
9066 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9069 { &hf_btmesh_config_heartbeat_publication_status_countlog
,
9070 { "CountLog", "btmesh.model.config_heartbeat_publication_status.countlog",
9071 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9074 { &hf_btmesh_config_heartbeat_publication_status_periodlog
,
9075 { "PeriodLog", "btmesh.model.config_heartbeat_publication_status.periodlog",
9076 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9079 { &hf_btmesh_config_heartbeat_publication_status_ttl
,
9080 { "TTL", "btmesh.model.config_heartbeat_publication_status.ttl",
9081 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9084 { &hf_btmesh_config_heartbeat_publication_status_features_relay
,
9085 { "Relay feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_status.features.relay",
9086 FT_BOOLEAN
, 16, NULL
, 0x0001,
9089 { &hf_btmesh_config_heartbeat_publication_status_features_proxy
,
9090 { "Proxy feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_status.features.proxy",
9091 FT_BOOLEAN
, 16, NULL
, 0x0002,
9094 { &hf_btmesh_config_heartbeat_publication_status_features_friend
,
9095 { "Friend feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_status.features.friend",
9096 FT_BOOLEAN
, 16, NULL
, 0x0004,
9099 { &hf_btmesh_config_heartbeat_publication_status_features_low_power
,
9100 { "Low Power feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_status.features.low_power",
9101 FT_BOOLEAN
, 16, NULL
, 0x0008,
9104 { &hf_btmesh_config_heartbeat_publication_status_features_rfu
,
9105 { "RFU", "btmesh.model.config_heartbeat_publication_status.features.rfu",
9106 FT_UINT16
, BASE_HEX
, NULL
, 0xFFF0,
9109 { &hf_btmesh_config_heartbeat_publication_status_features
,
9110 { "Features", "btmesh.model.config_heartbeat_publication_status.features",
9111 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9114 { &hf_btmesh_config_heartbeat_publication_status_netkeyindex
,
9115 { "NetKeyIndex", "btmesh.model.config_heartbeat_publication_status.netkeyindex",
9116 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9119 { &hf_btmesh_config_heartbeat_publication_status_netkeyindex_idx
,
9120 { "NetKeyIndex", "btmesh.model.config_heartbeat_publication_status.netkeyindex.idx",
9121 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9124 { &hf_btmesh_config_heartbeat_publication_status_netkeyindex_rfu
,
9125 { "RFU", "btmesh.model.config_heartbeat_publication_status.netkeyindex.rfu",
9126 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9129 { &hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex
,
9130 { "NetKeyIndexAndAppKeyIndex", "btmesh.model.config_appkey_delete.netkeyindexandappkeyindex",
9131 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_dual_key_index
), 0x0,
9134 { &hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_net
,
9135 { "NetKeyIndex", "btmesh.model.config_appkey_delete.netkeyindexandappkeyindex.net",
9136 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x000FFF,
9139 { &hf_btmesh_config_appkey_delete_netkeyindexandappkeyindex_app
,
9140 { "AppKeyIndex", "btmesh.model.config_appkey_delete.netkeyindexandappkeyindex.app",
9141 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0xFFF000,
9144 { &hf_btmesh_config_appkey_get_netkeyindex
,
9145 { "NetKeyIndex", "btmesh.model.config_appkey_get.netkeyindex",
9146 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9149 { &hf_btmesh_config_appkey_get_netkeyindex_idx
,
9150 { "NetKeyIndex", "btmesh.model.config_appkey_get.netkeyindex.idx",
9151 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9154 { &hf_btmesh_config_appkey_get_netkeyindex_rfu
,
9155 { "RFU", "btmesh.model.config_appkey_get.netkeyindex.rfu",
9156 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9159 { &hf_btmesh_config_appkey_list_status
,
9160 { "Status", "btmesh.model.config_appkey_list.status",
9161 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9164 { &hf_btmesh_config_appkey_list_netkeyindex
,
9165 { "NetKeyIndex", "btmesh.model.config_appkey_list.netkeyindex",
9166 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9169 { &hf_btmesh_config_appkey_list_netkeyindex_idx
,
9170 { "NetKeyIndex", "btmesh.model.config_appkey_list.netkeyindex.idx",
9171 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9174 { &hf_btmesh_config_appkey_list_netkeyindex_rfu
,
9175 { "RFU", "btmesh.model.config_appkey_list.netkeyindex.rfu",
9176 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9179 { &hf_btmesh_config_appkey_list_appkeyindex
,
9180 { "AppKeyIndex", "btmesh.model.config_appkey_list.appkeyindex",
9181 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9184 { &hf_btmesh_config_appkey_list_appkeyindex_rfu
,
9185 { "RFU", "btmesh.model.config_appkey_list.appkeyindex.rfu",
9186 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0x0,
9189 { &hf_btmesh_config_appkey_status_status
,
9190 { "Status", "btmesh.model.config_appkey_status.status",
9191 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9194 { &hf_btmesh_config_appkey_status_netkeyindexandappkeyindex
,
9195 { "NetKeyIndexAndAppKeyIndex", "btmesh.model.config_appkey_status.netkeyindexandappkeyindex",
9196 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_dual_key_index
), 0x0,
9199 { &hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_net
,
9200 { "NetKeyIndex", "btmesh.model.config_appkey_status.netkeyindexandappkeyindex.net",
9201 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x000FFF,
9204 { &hf_btmesh_config_appkey_status_netkeyindexandappkeyindex_app
,
9205 { "AppKeyIndex", "btmesh.model.config_appkey_status.netkeyindexandappkeyindex.app",
9206 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0xFFF000,
9209 { &hf_btmesh_health_attention_set_attention
,
9210 { "Attention", "btmesh.model.health_attention_set.attention",
9211 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9214 { &hf_btmesh_health_attention_set_unacknowledged_attention
,
9215 { "Attention", "btmesh.model.health_attention_set_unacknowledged.attention",
9216 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9219 { &hf_btmesh_health_attention_status_attention
,
9220 { "Attention", "btmesh.model.health_attention_status.attention",
9221 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9224 { &hf_btmesh_config_composition_data_get_page
,
9225 { "Page", "btmesh.model.config_composition_data_get.page",
9226 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9229 { &hf_btmesh_config_beacon_set_beacon
,
9230 { "Beacon", "btmesh.model.config_beacon_set.beacon",
9231 FT_UINT8
, BASE_DEC
, VALS(btmesh_beacon_broadcast_vals
), 0x0,
9234 { &hf_btmesh_config_beacon_status_beacon
,
9235 { "Beacon", "btmesh.model.config_beacon_status.beacon",
9236 FT_UINT8
, BASE_DEC
, VALS(btmesh_beacon_broadcast_vals
), 0x0,
9239 { &hf_btmesh_config_default_ttl_set_ttl
,
9240 { "TTL", "btmesh.model.config_default_ttl_set.ttl",
9241 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9244 { &hf_btmesh_config_default_ttl_status_ttl
,
9245 { "TTL", "btmesh.model.config_default_ttl_status.ttl",
9246 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9249 { &hf_btmesh_config_friend_set_friend
,
9250 { "Friend", "btmesh.model.config_friend_set.friend",
9251 FT_UINT8
, BASE_DEC
, VALS(btmesh_friend_vals
), 0x0,
9254 { &hf_btmesh_config_friend_status_friend
,
9255 { "Friend", "btmesh.model.config_friend_status.friend",
9256 FT_UINT8
, BASE_DEC
, VALS(btmesh_friend_vals
), 0x0,
9259 { &hf_btmesh_config_gatt_proxy_set_gattproxy
,
9260 { "GATTProxy", "btmesh.model.config_gatt_proxy_set.gattproxy",
9261 FT_UINT8
, BASE_HEX
, VALS(btmesh_gatt_proxy_vals
), 0x0,
9264 { &hf_btmesh_config_gatt_proxy_status_gattproxy
,
9265 { "GATTProxy", "btmesh.model.config_gatt_proxy_status.gattproxy",
9266 FT_UINT8
, BASE_HEX
, VALS(btmesh_gatt_proxy_vals
), 0x0,
9269 { &hf_btmesh_config_key_refresh_phase_get_netkeyindex
,
9270 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_get.netkeyindex",
9271 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9274 { &hf_btmesh_config_key_refresh_phase_get_netkeyindex_idx
,
9275 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_get.netkeyindex.idx",
9276 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9279 { &hf_btmesh_config_key_refresh_phase_get_netkeyindex_rfu
,
9280 { "RFU", "btmesh.model.config_key_refresh_phase_get.netkeyindex.rfu",
9281 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9284 { &hf_btmesh_config_key_refresh_phase_set_netkeyindex
,
9285 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_set.netkeyindex",
9286 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9289 { &hf_btmesh_config_key_refresh_phase_set_netkeyindex_idx
,
9290 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_set.netkeyindex.idx",
9291 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9294 { &hf_btmesh_config_key_refresh_phase_set_netkeyindex_rfu
,
9295 { "RFU", "btmesh.model.config_key_refresh_phase_set.netkeyindex.rfu",
9296 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9299 { &hf_btmesh_config_key_refresh_phase_set_transition
,
9300 { "Transition", "btmesh.model.config_key_refresh_phase_set.transition",
9301 FT_UINT8
, BASE_DEC
| BASE_RANGE_STRING
, RVALS(btmesh_transition_vals
), 0x0,
9304 { &hf_btmesh_config_key_refresh_phase_status_status
,
9305 { "Status", "btmesh.model.config_key_refresh_phase_status.status",
9306 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9309 { &hf_btmesh_config_key_refresh_phase_status_netkeyindex
,
9310 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_status.netkeyindex",
9311 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9314 { &hf_btmesh_config_key_refresh_phase_status_netkeyindex_idx
,
9315 { "NetKeyIndex", "btmesh.model.config_key_refresh_phase_status.netkeyindex.idx",
9316 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9319 { &hf_btmesh_config_key_refresh_phase_status_netkeyindex_rfu
,
9320 { "RFU", "btmesh.model.config_key_refresh_phase_status.netkeyindex.rfu",
9321 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9324 { &hf_btmesh_config_key_refresh_phase_status_phase
,
9325 { "Phase", "btmesh.model.config_key_refresh_phase_status.phase",
9326 FT_UINT8
, BASE_DEC
, VALS(btmesh_phase_vals
), 0x0,
9329 { &hf_btmesh_config_model_publication_get_elementaddress
,
9330 { "ElementAddress", "btmesh.model.config_model_publication_get.elementaddress",
9331 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9334 { &hf_btmesh_config_model_publication_get_modelidentifier
,
9335 { "ModelIdentifier", "btmesh.model.config_model_publication_get.modelidentifier",
9336 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9339 { &hf_btmesh_config_model_publication_get_vendormodelidentifier
,
9340 { "ModelIdentifier", "btmesh.model.config_model_publication_get.vendormodelidentifier",
9341 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9344 { &hf_btmesh_config_model_publication_status_status
,
9345 { "Status", "btmesh.model.config_model_publication_status.status",
9346 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9349 { &hf_btmesh_config_model_publication_status_elementaddress
,
9350 { "ElementAddress", "btmesh.model.config_model_publication_status.elementaddress",
9351 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9354 { &hf_btmesh_config_model_publication_status_publishaddress
,
9355 { "PublishAddress", "btmesh.model.config_model_publication_status.publishaddress",
9356 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9359 { &hf_btmesh_config_model_publication_status_appkey
,
9360 { "AppKeyIndex", "btmesh.model.config_model_publication_status.appkey",
9361 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_publish_appkeyindex_model
), 0x0,
9364 { &hf_btmesh_config_model_publication_status_appkeyindex
,
9365 { "AppKeyIndex", "btmesh.model.config_model_publication_status.appkeyindex",
9366 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9369 { &hf_btmesh_config_model_publication_status_credentialflag
,
9370 { "CredentialFlag", "btmesh.model.config_model_publication_status.credentialflag",
9371 FT_UINT16
, BASE_DEC
, VALS(btmesh_friendship_credentials_flag_vals
), 0x1000,
9374 { &hf_btmesh_config_model_publication_status_rfu
,
9375 { "RFU", "btmesh.model.config_model_publication_status.rfu",
9376 FT_UINT16
, BASE_HEX
, NULL
, 0xE000,
9379 { &hf_btmesh_config_model_publication_status_publishttl
,
9380 { "PublishTTL", "btmesh.model.config_model_publication_status.publishttl",
9381 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9384 { &hf_btmesh_config_model_publication_status_publishperiod
,
9385 { "PublishPeriod", "btmesh.model.config_model_publication_status.publishperiod",
9386 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
9389 { &hf_btmesh_config_model_publication_status_publishperiod_resolution
,
9390 { "Step Resolution", "btmesh.model.config_model_publication_status.publishperiod.resolution",
9391 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
9394 { &hf_btmesh_config_model_publication_status_publishperiod_steps
,
9395 { "Number of Steps", "btmesh.model.config_model_publication_status.publishperiod.steps",
9396 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
9399 { &hf_btmesh_config_model_publication_status_publishretransmit
,
9400 { "PublishRetransmit", "btmesh.model.config_model_publication_status.publishretransmit",
9401 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_retransmit
), 0x00,
9404 { &hf_btmesh_config_model_publication_status_publishretransmit_count
,
9405 { "PublishRetransmitCount", "btmesh.model.config_model_publication_status.publishretransmit.count",
9406 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9409 { &hf_btmesh_config_model_publication_status_publishretransmit_intervalsteps
,
9410 { "PublishRetransmitIntervalSteps", "btmesh.model.config_model_publication_status.publishretransmit.intervalsteps",
9411 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9414 { &hf_btmesh_config_model_publication_status_modelidentifier
,
9415 { "ModelIdentifier", "btmesh.model.config_model_publication_status.modelidentifier",
9416 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9419 { &hf_btmesh_config_model_publication_status_vendormodelidentifier
,
9420 { "ModelIdentifier", "btmesh.model.config_model_publication_status.vendormodelidentifier",
9421 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9424 { &hf_btmesh_config_model_publication_virtual_address_set_elementaddress
,
9425 { "ElementAddress", "btmesh.model.config_model_publication_virtual_address_set.elementaddress",
9426 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9429 { &hf_btmesh_config_model_publication_virtual_address_set_publishaddress
,
9430 { "PublishAddress", "btmesh.model.config_model_publication_virtual_address_set.publishaddress",
9431 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9434 { &hf_btmesh_config_model_publication_virtual_address_set_appkey
,
9435 { "AppKeyIndex", "btmesh.model.config_model_publication_virtual_address_set.appkey",
9436 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_publish_appkeyindex_model
), 0x0,
9439 { &hf_btmesh_config_model_publication_virtual_address_set_appkeyindex
,
9440 { "AppKeyIndex", "btmesh.model.config_model_publication_virtual_address_set.appkeyindex",
9441 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9444 { &hf_btmesh_config_model_publication_virtual_address_set_credentialflag
,
9445 { "CredentialFlag", "btmesh.model.config_model_publication_virtual_address_set.credentialflag",
9446 FT_UINT16
, BASE_DEC
, VALS(btmesh_friendship_credentials_flag_vals
), 0x1000,
9449 { &hf_btmesh_config_model_publication_virtual_address_set_rfu
,
9450 { "RFU", "btmesh.model.config_model_publication_virtual_address_set.rfu",
9451 FT_UINT16
, BASE_HEX
, NULL
, 0xE000,
9454 { &hf_btmesh_config_model_publication_virtual_address_set_publishttl
,
9455 { "PublishTTL", "btmesh.model.config_model_publication_virtual_address_set.publishttl",
9456 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9459 { &hf_btmesh_config_model_publication_virtual_address_set_publishperiod
,
9460 { "PublishPeriod", "btmesh.model.config_model_publication_virtual_address_set.publishperiod",
9461 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
9464 { &hf_btmesh_config_model_publication_virtual_address_set_publishperiod_resolution
,
9465 { "Step Resolution", "btmesh.model.config_model_publication_virtual_address_set.publishperiod.resolution",
9466 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
9469 { &hf_btmesh_config_model_publication_virtual_address_set_publishperiod_steps
,
9470 { "Number of Steps", "btmesh.model.config_model_publication_virtual_address_set.publishperiod.steps",
9471 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
9474 { &hf_btmesh_config_model_publication_virtual_address_set_publishretransmit
,
9475 { "PublishRetransmit", "btmesh.model.config_model_publication_virtual_address_set.publishretransmit",
9476 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_retransmit
), 0x00,
9479 { &hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_count
,
9480 { "PublishRetransmitCount", "btmesh.model.config_model_publication_virtual_address_set.publishretransmit.count",
9481 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9484 { &hf_btmesh_config_model_publication_virtual_address_set_publishretransmit_intervalsteps
,
9485 { "PublishRetransmitIntervalSteps", "btmesh.model.config_model_publication_virtual_address_set.publishretransmit.intervalsteps",
9486 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9489 { &hf_btmesh_config_model_publication_virtual_address_set_vendormodelidentifier
,
9490 { "ModelIdentifier", "btmesh.model.config_model_publication_virtual_address_set.vendormodelidentifier",
9491 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9494 { &hf_btmesh_config_model_publication_virtual_address_set_modelidentifier
,
9495 { "ModelIdentifier", "btmesh.model.config_model_publication_virtual_address_set.modelidentifier",
9496 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9499 { &hf_btmesh_config_model_subscription_add_elementaddress
,
9500 { "ElementAddress", "btmesh.model.config_model_subscription_add.elementaddress",
9501 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9504 { &hf_btmesh_config_model_subscription_add_address
,
9505 { "Address", "btmesh.model.config_model_subscription_add.address",
9506 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9509 { &hf_btmesh_config_model_subscription_add_modelidentifier
,
9510 { "ModelIdentifier", "btmesh.model.config_model_subscription_add.modelidentifier",
9511 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9514 { &hf_btmesh_config_model_subscription_add_vendormodelidentifier
,
9515 { "ModelIdentifier", "btmesh.model.config_model_subscription_add.vendormodelidentifier",
9516 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9519 { &hf_btmesh_config_model_subscription_delete_elementaddress
,
9520 { "ElementAddress", "btmesh.model.config_model_subscription_delete.elementaddress",
9521 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9524 { &hf_btmesh_config_model_subscription_delete_address
,
9525 { "Address", "btmesh.model.config_model_subscription_delete.address",
9526 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9529 { &hf_btmesh_config_model_subscription_delete_modelidentifier
,
9530 { "ModelIdentifier", "btmesh.model.config_model_subscription_delete.modelidentifier",
9531 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9534 { &hf_btmesh_config_model_subscription_delete_vendormodelidentifier
,
9535 { "ModelIdentifier", "btmesh.model.config_model_subscription_delete.vendormodelidentifier",
9536 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9539 { &hf_btmesh_config_model_subscription_delete_all_elementaddress
,
9540 { "ElementAddress", "btmesh.model.config_model_subscription_delete_all.elementaddress",
9541 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9544 { &hf_btmesh_config_model_subscription_delete_all_modelidentifier
,
9545 { "ModelIdentifier", "btmesh.model.config_model_subscription_delete_all.modelidentifier",
9546 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9549 { &hf_btmesh_config_model_subscription_delete_all_vendormodelidentifier
,
9550 { "ModelIdentifier", "btmesh.model.config_model_subscription_delete_all.vendormodelidentifier",
9551 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9554 { &hf_btmesh_config_model_subscription_overwrite_elementaddress
,
9555 { "ElementAddress", "btmesh.model.config_model_subscription_overwrite.elementaddress",
9556 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9559 { &hf_btmesh_config_model_subscription_overwrite_address
,
9560 { "Address", "btmesh.model.config_model_subscription_overwrite.address",
9561 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9564 { &hf_btmesh_config_model_subscription_overwrite_modelidentifier
,
9565 { "ModelIdentifier", "btmesh.model.config_model_subscription_overwrite.modelidentifier",
9566 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9569 { &hf_btmesh_config_model_subscription_overwrite_vendormodelidentifier
,
9570 { "ModelIdentifier", "btmesh.model.config_model_subscription_overwrite.vendormodelidentifier",
9571 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9574 { &hf_btmesh_config_model_subscription_status_status
,
9575 { "Status", "btmesh.model.config_model_subscription_status.status",
9576 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9579 { &hf_btmesh_config_model_subscription_status_elementaddress
,
9580 { "ElementAddress", "btmesh.model.config_model_subscription_status.elementaddress",
9581 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9584 { &hf_btmesh_config_model_subscription_status_address
,
9585 { "Address", "btmesh.model.config_model_subscription_status.address",
9586 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9589 { &hf_btmesh_config_model_subscription_status_modelidentifier
,
9590 { "ModelIdentifier", "btmesh.model.config_model_subscription_status.modelidentifier",
9591 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9594 { &hf_btmesh_config_model_subscription_status_vendormodelidentifier
,
9595 { "ModelIdentifier", "btmesh.model.config_model_subscription_status.vendormodelidentifier",
9596 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9599 { &hf_btmesh_config_model_subscription_virtual_address_add_elementaddress
,
9600 { "ElementAddress", "btmesh.model.config_model_subscription_virtual_address_add.elementaddress",
9601 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9604 { &hf_btmesh_config_model_subscription_virtual_address_add_label
,
9605 { "Label", "btmesh.model.config_model_subscription_virtual_address_add.label",
9606 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9609 { &hf_btmesh_config_model_subscription_virtual_address_add_modelidentifier
,
9610 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_add.modelidentifier",
9611 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9614 { &hf_btmesh_config_model_subscription_virtual_address_add_vendormodelidentifier
,
9615 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_add.vendormodelidentifier",
9616 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9619 { &hf_btmesh_config_model_subscription_virtual_address_delete_elementaddress
,
9620 { "ElementAddress", "btmesh.model.config_model_subscription_virtual_address_delete.elementaddress",
9621 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9624 { &hf_btmesh_config_model_subscription_virtual_address_delete_label
,
9625 { "Label", "btmesh.model.config_model_subscription_virtual_address_delete.label",
9626 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9629 { &hf_btmesh_config_model_subscription_virtual_address_delete_modelidentifier
,
9630 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_delete.modelidentifier",
9631 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9634 { &hf_btmesh_config_model_subscription_virtual_address_delete_vendormodelidentifier
,
9635 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_delete.vendormodelidentifier",
9636 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9639 { &hf_btmesh_config_model_subscription_virtual_address_overwrite_elementaddress
,
9640 { "ElementAddress", "btmesh.model.config_model_subscription_virtual_address_overwrite.elementaddress",
9641 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9644 { &hf_btmesh_config_model_subscription_virtual_address_overwrite_label
,
9645 { "Label", "btmesh.model.config_model_subscription_virtual_address_overwrite.label",
9646 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9649 { &hf_btmesh_config_model_subscription_virtual_address_overwrite_modelidentifier
,
9650 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_overwrite.modelidentifier",
9651 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9654 { &hf_btmesh_config_model_subscription_virtual_address_overwrite_vendormodelidentifier
,
9655 { "ModelIdentifier", "btmesh.model.config_model_subscription_virtual_address_overwrite.vendormodelidentifier",
9656 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9659 { &hf_btmesh_config_network_transmit_set_networktransmit
,
9660 { "NetworkTransmitCount", "btmesh.model.config_network_transmit_set.networktransmit",
9661 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_transmit
), 0x00,
9664 { &hf_btmesh_config_network_transmit_set_networktransmit_count
,
9665 { "NetworkTransmitCount", "btmesh.model.config_network_transmit_set.networktransmit.count",
9666 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9669 { &hf_btmesh_config_network_transmit_set_networktransmit_intervalsteps
,
9670 { "NetworkTransmitIntervalSteps", "btmesh.model.config_network_transmit_set.networktransmitinterval.steps",
9671 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9674 { &hf_btmesh_config_network_transmit_status_networktransmit
,
9675 { "NetworkTransmitCount", "btmesh.model.config_network_transmit_status.networktransmit",
9676 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_transmit
), 0x00,
9679 { &hf_btmesh_config_network_transmit_status_networktransmit_count
,
9680 { "NetworkTransmitCount", "btmesh.model.config_network_transmit_status.networktransmit.count",
9681 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9684 { &hf_btmesh_config_network_transmit_status_networktransmit_intervalsteps
,
9685 { "NetworkTransmitIntervalSteps", "btmesh.model.config_network_transmit_status.networktransmit.intervalsteps",
9686 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9689 { &hf_btmesh_config_relay_set_relay
,
9690 { "Relay", "btmesh.model.config_relay_set.relay",
9691 FT_UINT8
, BASE_DEC
, VALS(btmesh_relay_vals
), 0x0,
9694 { &hf_btmesh_config_relay_set_relayretransmit
,
9695 { "RelayRetransmitCount", "btmesh.model.config_relay_set.relayretransmit",
9696 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_retransmit
), 0x00,
9699 { &hf_btmesh_config_relay_set_relayretransmit_count
,
9700 { "RelayRetransmitCount", "btmesh.model.config_relay_set.relayretransmit.count",
9701 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9704 { &hf_btmesh_config_relay_set_relayretransmit_intervalsteps
,
9705 { "RelayRetransmitIntervalSteps", "btmesh.model.config_relay_set.relayretransmit.intervalsteps",
9706 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9709 { &hf_btmesh_config_relay_status_relay
,
9710 { "Relay", "btmesh.model.config_relay_status.relay",
9711 FT_UINT8
, BASE_DEC
, VALS(btmesh_relay_vals
), 0x0,
9714 { &hf_btmesh_config_relay_status_relayretransmit
,
9715 { "RelayRetransmit", "btmesh.model.config_relay_status.relayretransmit",
9716 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_retransmit
), 0x00,
9719 { &hf_btmesh_config_relay_status_relayretransmit_count
,
9720 { "RelayRetransmitCount", "btmesh.model.config_relay_status.relayretransmit.count",
9721 FT_UINT8
, BASE_DEC
, NULL
, 0x07,
9724 { &hf_btmesh_config_relay_status_relayretransmit_intervalsteps
,
9725 { "RelayRetransmitIntervalSteps", "btmesh.model.config_relay_status.relayretransmit.intervalsteps",
9726 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_interval_steps
), 0xF8,
9729 { &hf_btmesh_config_sig_model_subscription_get_elementaddress
,
9730 { "ElementAddress", "btmesh.model.config_sig_model_subscription_get.elementaddress",
9731 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9734 { &hf_btmesh_config_sig_model_subscription_get_modelidentifier
,
9735 { "ModelIdentifier", "btmesh.model.config_sig_model_subscription_get.modelidentifier",
9736 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9739 { &hf_btmesh_config_sig_model_subscription_list_status
,
9740 { "Status", "btmesh.model.config_sig_model_subscription_list.status",
9741 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9744 { &hf_btmesh_config_sig_model_subscription_list_elementaddress
,
9745 { "ElementAddress", "btmesh.model.config_sig_model_subscription_list.elementaddress",
9746 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9749 { &hf_btmesh_config_sig_model_subscription_list_modelidentifier
,
9750 { "ModelIdentifier", "btmesh.model.config_sig_model_subscription_list.modelidentifier",
9751 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9754 { &hf_btmesh_config_sig_model_subscription_list_address
,
9755 { "Address", "btmesh.model.config_sig_model_subscription_list.address",
9756 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9759 { &hf_btmesh_config_vendor_model_subscription_get_elementaddress
,
9760 { "ElementAddress", "btmesh.model.config_vendor_model_subscription_get.elementaddress",
9761 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9764 { &hf_btmesh_config_vendor_model_subscription_get_modelidentifier
,
9765 { "ModelIdentifier", "btmesh.model.config_vendor_model_subscription_get.modelidentifier",
9766 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9769 { &hf_btmesh_config_vendor_model_subscription_list_status
,
9770 { "Status", "btmesh.model.config_vendor_model_subscription_list.status",
9771 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9774 { &hf_btmesh_config_vendor_model_subscription_list_elementaddress
,
9775 { "ElementAddress", "btmesh.model.config_vendor_model_subscription_list.elementaddress",
9776 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9779 { &hf_btmesh_config_vendor_model_subscription_list_modelidentifier
,
9780 { "ModelIdentifier", "btmesh.model.config_vendor_model_subscription_list.modelidentifier",
9781 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9784 { &hf_btmesh_config_vendor_model_subscription_list_address
,
9785 { "Address", "btmesh.model.config_vendor_model_subscription_list.address",
9786 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9789 { &hf_btmesh_config_low_power_node_polltimeout_get_lpnaddress
,
9790 { "LPNAddress", "btmesh.model.config_low_power_node_polltimeout_get.lpnaddress",
9791 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9794 { &hf_btmesh_config_low_power_node_polltimeout_status_lpnaddress
,
9795 { "LPNAddress", "btmesh.model.config_low_power_node_polltimeout_status.lpnaddress",
9796 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9799 { &hf_btmesh_config_low_power_node_polltimeout_status_polltimeout
,
9800 { "PollTimeout", "btmesh.model.config_low_power_node_polltimeout_status.polltimeout",
9801 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
9804 { &hf_btmesh_health_fault_clear_company_id
,
9805 { "Company ID", "btmesh.model.health_fault_clear.company_id",
9806 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9809 { &hf_btmesh_health_fault_clear_unacknowledged_company_id
,
9810 { "Company ID", "btmesh.model.health_fault_clear_unacknowledged.company_id",
9811 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9814 { &hf_btmesh_health_fault_get_company_id
,
9815 { "Company ID", "btmesh.model.health_fault_get.company_id",
9816 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9819 { &hf_btmesh_health_fault_test_test_id
,
9820 { "Test ID", "btmesh.model.health_fault_test.test_id",
9821 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9824 { &hf_btmesh_health_fault_test_company_id
,
9825 { "Company ID", "btmesh.model.health_fault_test.company_id",
9826 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9829 { &hf_btmesh_health_fault_test_unacknowledged_test_id
,
9830 { "Test ID", "btmesh.model.health_fault_test_unacknowledged.test_id",
9831 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9834 { &hf_btmesh_health_fault_test_unacknowledged_company_id
,
9835 { "Company ID", "btmesh.model.health_fault_test_unacknowledged.company_id",
9836 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
9839 { &hf_btmesh_health_period_set_fast_period_divisor
,
9840 { "Fast Period Divisor", "btmesh.model.health_period_set.fast_period_divisor",
9841 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9844 { &hf_btmesh_health_period_set_unacknowledged_fast_period_divisor
,
9845 { "Fast Period Divisor", "btmesh.model.health_period_set_unacknowledged.fast_period_divisor",
9846 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9849 { &hf_btmesh_health_period_status_fast_period_divisor
,
9850 { "Fast Period Divisor", "btmesh.model.health_period_status.fast_period_divisor",
9851 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9854 { &hf_btmesh_config_heartbeat_publication_set_destination
,
9855 { "Destination", "btmesh.model.config_heartbeat_publication_set.destination",
9856 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9859 { &hf_btmesh_config_heartbeat_publication_set_countlog
,
9860 { "CountLog", "btmesh.model.config_heartbeat_publication_set.countlog",
9861 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9864 { &hf_btmesh_config_heartbeat_publication_set_periodlog
,
9865 { "PeriodLog", "btmesh.model.config_heartbeat_publication_set.periodlog",
9866 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9869 { &hf_btmesh_config_heartbeat_publication_set_ttl
,
9870 { "TTL", "btmesh.model.config_heartbeat_publication_set.ttl",
9871 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9874 { &hf_btmesh_config_heartbeat_publication_set_features_relay
,
9875 { "Relay feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_set.features.relay",
9876 FT_BOOLEAN
, 16, NULL
, 0x0001,
9879 { &hf_btmesh_config_heartbeat_publication_set_features_proxy
,
9880 { "Proxy feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_set.features.proxy",
9881 FT_BOOLEAN
, 16, NULL
, 0x0002,
9884 { &hf_btmesh_config_heartbeat_publication_set_features_friend
,
9885 { "Friend feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_set.features.friend",
9886 FT_BOOLEAN
, 16, NULL
, 0x0004,
9889 { &hf_btmesh_config_heartbeat_publication_set_features_low_power
,
9890 { "Low Power feature change triggers a Heartbeat message", "btmesh.model.config_heartbeat_publication_set.features.low_power",
9891 FT_BOOLEAN
, 16, NULL
, 0x0008,
9894 { &hf_btmesh_config_heartbeat_publication_set_features_rfu
,
9895 { "RFU", "btmesh.model.config_heartbeat_publication_set.features.rfu",
9896 FT_UINT16
, BASE_HEX
, NULL
, 0xFFF0,
9899 { &hf_btmesh_config_heartbeat_publication_set_features
,
9900 { "Features", "btmesh.model.config_heartbeat_publication_set.features",
9901 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9904 { &hf_btmesh_config_heartbeat_publication_set_netkeyindex
,
9905 { "NetKeyIndex", "btmesh.model.config_heartbeat_publication_set.netkeyindex",
9906 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9909 { &hf_btmesh_config_heartbeat_publication_set_netkeyindex_idx
,
9910 { "NetKeyIndex", "btmesh.model.config_heartbeat_publication_set.netkeyindex.idx",
9911 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9914 { &hf_btmesh_config_heartbeat_publication_set_netkeyindex_rfu
,
9915 { "RFU", "btmesh.model.config_heartbeat_publication_set.netkeyindex.rfu",
9916 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9919 { &hf_btmesh_config_heartbeat_subscription_set_source
,
9920 { "Source", "btmesh.model.config_heartbeat_subscription_set.source",
9921 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9924 { &hf_btmesh_config_heartbeat_subscription_set_destination
,
9925 { "Destination", "btmesh.model.config_heartbeat_subscription_set.destination",
9926 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9929 { &hf_btmesh_config_heartbeat_subscription_set_periodlog
,
9930 { "PeriodLog", "btmesh.model.config_heartbeat_subscription_set.periodlog",
9931 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9934 { &hf_btmesh_config_heartbeat_subscription_status_status
,
9935 { "Status", "btmesh.model.config_heartbeat_subscription_status.status",
9936 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
9939 { &hf_btmesh_config_heartbeat_subscription_status_source
,
9940 { "Source", "btmesh.model.config_heartbeat_subscription_status.source",
9941 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9944 { &hf_btmesh_config_heartbeat_subscription_status_destination
,
9945 { "Destination", "btmesh.model.config_heartbeat_subscription_status.destination",
9946 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9949 { &hf_btmesh_config_heartbeat_subscription_status_periodlog
,
9950 { "PeriodLog", "btmesh.model.config_heartbeat_subscription_status.periodlog",
9951 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9954 { &hf_btmesh_config_heartbeat_subscription_status_countlog
,
9955 { "CountLog", "btmesh.model.config_heartbeat_subscription_status.countlog",
9956 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9959 { &hf_btmesh_config_heartbeat_subscription_status_minhops
,
9960 { "MinHops", "btmesh.model.config_heartbeat_subscription_status.minhops",
9961 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9964 { &hf_btmesh_config_heartbeat_subscription_status_maxhops
,
9965 { "MaxHops", "btmesh.model.config_heartbeat_subscription_status.maxhops",
9966 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9969 { &hf_btmesh_config_model_app_bind_elementaddress
,
9970 { "ElementAddress", "btmesh.model.config_model_app_bind.elementaddress",
9971 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9974 { &hf_btmesh_config_model_app_bind_appkeyindex
,
9975 { "AppKeyIndex", "btmesh.model.config_model_app_bind.appkeyindex",
9976 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
9979 { &hf_btmesh_config_model_app_bind_appkeyindex_idx
,
9980 { "AppKeyIndex", "btmesh.model.config_model_app_bind.appkeyindex.idx",
9981 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
9984 { &hf_btmesh_config_model_app_bind_appkeyindex_rfu
,
9985 { "RFU", "btmesh.model.config_model_app_bind.appkeyindex.rfu",
9986 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
9989 { &hf_btmesh_config_model_app_bind_modelidentifier
,
9990 { "ModelIdentifier", "btmesh.model.config_model_app_bind.modelidentifier",
9991 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
9994 { &hf_btmesh_config_model_app_bind_vendormodelidentifier
,
9995 { "ModelIdentifier", "btmesh.model.config_model_app_bind.vendormodelidentifier",
9996 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
9999 { &hf_btmesh_config_model_app_status_status
,
10000 { "Status", "btmesh.model.config_model_app_status.status",
10001 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
10004 { &hf_btmesh_config_model_app_status_elementaddress
,
10005 { "ElementAddress", "btmesh.model.config_model_app_status.elementaddress",
10006 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10009 { &hf_btmesh_config_model_app_status_appkeyindex
,
10010 { "AppKeyIndex", "btmesh.model.config_model_app_status.appkeyindex",
10011 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10014 { &hf_btmesh_config_model_app_status_appkeyindex_idx
,
10015 { "AppKeyIndex", "btmesh.model.config_model_app_status.appkeyindex.idx",
10016 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10019 { &hf_btmesh_config_model_app_status_appkeyindex_rfu
,
10020 { "RFU", "btmesh.model.config_model_app_status.appkeyindex.rfu",
10021 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10024 { &hf_btmesh_config_model_app_status_modelidentifier
,
10025 { "ModelIdentifier", "btmesh.model.config_model_app_status.modelidentifier",
10026 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
10029 { &hf_btmesh_config_model_app_status_vendormodelidentifier
,
10030 { "ModelIdentifier", "btmesh.model.config_model_app_status.vendormodelidentifier",
10031 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
10034 { &hf_btmesh_config_model_app_unbind_elementaddress
,
10035 { "ElementAddress", "btmesh.model.config_model_app_unbind.elementaddress",
10036 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10039 { &hf_btmesh_config_model_app_unbind_appkeyindex
,
10040 { "AppKeyIndex", "btmesh.model.config_model_app_unbind.appkeyindex",
10041 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10044 { &hf_btmesh_config_model_app_unbind_appkeyindex_idx
,
10045 { "AppKeyIndex", "btmesh.model.config_model_app_unbind.appkeyindex.idx",
10046 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10049 { &hf_btmesh_config_model_app_unbind_appkeyindex_rfu
,
10050 { "AppKeyIndex", "btmesh.model.config_model_app_unbind.appkeyindex.rfu",
10051 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10054 { &hf_btmesh_config_model_app_unbind_modelidentifier
,
10055 { "ModelIdentifier", "btmesh.model.config_model_app_unbind.modelidentifier",
10056 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
10059 { &hf_btmesh_config_model_app_unbind_vendormodelidentifier
,
10060 { "ModelIdentifier", "btmesh.model.config_model_app_unbind.vendormodelidentifier",
10061 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
10064 { &hf_btmesh_config_netkey_add_netkeyindex
,
10065 { "NetKeyIndex", "btmesh.model.config_netkey_add.netkeyindex",
10066 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10069 { &hf_btmesh_config_netkey_add_netkeyindex_idx
,
10070 { "NetKeyIndex", "btmesh.model.config_netkey_add.netkeyindex.idx",
10071 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10074 { &hf_btmesh_config_netkey_add_netkeyindex_rfu
,
10075 { "RFU", "btmesh.model.config_netkey_add.netkeyindex.rfu",
10076 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10079 { &hf_btmesh_config_netkey_add_netkey
,
10080 { "NetKey", "btmesh.model.config_netkey_add.netkey",
10081 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10084 { &hf_btmesh_config_netkey_delete_netkeyindex
,
10085 { "NetKeyIndex", "btmesh.model.config_netkey_delete.netkeyindex",
10086 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10089 { &hf_btmesh_config_netkey_delete_netkeyindex_idx
,
10090 { "NetKeyIndex", "btmesh.model.config_netkey_delete.netkeyindex.idx",
10091 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10094 { &hf_btmesh_config_netkey_delete_netkeyindex_rfu
,
10095 { "RFU", "btmesh.model.config_netkey_delete.netkeyindex.rfu",
10096 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10099 { &hf_btmesh_config_netkey_list_netkeyindex
,
10100 { "NetKeyIndex", "btmesh.model.config_netkey_list.netkeyindex",
10101 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10104 { &hf_btmesh_config_netkey_list_netkeyindex_rfu
,
10105 { "NetKeyIndex RFU", "btmesh.model.config_netkey_list.netkeyindex.rfu",
10106 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0x0,
10109 { &hf_btmesh_config_netkey_status_status
,
10110 { "Status", "btmesh.model.config_netkey_status.status",
10111 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
10114 { &hf_btmesh_config_netkey_status_netkeyindex
,
10115 { "NetKeyIndex", "btmesh.model.config_netkey_status.netkeyindex",
10116 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10119 { &hf_btmesh_config_netkey_status_netkeyindex_idx
,
10120 { "NetKeyIndex", "btmesh.model.config_netkey_status.netkeyindex.idx",
10121 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10124 { &hf_btmesh_config_netkey_status_netkeyindex_rfu
,
10125 { "RFU", "btmesh.model.config_netkey_status.netkeyindex.rfu",
10126 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10129 { &hf_btmesh_config_netkey_update_netkeyindex
,
10130 { "NetKeyIndex", "btmesh.model.config_netkey_update.netkeyindex",
10131 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10134 { &hf_btmesh_config_netkey_update_netkeyindex_idx
,
10135 { "NetKeyIndex", "btmesh.model.config_netkey_update.netkeyindex.idx",
10136 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10139 { &hf_btmesh_config_netkey_update_netkeyindex_rfu
,
10140 { "RFU", "btmesh.model.config_netkey_update.netkeyindex.rfu",
10141 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10144 { &hf_btmesh_config_netkey_update_netkey
,
10145 { "NetKey", "btmesh.model.config_netkey_update.netkey",
10146 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10149 { &hf_btmesh_config_node_identity_get_netkeyindex
,
10150 { "NetKeyIndex", "btmesh.model.config_node_identity_get.netkeyindex",
10151 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10154 { &hf_btmesh_config_node_identity_get_netkeyindex_idx
,
10155 { "NetKeyIndex", "btmesh.model.config_node_identity_get.netkeyindex.idx",
10156 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10159 { &hf_btmesh_config_node_identity_get_netkeyindex_rfu
,
10160 { "RFU", "btmesh.model.config_node_identity_get.netkeyindex.rfu",
10161 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10164 { &hf_btmesh_config_node_identity_set_netkeyindex
,
10165 { "NetKeyIndex", "btmesh.model.config_node_identity_set.netkeyindex",
10166 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10169 { &hf_btmesh_config_node_identity_set_netkeyindex_idx
,
10170 { "NetKeyIndex", "btmesh.model.config_node_identity_set.netkeyindex.idx",
10171 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10174 { &hf_btmesh_config_node_identity_set_netkeyindex_rfu
,
10175 { "RFU", "btmesh.model.config_node_identity_set.netkeyindex.rfu",
10176 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10179 { &hf_btmesh_config_node_identity_set_identity
,
10180 { "Identity", "btmesh.model.config_node_identity_set.identity",
10181 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10184 { &hf_btmesh_config_node_identity_status_status
,
10185 { "Status", "btmesh.model.config_node_identity_status.status",
10186 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
10189 { &hf_btmesh_config_node_identity_status_netkeyindex
,
10190 { "NetKeyIndex", "btmesh.model.config_node_identity_status.netkeyindex",
10191 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10194 { &hf_btmesh_config_node_identity_status_netkeyindex_idx
,
10195 { "NetKeyIndex", "btmesh.model.config_node_identity_status.netkeyindex.idx",
10196 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0FFF,
10199 { &hf_btmesh_config_node_identity_status_netkeyindex_rfu
,
10200 { "RFU", "btmesh.model.config_node_identity_status.netkeyindex.rfu",
10201 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0xF000,
10204 { &hf_btmesh_config_node_identity_status_identity
,
10205 { "Identity", "btmesh.model.config_node_identity_status.identity",
10206 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10209 { &hf_btmesh_config_sig_model_app_get_elementaddress
,
10210 { "ElementAddress", "btmesh.model.config_sig_model_app_get.elementaddress",
10211 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10214 { &hf_btmesh_config_sig_model_app_get_modelidentifier
,
10215 { "ModelIdentifier", "btmesh.model.config_sig_model_app_get.modelidentifier",
10216 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
10219 { &hf_btmesh_config_sig_model_app_list_status
,
10220 { "Status", "btmesh.model.config_sig_model_app_list.status",
10221 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
10224 { &hf_btmesh_config_sig_model_app_list_elementaddress
,
10225 { "ElementAddress", "btmesh.model.config_sig_model_app_list.elementaddress",
10226 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10229 { &hf_btmesh_config_sig_model_app_list_modelidentifier
,
10230 { "ModelIdentifier", "btmesh.model.config_sig_model_app_list.modelidentifier",
10231 FT_UINT16
, BASE_HEX
, VALS(btmesh_model_vals
), 0x0,
10234 { &hf_btmesh_config_sig_model_app_list_appkeyindex
,
10235 { "AppKeyIndex", "btmesh.model.config_sig_model_app_list.appkeyindex",
10236 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10239 { &hf_btmesh_config_sig_model_app_list_appkeyindex_rfu
,
10240 { "RFU", "btmesh.model.config_sig_model_app_list.appkeyindex.rfu",
10241 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0x0,
10244 { &hf_btmesh_config_vendor_model_app_get_elementaddress
,
10245 { "ElementAddress", "btmesh.model.config_vendor_model_app_get.elementaddress",
10246 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10249 { &hf_btmesh_config_vendor_model_app_get_modelidentifier
,
10250 { "ModelIdentifier", "btmesh.model.config_vendor_model_app_get.modelidentifier",
10251 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
10254 { &hf_btmesh_config_vendor_model_app_list_status
,
10255 { "Status", "btmesh.model.config_vendor_model_app_list.status",
10256 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_code_vals
), 0x0,
10259 { &hf_btmesh_config_vendor_model_app_list_elementaddress
,
10260 { "ElementAddress", "btmesh.model.config_vendor_model_app_list.elementaddress",
10261 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10264 { &hf_btmesh_config_vendor_model_app_list_modelidentifier
,
10265 { "ModelIdentifier", "btmesh.model.config_vendor_model_app_list.modelidentifier",
10266 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_vendor_model
), 0x0,
10269 { &hf_btmesh_config_vendor_model_app_list_appkeyindex
,
10270 { "AppKeyIndex", "btmesh.model.config_vendor_model_app_list.appkeyindex",
10271 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index
), 0x0,
10274 { &hf_btmesh_config_vendor_model_app_list_appkeyindex_rfu
,
10275 { "RFU", "btmesh.model.config_vendor_model_app_list.appkeyindex.rfu",
10276 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_key_index_rfu
), 0x0,
10279 { &hf_btmesh_generic_location_global_status_global_latitude
,
10280 { "Global Latitude", "btmesh.model.generic_location_global_status.global_latitude",
10281 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_latitude
), 0x0,
10284 { &hf_btmesh_generic_location_global_status_global_longitude
,
10285 { "Global Longitude", "btmesh.model.generic_location_global_status.global_longitude",
10286 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_longitude
), 0x0,
10289 { &hf_btmesh_generic_location_global_status_global_altitude
,
10290 { "Global Altitude", "btmesh.model.generic_location_global_status.global_altitude",
10291 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_global_altitude
), 0x0,
10294 { &hf_btmesh_generic_location_global_set_global_latitude
,
10295 { "Global Latitude", "btmesh.model.generic_location_global_set.global_latitude",
10296 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_latitude
), 0x0,
10299 { &hf_btmesh_generic_location_global_set_global_longitude
,
10300 { "Global Longitude", "btmesh.model.generic_location_global_set.global_longitude",
10301 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_longitude
), 0x0,
10304 { &hf_btmesh_generic_location_global_set_global_altitude
,
10305 { "Global Altitude", "btmesh.model.generic_location_global_set.global_altitude",
10306 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_global_altitude
), 0x0,
10309 { &hf_btmesh_generic_location_global_set_unacknowledged_global_latitude
,
10310 { "Global Latitude", "btmesh.model.generic_location_global_set_unacknowledged.global_latitude",
10311 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_latitude
), 0x0,
10314 { &hf_btmesh_generic_location_global_set_unacknowledged_global_longitude
,
10315 { "Global Longitude", "btmesh.model.generic_location_global_set_unacknowledged.global_longitude",
10316 FT_INT32
, BASE_CUSTOM
, CF_FUNC(format_global_longitude
), 0x0,
10319 { &hf_btmesh_generic_location_global_set_unacknowledged_global_altitude
,
10320 { "Global Altitude", "btmesh.model.generic_location_global_set_unacknowledged.global_altitude",
10321 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_global_altitude
), 0x0,
10324 { &hf_btmesh_generic_onoff_set_onoff
,
10325 { "OnOff", "btmesh.model.generic_onoff_set.onoff",
10326 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
10329 { &hf_btmesh_generic_onoff_set_tid
,
10330 { "TID", "btmesh.model.generic_onoff_set.tid",
10331 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10334 { &hf_btmesh_generic_onoff_set_transition_time
,
10335 { "Transition Time", "btmesh.model.generic_onoff_set.transition_time",
10336 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10339 { &hf_btmesh_generic_onoff_set_transition_time_resolution
,
10340 { "Step Resolution", "btmesh.model.generic_onoff_set.transition_time.resolution",
10341 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10344 { &hf_btmesh_generic_onoff_set_transition_time_steps
,
10345 { "Number of Steps", "btmesh.model.generic_onoff_set.transition_time.steps",
10346 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10349 { &hf_btmesh_generic_onoff_set_delay
,
10350 { "Delay", "btmesh.model.generic_onoff_set.delay",
10351 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10354 { &hf_btmesh_generic_onoff_set_unacknowledged_onoff
,
10355 { "OnOff", "btmesh.model.generic_onoff_set_unacknowledged.onoff",
10356 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
10359 { &hf_btmesh_generic_onoff_set_unacknowledged_tid
,
10360 { "TID", "btmesh.model.generic_onoff_set_unacknowledged.tid",
10361 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10364 { &hf_btmesh_generic_onoff_set_unacknowledged_transition_time
,
10365 { "Transition Time", "btmesh.model.generic_onoff_set_unacknowledged.transition_time",
10366 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10369 { &hf_btmesh_generic_onoff_set_unacknowledged_transition_time_resolution
,
10370 { "Step Resolution", "btmesh.model.generic_onoff_set_unacknowledged.transition_time.resolution",
10371 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10374 { &hf_btmesh_generic_onoff_set_unacknowledged_transition_time_steps
,
10375 { "Number of Steps", "btmesh.model.generic_onoff_set_unacknowledged.transition_time.steps",
10376 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10379 { &hf_btmesh_generic_onoff_set_unacknowledged_delay
,
10380 { "Delay", "btmesh.model.generic_onoff_set_unacknowledged.delay",
10381 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10384 { &hf_btmesh_generic_onoff_status_present_onoff
,
10385 { "Present OnOff", "btmesh.model.generic_onoff_status.present_onoff",
10386 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
10389 { &hf_btmesh_generic_onoff_status_target_onoff
,
10390 { "Target OnOff", "btmesh.model.generic_onoff_status.target_onoff",
10391 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
10394 { &hf_btmesh_generic_onoff_status_remaining_time
,
10395 { "Remaining Time", "btmesh.model.generic_onoff_status.remaining_time",
10396 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10399 { &hf_btmesh_generic_onoff_status_remaining_time_resolution
,
10400 { "Step Resolution", "btmesh.model.generic_onoff_status.remaining_time.resolution",
10401 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10404 { &hf_btmesh_generic_onoff_status_remaining_time_steps
,
10405 { "Number of Steps", "btmesh.model.generic_onoff_status.remaining_time.steps",
10406 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10409 { &hf_btmesh_generic_level_set_level
,
10410 { "Level", "btmesh.model.generic_level_set.level",
10411 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10414 { &hf_btmesh_generic_level_set_tid
,
10415 { "TID", "btmesh.model.generic_level_set.tid",
10416 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10419 { &hf_btmesh_generic_level_set_transition_time
,
10420 { "Transition Time", "btmesh.model.generic_level_set.transition_time",
10421 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10424 { &hf_btmesh_generic_level_set_transition_time_resolution
,
10425 { "Step Resolution", "btmesh.model.generic_level_set.transition_time.resolution",
10426 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10429 { &hf_btmesh_generic_level_set_transition_time_steps
,
10430 { "Number of Steps", "btmesh.model.generic_level_set.transition_time.steps",
10431 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10434 { &hf_btmesh_generic_level_set_delay
,
10435 { "Delay", "btmesh.model.generic_level_set.delay",
10436 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10439 { &hf_btmesh_generic_level_set_unacknowledged_level
,
10440 { "Level", "btmesh.model.generic_level_set_unacknowledged.level",
10441 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10444 { &hf_btmesh_generic_level_set_unacknowledged_tid
,
10445 { "TID", "btmesh.model.generic_level_set_unacknowledged.tid",
10446 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10449 { &hf_btmesh_generic_level_set_unacknowledged_transition_time
,
10450 { "Transition Time", "btmesh.model.generic_level_set_unacknowledged.transition_time",
10451 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10454 { &hf_btmesh_generic_level_set_unacknowledged_transition_time_resolution
,
10455 { "Step Resolution", "btmesh.model.generic_level_set_unacknowledged.transition_time.resolution",
10456 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10459 { &hf_btmesh_generic_level_set_unacknowledged_transition_time_steps
,
10460 { "Number of Steps", "btmesh.model.generic_level_set_unacknowledged.transition_time.steps",
10461 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10464 { &hf_btmesh_generic_level_set_unacknowledged_delay
,
10465 { "Delay", "btmesh.model.generic_level_set_unacknowledged.delay",
10466 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10469 { &hf_btmesh_generic_level_status_present_level
,
10470 { "Present Level", "btmesh.model.generic_level_status.present_level",
10471 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10474 { &hf_btmesh_generic_level_status_target_level
,
10475 { "Target Level", "btmesh.model.generic_level_status.target_level",
10476 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10479 { &hf_btmesh_generic_level_status_remaining_time
,
10480 { "Remaining Time", "btmesh.model.generic_level_status.remaining_time",
10481 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10484 { &hf_btmesh_generic_level_status_remaining_time_resolution
,
10485 { "Step Resolution", "btmesh.model.generic_level_status.remaining_time.resolution",
10486 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10489 { &hf_btmesh_generic_level_status_remaining_time_steps
,
10490 { "Number of Steps", "btmesh.model.generic_level_status.remaining_time.steps",
10491 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10494 { &hf_btmesh_generic_delta_set_delta_level
,
10495 { "Delta Level", "btmesh.model.generic_delta_set.delta_level",
10496 FT_INT32
, BASE_DEC
, NULL
, 0x0,
10499 { &hf_btmesh_generic_delta_set_tid
,
10500 { "TID", "btmesh.model.generic_delta_set.tid",
10501 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10504 { &hf_btmesh_generic_delta_set_transition_time
,
10505 { "Transition Time", "btmesh.model.generic_delta_set.transition_time",
10506 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10509 { &hf_btmesh_generic_delta_set_transition_time_resolution
,
10510 { "Step Resolution", "btmesh.model.generic_delta_set.transition_time.resolution",
10511 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10514 { &hf_btmesh_generic_delta_set_transition_time_steps
,
10515 { "Number of Steps", "btmesh.model.generic_delta_set.transition_time.steps",
10516 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10519 { &hf_btmesh_generic_delta_set_delay
,
10520 { "Delay", "btmesh.model.generic_delta_set.delay",
10521 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10524 { &hf_btmesh_generic_delta_set_unacknowledged_delta_level
,
10525 { "Delta Level", "btmesh.model.generic_delta_set_unacknowledged.delta_level",
10526 FT_INT32
, BASE_DEC
, NULL
, 0x0,
10529 { &hf_btmesh_generic_delta_set_unacknowledged_tid
,
10530 { "TID", "btmesh.model.generic_delta_set_unacknowledged.tid",
10531 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10534 { &hf_btmesh_generic_delta_set_unacknowledged_transition_time
,
10535 { "Transition Time", "btmesh.model.generic_delta_set_unacknowledged.transition_time",
10536 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10539 { &hf_btmesh_generic_delta_set_unacknowledged_transition_time_resolution
,
10540 { "Step Resolution", "btmesh.model.generic_delta_set_unacknowledged.transition_time.resolution",
10541 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10544 { &hf_btmesh_generic_delta_set_unacknowledged_transition_time_steps
,
10545 { "Number of Steps", "btmesh.model.generic_delta_set_unacknowledged.transition_time.steps",
10546 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10549 { &hf_btmesh_generic_delta_set_unacknowledged_delay
,
10550 { "Delay", "btmesh.model.generic_delta_set_unacknowledged.delay",
10551 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10554 { &hf_btmesh_generic_move_set_delta_level
,
10555 { "Delta Level", "btmesh.model.generic_move_set.delta_level",
10556 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10559 { &hf_btmesh_generic_move_set_tid
,
10560 { "TID", "btmesh.model.generic_move_set.tid",
10561 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10564 { &hf_btmesh_generic_move_set_transition_time
,
10565 { "Transition Time", "btmesh.model.generic_move_set.transition_time",
10566 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10569 { &hf_btmesh_generic_move_set_transition_time_resolution
,
10570 { "Step Resolution", "btmesh.model.generic_move_set.transition_time.resolution",
10571 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10574 { &hf_btmesh_generic_move_set_transition_time_steps
,
10575 { "Number of Steps", "btmesh.model.generic_move_set.transition_time.steps",
10576 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10579 { &hf_btmesh_generic_move_set_delay
,
10580 { "Delay", "btmesh.model.generic_move_set.delay",
10581 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10584 { &hf_btmesh_generic_move_set_unacknowledged_delta_level
,
10585 { "Delta Level", "btmesh.model.generic_move_set_unacknowledged.delta_level",
10586 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10589 { &hf_btmesh_generic_move_set_unacknowledged_tid
,
10590 { "TID", "btmesh.model.generic_move_set_unacknowledged.tid",
10591 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10594 { &hf_btmesh_generic_move_set_unacknowledged_transition_time
,
10595 { "Transition Time", "btmesh.model.generic_move_set_unacknowledged.transition_time",
10596 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10599 { &hf_btmesh_generic_move_set_unacknowledged_transition_time_resolution
,
10600 { "Step Resolution", "btmesh.model.generic_move_set_unacknowledged.transition_time.resolution",
10601 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10604 { &hf_btmesh_generic_move_set_unacknowledged_transition_time_steps
,
10605 { "Number of Steps", "btmesh.model.generic_move_set_unacknowledged.transition_time.steps",
10606 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10609 { &hf_btmesh_generic_move_set_unacknowledged_delay
,
10610 { "Delay", "btmesh.model.generic_move_set_unacknowledged.delay",
10611 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10614 { &hf_btmesh_generic_default_transition_time_set_transition_time
,
10615 { "Transition Time", "btmesh.model.generic_default_transition_time_set.transition_time",
10616 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10619 { &hf_btmesh_generic_default_transition_time_set_transition_time_resolution
,
10620 { "Step Resolution", "btmesh.model.generic_default_transition_time_set.transition_time.resolution",
10621 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10624 { &hf_btmesh_generic_default_transition_time_set_transition_time_steps
,
10625 { "Number of Steps", "btmesh.model.generic_default_transition_time_set.transition_time.steps",
10626 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10629 { &hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time
,
10630 { "Transition Time", "btmesh.model.generic_default_transition_time_set_unacknowledged.transition_time",
10631 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10634 { &hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_resolution
,
10635 { "Step Resolution", "btmesh.model.generic_default_transition_time_set_unacknowledged.transition_time.resolution",
10636 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10639 { &hf_btmesh_generic_default_transition_time_set_unacknowledged_transition_time_steps
,
10640 { "Number of Steps", "btmesh.model.generic_default_transition_time_set_unacknowledged.transition_time.steps",
10641 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10644 { &hf_btmesh_generic_default_transition_time_status_transition_time
,
10645 { "Transition Time", "btmesh.model.generic_default_transition_time_status.transition_time",
10646 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10649 { &hf_btmesh_generic_default_transition_time_status_transition_time_resolution
,
10650 { "Step Resolution", "btmesh.model.generic_default_transition_time_status.transition_time.resolution",
10651 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10654 { &hf_btmesh_generic_default_transition_time_status_transition_time_steps
,
10655 { "Number of Steps", "btmesh.model.generic_default_transition_time_status.transition_time.steps",
10656 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10659 { &hf_btmesh_generic_onpowerup_status_onpowerup
,
10660 { "OnPowerUp", "btmesh.model.generic_onpowerup_status.onpowerup",
10661 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_onpowerup_vals
), 0x0,
10664 { &hf_btmesh_generic_onpowerup_set_onpowerup
,
10665 { "OnPowerUp", "btmesh.model.generic_onpowerup_set.onpowerup",
10666 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_onpowerup_vals
), 0x0,
10669 { &hf_btmesh_generic_onpowerup_set_unacknowledged_onpowerup
,
10670 { "OnPowerUp", "btmesh.model.generic_onpowerup_set_unacknowledged.onpowerup",
10671 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_onpowerup_vals
), 0x0,
10674 { &hf_btmesh_generic_power_level_set_power
,
10675 { "Power", "btmesh.model.generic_power_level_set.power",
10676 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10679 { &hf_btmesh_generic_power_level_set_tid
,
10680 { "TID", "btmesh.model.generic_power_level_set.tid",
10681 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10684 { &hf_btmesh_generic_power_level_set_transition_time
,
10685 { "Transition Time", "btmesh.model.generic_power_level_set.transition_time",
10686 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10689 { &hf_btmesh_generic_power_level_set_transition_time_resolution
,
10690 { "Step Resolution", "btmesh.model.generic_power_level_set.transition_time.resolution",
10691 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10694 { &hf_btmesh_generic_power_level_set_transition_time_steps
,
10695 { "Number of Steps", "btmesh.model.generic_power_level_set.transition_time.steps",
10696 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10699 { &hf_btmesh_generic_power_level_set_delay
,
10700 { "Delay", "btmesh.model.generic_power_level_set.delay",
10701 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10704 { &hf_btmesh_generic_power_level_set_unacknowledged_power
,
10705 { "Power", "btmesh.model.generic_power_level_set_unacknowledged.power",
10706 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10709 { &hf_btmesh_generic_power_level_set_unacknowledged_tid
,
10710 { "TID", "btmesh.model.generic_power_level_set_unacknowledged.tid",
10711 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10714 { &hf_btmesh_generic_power_level_set_unacknowledged_transition_time
,
10715 { "Transition Time", "btmesh.model.generic_power_level_set_unacknowledged.transition_time",
10716 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10719 { &hf_btmesh_generic_power_level_set_unacknowledged_transition_time_resolution
,
10720 { "Step Resolution", "btmesh.model.generic_power_level_set_unacknowledged.transition_time.resolution",
10721 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10724 { &hf_btmesh_generic_power_level_set_unacknowledged_transition_time_steps
,
10725 { "Number of Steps", "btmesh.model.generic_power_level_set_unacknowledged.transition_time.steps",
10726 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10729 { &hf_btmesh_generic_power_level_set_unacknowledged_delay
,
10730 { "Delay", "btmesh.model.generic_power_level_set_unacknowledged.delay",
10731 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
10734 { &hf_btmesh_generic_power_level_status_present_power
,
10735 { "Present Power", "btmesh.model.generic_power_level_status.present_power",
10736 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10739 { &hf_btmesh_generic_power_level_status_target_power
,
10740 { "Target Power", "btmesh.model.generic_power_level_status.target_power",
10741 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10744 { &hf_btmesh_generic_power_level_status_remaining_time
,
10745 { "Remaining Time", "btmesh.model.generic_power_level_status.remaining_time",
10746 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10749 { &hf_btmesh_generic_power_level_status_remaining_time_resolution
,
10750 { "Step Resolution", "btmesh.model.generic_power_level_status.remaining_time.resolution",
10751 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10754 { &hf_btmesh_generic_power_level_status_remaining_time_steps
,
10755 { "Number of Steps", "btmesh.model.generic_power_level_status.remaining_time.steps",
10756 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10759 { &hf_btmesh_generic_power_last_status_power
,
10760 { "Power", "btmesh.model.generic_power_last_status.power",
10761 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10764 { &hf_btmesh_generic_power_default_status_power
,
10765 { "Power", "btmesh.model.generic_power_default_status.power",
10766 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10769 { &hf_btmesh_generic_power_range_status_status_code
,
10770 { "Status Code", "btmesh.model.generic_power_range_status.status_code",
10771 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_status_code_vals
), 0x0,
10774 { &hf_btmesh_generic_power_range_status_range_min
,
10775 { "Range Min", "btmesh.model.generic_power_range_status.range_min",
10776 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10779 { &hf_btmesh_generic_power_range_status_range_max
,
10780 { "Range Max", "btmesh.model.generic_power_range_status.range_max",
10781 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10784 { &hf_btmesh_generic_power_default_set_power
,
10785 { "Power", "btmesh.model.generic_power_default_set.power",
10786 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10789 { &hf_btmesh_generic_power_default_set_unacknowledged_power
,
10790 { "Power", "btmesh.model.generic_power_default_set_unacknowledged.power",
10791 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10794 { &hf_btmesh_generic_power_range_set_range_min
,
10795 { "Range Min", "btmesh.model.generic_power_range_set.range_min",
10796 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10799 { &hf_btmesh_generic_power_range_set_range_max
,
10800 { "Range Max", "btmesh.model.generic_power_range_set.range_max",
10801 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10804 { &hf_btmesh_generic_power_range_set_unacknowledged_range_min
,
10805 { "Range Min", "btmesh.model.generic_power_range_set_unacknowledged.range_min",
10806 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10809 { &hf_btmesh_generic_power_range_set_unacknowledged_range_max
,
10810 { "Range Max", "btmesh.model.generic_power_range_set_unacknowledged.range_max",
10811 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_power
), 0x0,
10814 { &hf_btmesh_generic_battery_status_battery_level
,
10815 { "Battery Level", "btmesh.model.generic_battery_status.battery_level",
10816 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_battery_level
), 0x0,
10819 { &hf_btmesh_generic_battery_status_time_to_discharge
,
10820 { "Time to Discharge", "btmesh.model.generic_battery_status.time_to_discharge",
10821 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_battery_time
), 0x0,
10824 { &hf_btmesh_generic_battery_status_time_to_charge
,
10825 { "Time to Charge", "btmesh.model.generic_battery_status.time_to_charge",
10826 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_battery_time
), 0x0,
10829 { &hf_btmesh_generic_battery_status_flags_presence
,
10830 { "Flags", "btmesh.model.generic_battery_status.flags.presence",
10831 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_battery_flags_presence_vals
), 0x03,
10834 { &hf_btmesh_generic_battery_status_flags_indicator
,
10835 { "Flags", "btmesh.model.generic_battery_status.flags.indicator",
10836 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_battery_flags_indicator_vals
), 0x0C,
10839 { &hf_btmesh_generic_battery_status_flags_charging
,
10840 { "Flags", "btmesh.model.generic_battery_status.flags.charging",
10841 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_battery_flags_charging_vals
), 0x30,
10844 { &hf_btmesh_generic_battery_status_flags_serviceability
,
10845 { "Flags", "btmesh.model.generic_battery_status.flags.serviceability",
10846 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_battery_flags_serviceability_vals
), 0xC0,
10849 { &hf_btmesh_generic_location_local_status_local_north
,
10850 { "Local North", "btmesh.model.generic_location_local_status.local_north",
10851 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_north
), 0x0,
10854 { &hf_btmesh_generic_location_local_status_local_east
,
10855 { "Local East", "btmesh.model.generic_location_local_status.local_east",
10856 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_east
), 0x0,
10859 { &hf_btmesh_generic_location_local_status_local_altitude
,
10860 { "Local Altitude", "btmesh.model.generic_location_local_status.local_altitude",
10861 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_altitude
), 0x0,
10864 { &hf_btmesh_generic_location_local_status_floor_number
,
10865 { "Floor Number", "btmesh.model.generic_location_local_status.floor_number",
10866 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_floor_number
), 0x0,
10869 { &hf_btmesh_generic_location_local_status_uncertainty_stationary
,
10870 { "Stationary", "btmesh.model.generic_location_local_status.uncertainty.stationary",
10871 FT_UINT16
, BASE_DEC
, VALS(btmesh_generic_location_local_stationary_vals
), 0x0001,
10874 { &hf_btmesh_generic_location_local_status_uncertainty_rfu
,
10875 { "RFU", "btmesh.model.generic_location_local_status.uncertainty.rfu",
10876 FT_UINT16
, BASE_DEC
, NULL
, 0x00FE,
10879 { &hf_btmesh_generic_location_local_status_uncertainty_update_time
,
10880 { "Update Time", "btmesh.model.generic_location_local_status.uncertainty.update_time",
10881 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_update_time
), 0x0F00,
10884 { &hf_btmesh_generic_location_local_status_uncertainty_precision
,
10885 { "Precision", "btmesh.model.generic_location_local_status.uncertainty.precision",
10886 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_precision
), 0xF000,
10889 { &hf_btmesh_generic_location_local_set_local_north
,
10890 { "Local North", "btmesh.model.generic_location_local_set.local_north",
10891 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_north
), 0x0,
10894 { &hf_btmesh_generic_location_local_set_local_east
,
10895 { "Local East", "btmesh.model.generic_location_local_set.local_east",
10896 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_east
), 0x0,
10899 { &hf_btmesh_generic_location_local_set_local_altitude
,
10900 { "Local Altitude", "btmesh.model.generic_location_local_set.local_altitude",
10901 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_altitude
), 0x0,
10904 { &hf_btmesh_generic_location_local_set_floor_number
,
10905 { "Floor Number", "btmesh.model.generic_location_local_set.floor_number",
10906 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_floor_number
), 0x0,
10909 { &hf_btmesh_generic_location_local_set_uncertainty_stationary
,
10910 { "Stationary", "btmesh.model.generic_location_local_set.uncertainty.stationary",
10911 FT_UINT16
, BASE_DEC
, VALS(btmesh_generic_location_local_stationary_vals
), 0x0001,
10914 { &hf_btmesh_generic_location_local_set_uncertainty_rfu
,
10915 { "RFU", "btmesh.model.generic_location_local_set.uncertainty.rfu",
10916 FT_UINT16
, BASE_DEC
, NULL
, 0x00FE,
10919 { &hf_btmesh_generic_location_local_set_uncertainty_update_time
,
10920 { "Update Time", "btmesh.model.generic_location_local_set.uncertainty.update_time",
10921 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_update_time
), 0x0F00,
10924 { &hf_btmesh_generic_location_local_set_uncertainty_precision
,
10925 { "Precision", "btmesh.model.generic_location_local_set.uncertainty.precision",
10926 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_precision
), 0xF000,
10929 { &hf_btmesh_generic_location_local_set_unacknowledged_local_north
,
10930 { "Local North", "btmesh.model.generic_location_local_set_unacknowledged.local_north",
10931 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_north
), 0x0,
10934 { &hf_btmesh_generic_location_local_set_unacknowledged_local_east
,
10935 { "Local East", "btmesh.model.generic_location_local_set_unacknowledged.local_east",
10936 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_east
), 0x0,
10939 { &hf_btmesh_generic_location_local_set_unacknowledged_local_altitude
,
10940 { "Local Altitude", "btmesh.model.generic_location_local_set_unacknowledged.local_altitude",
10941 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_local_altitude
), 0x0,
10944 { &hf_btmesh_generic_location_local_set_unacknowledged_floor_number
,
10945 { "Floor Number", "btmesh.model.generic_location_local_set_unacknowledged.floor_number",
10946 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_floor_number
), 0x0,
10949 { &hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_stationary
,
10950 { "Stationary", "btmesh.model.generic_location_local_set_unacknowledged.uncertainty.stationary",
10951 FT_UINT16
, BASE_DEC
, VALS(btmesh_generic_location_local_stationary_vals
), 0x0001,
10954 { &hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_rfu
,
10955 { "RFU", "btmesh.model.generic_location_local_set_unacknowledged.uncertainty.rfu",
10956 FT_UINT16
, BASE_DEC
, NULL
, 0x00FE,
10959 { &hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_update_time
,
10960 { "Update Time", "btmesh.model.generic_location_local_set_unacknowledged.uncertainty.update_time",
10961 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_update_time
), 0x0F00,
10964 { &hf_btmesh_generic_location_local_set_unacknowledged_uncertainty_precision
,
10965 { "Precision", "btmesh.model.generic_location_local_set_unacknowledged.uncertainty.precision",
10966 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_precision
), 0xF000,
10969 { &hf_btmesh_scene_status_status_code
,
10970 { "Status Code", "btmesh.model.scene_status.status_code",
10971 FT_UINT8
, BASE_DEC
, VALS(btmesh_scene_status_code_vals
), 0x0,
10974 { &hf_btmesh_scene_status_current_scene
,
10975 { "Current Scene", "btmesh.model.scene_status.current_scene",
10976 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10979 { &hf_btmesh_scene_status_target_scene
,
10980 { "Target Scene", "btmesh.model.scene_status.target_scene",
10981 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10984 { &hf_btmesh_scene_status_remaining_time
,
10985 { "Remaining Time", "btmesh.model.scene_status.remaining_time",
10986 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
10989 { &hf_btmesh_scene_status_remaining_time_resolution
,
10990 { "Step Resolution", "btmesh.model.scene_status.remaining_time.resolution",
10991 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
10994 { &hf_btmesh_scene_status_remaining_time_steps
,
10995 { "Number of Steps", "btmesh.model.scene_status.remaining_time.steps",
10996 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
10999 { &hf_btmesh_scene_recall_scene_number
,
11000 { "Scene Number", "btmesh.model.scene_recall.scene_number",
11001 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11004 { &hf_btmesh_scene_recall_tid
,
11005 { "TID", "btmesh.model.scene_recall.tid",
11006 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11009 { &hf_btmesh_scene_recall_transition_time
,
11010 { "Transition Time", "btmesh.model.scene_recall.transition_time",
11011 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11014 { &hf_btmesh_scene_recall_transition_time_resolution
,
11015 { "Step Resolution", "btmesh.model.scene_recall.transition_time.resolution",
11016 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11019 { &hf_btmesh_scene_recall_transition_time_steps
,
11020 { "Number of Steps", "btmesh.model.scene_recall.transition_time.steps",
11021 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11024 { &hf_btmesh_scene_recall_delay
,
11025 { "Delay", "btmesh.model.scene_recall.delay",
11026 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11029 { &hf_btmesh_scene_recall_unacknowledged_scene_number
,
11030 { "Scene Number", "btmesh.model.scene_recall_unacknowledged.scene_number",
11031 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11034 { &hf_btmesh_scene_recall_unacknowledged_tid
,
11035 { "TID", "btmesh.model.scene_recall_unacknowledged.tid",
11036 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11039 { &hf_btmesh_scene_recall_unacknowledged_transition_time
,
11040 { "Transition Time", "btmesh.model.scene_recall_unacknowledged.transition_time",
11041 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11044 { &hf_btmesh_scene_recall_unacknowledged_transition_time_resolution
,
11045 { "Step Resolution", "btmesh.model.scene_recall_unacknowledged.transition_time.resolution",
11046 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11049 { &hf_btmesh_scene_recall_unacknowledged_transition_time_steps
,
11050 { "Number of Steps", "btmesh.model.scene_recall_unacknowledged.transition_time.steps",
11051 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11054 { &hf_btmesh_scene_recall_unacknowledged_delay
,
11055 { "Delay", "btmesh.model.scene_recall_unacknowledged.delay",
11056 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11059 { &hf_btmesh_scene_register_status_status_code
,
11060 { "Status Code", "btmesh.model.scene_register_status.status_code",
11061 FT_UINT8
, BASE_DEC
, VALS(btmesh_scene_status_code_vals
), 0x0,
11064 { &hf_btmesh_scene_register_status_current_scene
,
11065 { "Current Scene", "btmesh.model.scene_register_status.current_scene",
11066 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11069 { &hf_btmesh_scene_register_status_scene
,
11070 { "Scene", "btmesh.model.scene_register_status.scene",
11071 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11074 { &hf_btmesh_scene_store_scene_number
,
11075 { "Scene Number", "btmesh.model.scene_store.scene_number",
11076 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11079 { &hf_btmesh_scene_store_unacknowledged_scene_number
,
11080 { "Scene Number", "btmesh.model.scene_store_unacknowledged.scene_number",
11081 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11084 { &hf_btmesh_scene_delete_scene_number
,
11085 { "Scene Number", "btmesh.model.scene_delete.scene_number",
11086 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11089 { &hf_btmesh_scene_delete_unacknowledged_scene_number
,
11090 { "Scene Number", "btmesh.model.scene_delete_unacknowledged.scene_number",
11091 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11094 { &hf_btmesh_time_set_tai_seconds
,
11095 { "TAI Seconds", "btmesh.model.time_set.tai_seconds",
11096 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11099 { &hf_btmesh_time_set_subsecond
,
11100 { "Subsecond", "btmesh.model.time_set.subsecond",
11101 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_subsecond_ms
), 0x0,
11104 { &hf_btmesh_time_set_uncertainty
,
11105 { "Uncertainty", "btmesh.model.time_set.uncertainty",
11106 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_uncertainty_ms
), 0x0,
11109 { &hf_btmesh_time_set_time_authority
,
11110 { "Time Authority", "btmesh.model.time_set.time_authority",
11111 FT_UINT16
, BASE_DEC
, VALS(btmesh_time_authority_vals
), 0x0001,
11114 { &hf_btmesh_time_set_tai_utc_delta
,
11115 { "TAI-UTC Delta", "btmesh.model.time_set.tai_utc_delta",
11116 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_tai_utc_delta_s
), 0xFFFE,
11119 { &hf_btmesh_time_set_time_zone_offset
,
11120 { "Time Zone Offset", "btmesh.model.time_set.time_zone_offset",
11121 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_time_zone_offset_h
), 0x0,
11124 { &hf_btmesh_time_status_tai_seconds
,
11125 { "TAI Seconds", "btmesh.model.time_status.tai_seconds",
11126 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11129 { &hf_btmesh_time_status_subsecond
,
11130 { "Subsecond", "btmesh.model.time_status.subsecond",
11131 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_subsecond_ms
), 0x0,
11134 { &hf_btmesh_time_status_uncertainty
,
11135 { "Uncertainty", "btmesh.model.time_status.uncertainty",
11136 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_uncertainty_ms
), 0x0,
11139 { &hf_btmesh_time_status_time_authority
,
11140 { "Time Authority", "btmesh.model.time_status.time_authority",
11141 FT_UINT16
, BASE_DEC
, VALS(btmesh_time_authority_vals
), 0x0001,
11144 { &hf_btmesh_time_status_tai_utc_delta
,
11145 { "TAI-UTC Delta", "btmesh.model.time_status.tai_utc_delta",
11146 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_tai_utc_delta_s
), 0xFFFE,
11149 { &hf_btmesh_time_status_time_zone_offset
,
11150 { "Time Zone Offset", "btmesh.model.time_status.time_zone_offset",
11151 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_time_zone_offset_h
), 0x0,
11154 { &hf_btmesh_scheduler_schedule_register_month_january
,
11155 { "January", "btmesh.model.schedule_register.month.january",
11156 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00000800,
11159 { &hf_btmesh_scheduler_schedule_register_month_february
,
11160 { "February", "btmesh.model.schedule_register.month.february",
11161 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00001000,
11164 { &hf_btmesh_scheduler_schedule_register_month_march
,
11165 { "March", "btmesh.model.schedule_register.month.march",
11166 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00002000,
11169 { &hf_btmesh_scheduler_schedule_register_month_april
,
11170 { "April", "btmesh.model.schedule_register.month.april",
11171 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00004000,
11174 { &hf_btmesh_scheduler_schedule_register_month_may
,
11175 { "May", "btmesh.model.schedule_register.month.may",
11176 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00008000,
11179 { &hf_btmesh_scheduler_schedule_register_month_june
,
11180 { "June", "btmesh.model.schedule_register.month.june",
11181 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00010000,
11184 { &hf_btmesh_scheduler_schedule_register_month_july
,
11185 { "July", "btmesh.model.schedule_register.month.july",
11186 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00020000,
11189 { &hf_btmesh_scheduler_schedule_register_month_august
,
11190 { "August", "btmesh.model.schedule_register.month.august",
11191 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00040000,
11194 { &hf_btmesh_scheduler_schedule_register_month_september
,
11195 { "September", "btmesh.model.schedule_register.month.september",
11196 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00080000,
11199 { &hf_btmesh_scheduler_schedule_register_month_october
,
11200 { "October", "btmesh.model.schedule_register.month.october",
11201 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00100000,
11204 { &hf_btmesh_scheduler_schedule_register_month_november
,
11205 { "November", "btmesh.model.schedule_register.month.november",
11206 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00200000,
11209 { &hf_btmesh_scheduler_schedule_register_month_december
,
11210 { "December", "btmesh.model.schedule_register.month.december",
11211 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00400000,
11214 { &hf_btmesh_scheduler_schedule_register_day_of_week_monday
,
11215 { "Monday", "btmesh.model.schedule_register.day_of_week.monday",
11216 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00200000,
11219 { &hf_btmesh_scheduler_schedule_register_day_of_week_tuesday
,
11220 { "Tuesday", "btmesh.model.schedule_register.day_of_week.tuesday",
11221 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00400000,
11224 { &hf_btmesh_scheduler_schedule_register_day_of_week_wednesday
,
11225 { "Wednesday", "btmesh.model.schedule_register.day_of_week.wednesday",
11226 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x00800000,
11229 { &hf_btmesh_scheduler_schedule_register_day_of_week_thursday
,
11230 { "Thursday", "btmesh.model.schedule_register.day_of_week.thursday",
11231 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x01000000,
11234 { &hf_btmesh_scheduler_schedule_register_day_of_week_friday
,
11235 { "Friday", "btmesh.model.schedule_register.day_of_week.friday",
11236 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x02000000,
11239 { &hf_btmesh_scheduler_schedule_register_day_of_week_saturday
,
11240 { "Saturday", "btmesh.model.schedule_register.day_of_week.saturday",
11241 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x04000000,
11244 { &hf_btmesh_scheduler_schedule_register_day_of_week_sunday
,
11245 { "Sunday", "btmesh.model.schedule_register.day_of_week.sunday",
11246 FT_UINT32
, BASE_NONE
, VALS(btmesh_yes_or_dash_vals
), 0x08000000,
11249 { &hf_btmesh_scheduler_action_status_index
,
11250 { "Index", "btmesh.model.scheduler_action_status.index",
11251 FT_UINT32
, BASE_DEC
, NULL
, 0x0000000F,
11254 { &hf_btmesh_scheduler_action_status_schedule_register_year
,
11255 { "Year", "btmesh.model.scheduler_action_status.schedule_register.year",
11256 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_year
), 0x000007F0,
11259 { &hf_btmesh_scheduler_action_status_schedule_register_month
,
11260 { "Month", "btmesh.model.scheduler_action_status.schedule_register.month",
11261 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_month
), 0x007FF800,
11264 { &hf_btmesh_scheduler_action_status_schedule_register_day
,
11265 { "Day", "btmesh.model.scheduler_action_status.schedule_register.day",
11266 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day
), 0x0F800000,
11269 { &hf_btmesh_scheduler_action_status_schedule_register_hour
,
11270 { "Hour", "btmesh.model.scheduler_action_status.schedule_register.hour",
11271 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_hour
), 0x000001F0,
11274 { &hf_btmesh_scheduler_action_status_schedule_register_minute
,
11275 { "Minute", "btmesh.model.scheduler_action_status.schedule_register.minute",
11276 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_minute
), 0x00007E00,
11279 { &hf_btmesh_scheduler_action_status_schedule_register_second
,
11280 { "Second", "btmesh.model.scheduler_action_status.schedule_register.second",
11281 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_second
), 0x001F8000,
11284 { &hf_btmesh_scheduler_action_status_schedule_register_day_of_week
,
11285 { "DayOfWeek", "btmesh.model.scheduler_action_status.schedule_register.day_of_week",
11286 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day_of_week
), 0x0FE00000,
11289 { &hf_btmesh_scheduler_action_status_schedule_register_action
,
11290 { "Action", "btmesh.model.scheduler_action_status.schedule_register.action",
11291 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_action
), 0xF0000000,
11294 { &hf_btmesh_scheduler_action_status_schedule_register_transition_time
,
11295 { "Transition Time", "btmesh.model.scheduler_action_status.schedule_register.transition_time",
11296 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11299 { &hf_btmesh_scheduler_action_status_schedule_register_transition_time_resolution
,
11300 { "Step Resolution", "btmesh.model.scheduler_action_status.schedule_register.transition_time.resolution",
11301 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11304 { &hf_btmesh_scheduler_action_status_schedule_register_transition_time_steps
,
11305 { "Number of Steps", "btmesh.model.scheduler_action_status.schedule_register.transition_time.steps",
11306 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11309 { &hf_btmesh_scheduler_action_status_schedule_register_scene_number
,
11310 { "Scene Number", "btmesh.model.scheduler_action_status.schedule_register.scene_number",
11311 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11314 { &hf_btmesh_scheduler_action_set_index
,
11315 { "Index", "btmesh.model.scheduler_action_set.index",
11316 FT_UINT32
, BASE_DEC
, NULL
, 0x0000000F,
11319 { &hf_btmesh_scheduler_action_set_schedule_register_year
,
11320 { "Year", "btmesh.model.scheduler_action_set.schedule_register.year",
11321 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_year
), 0x000007F0,
11324 { &hf_btmesh_scheduler_action_set_schedule_register_month
,
11325 { "Month", "btmesh.model.scheduler_action_set.schedule_register.month",
11326 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_month
), 0x007FF800,
11329 { &hf_btmesh_scheduler_action_set_schedule_register_day
,
11330 { "Day", "btmesh.model.scheduler_action_set.schedule_register.day",
11331 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day
), 0x0F800000,
11334 { &hf_btmesh_scheduler_action_set_schedule_register_hour
,
11335 { "Hour", "btmesh.model.scheduler_action_set.schedule_register.hour",
11336 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_hour
), 0x000001F0,
11339 { &hf_btmesh_scheduler_action_set_schedule_register_minute
,
11340 { "Minute", "btmesh.model.scheduler_action_set.schedule_register.minute",
11341 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_minute
), 0x00007E00,
11344 { &hf_btmesh_scheduler_action_set_schedule_register_second
,
11345 { "Second", "btmesh.model.scheduler_action_set.schedule_register.second",
11346 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_second
), 0x001F8000,
11349 { &hf_btmesh_scheduler_action_set_schedule_register_day_of_week
,
11350 { "DayOfWeek", "btmesh.model.scheduler_action_set.schedule_register.day_of_week",
11351 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day_of_week
), 0x0FE00000,
11354 { &hf_btmesh_scheduler_action_set_schedule_register_action
,
11355 { "Action", "btmesh.model.scheduler_action_set.schedule_register.action",
11356 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_action
), 0xF0000000,
11359 { &hf_btmesh_scheduler_action_set_schedule_register_transition_time
,
11360 { "Transition Time", "btmesh.model.scheduler_action_set.schedule_register.transition_time",
11361 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11364 { &hf_btmesh_scheduler_action_set_schedule_register_transition_time_resolution
,
11365 { "Step Resolution", "btmesh.model.scheduler_action_set.schedule_register.transition_time.resolution",
11366 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11369 { &hf_btmesh_scheduler_action_set_schedule_register_transition_time_steps
,
11370 { "Number of Steps", "btmesh.model.scheduler_action_set.schedule_register.transition_time.steps",
11371 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11374 { &hf_btmesh_scheduler_action_set_schedule_register_scene_number
,
11375 { "Scene Number", "btmesh.model.scheduler_action_set.schedule_register.scene_number",
11376 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11379 { &hf_btmesh_scheduler_action_set_unacknowledged_index
,
11380 { "Index", "btmesh.model.scheduler_action_set_unacknowledged.index",
11381 FT_UINT32
, BASE_DEC
, NULL
, 0x0000000F,
11384 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_year
,
11385 { "Year", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.year",
11386 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_year
), 0x000007F0,
11389 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_month
,
11390 { "Month", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.month",
11391 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_month
), 0x007FF800,
11394 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day
,
11395 { "Day", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.day",
11396 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day
), 0x0F800000,
11399 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_hour
,
11400 { "Hour", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.hour",
11401 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_hour
), 0x000001F0,
11404 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_minute
,
11405 { "Minute", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.minute",
11406 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_minute
), 0x00007E00,
11409 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_second
,
11410 { "Second", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.second",
11411 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_second
), 0x001F8000,
11414 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_day_of_week
,
11415 { "DayOfWeek", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.day_of_week",
11416 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_day_of_week
), 0x0FE00000,
11419 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_action
,
11420 { "Action", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.action",
11421 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(format_scheduler_action
), 0xF0000000,
11424 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time
,
11425 { "Transition Time", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.transition_time",
11426 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11429 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_resolution
,
11430 { "Step Resolution", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.transition_time.resolution",
11431 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11434 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_transition_time_steps
,
11435 { "Number of Steps", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.transition_time.steps",
11436 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11439 { &hf_btmesh_scheduler_action_set_unacknowledged_schedule_register_scene_number
,
11440 { "Scene Number", "btmesh.model.scheduler_action_set_unacknowledged.schedule_register.scene_number",
11441 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11444 { &hf_btmesh_time_role_set_time_role
,
11445 { "Time Role", "btmesh.model.time_role_set.time_role",
11446 FT_UINT8
, BASE_DEC
, VALS(btmesh_time_role_vals
), 0x0,
11449 { &hf_btmesh_time_role_status_time_role
,
11450 { "Time Role", "btmesh.model.time_role_status.time_role",
11451 FT_UINT8
, BASE_DEC
, VALS(btmesh_time_role_vals
), 0x0,
11454 { &hf_btmesh_time_zone_set_time_zone_offset_new
,
11455 { "Time Zone Offset New", "btmesh.model.time_zone_set.time_zone_offset_new",
11456 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_time_zone_offset_h
), 0x0,
11459 { &hf_btmesh_time_zone_set_tai_of_zone_change
,
11460 { "TAI of Zone Change", "btmesh.model.time_zone_set.tai_of_zone_change",
11461 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11464 { &hf_btmesh_time_zone_status_time_zone_offset_current
,
11465 { "Time Zone Offset Current", "btmesh.model.time_zone_status.time_zone_offset_current",
11466 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_time_zone_offset_h
), 0x0,
11469 { &hf_btmesh_time_zone_status_time_zone_offset_new
,
11470 { "Time Zone Offset New", "btmesh.model.time_zone_status.time_zone_offset_new",
11471 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_time_zone_offset_h
), 0x0,
11474 { &hf_btmesh_time_zone_status_tai_of_zone_change
,
11475 { "TAI of Zone Change", "btmesh.model.time_zone_status.tai_of_zone_change",
11476 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11479 { &hf_btmesh_tai_utc_delta_set_tai_utc_delta_new
,
11480 { "TAI-UTC Delta New", "btmesh.model.tai_utc_delta_set.tai_utc_delta_new",
11481 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_tai_utc_delta_s
), 0x7FFF,
11484 { &hf_btmesh_tai_utc_delta_set_padding
,
11485 { "Padding", "btmesh.model.tai_utc_delta_set.padding",
11486 FT_UINT16
, BASE_DEC
, NULL
, 0x8000,
11489 { &hf_btmesh_tai_utc_delta_set_tai_of_delta_change
,
11490 { "TAI of Delta Change", "btmesh.model.tai_utc_delta_set.tai_of_delta_change",
11491 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11494 { &hf_btmesh_tai_utc_delta_status_tai_utc_delta_current
,
11495 { "TAI-UTC Delta Current", "btmesh.model.tai_utc_delta_status.tai_utc_delta_current",
11496 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_tai_utc_delta_s
), 0x7FFF,
11499 { &hf_btmesh_tai_utc_delta_status_padding_1
,
11500 { "Padding 1", "btmesh.model.tai_utc_delta_status.padding_1",
11501 FT_UINT16
, BASE_DEC
, NULL
, 0x8000,
11504 { &hf_btmesh_tai_utc_delta_status_tai_utc_delta_new
,
11505 { "TAI-UTC Delta New", "btmesh.model.tai_utc_delta_status.tai_utc_delta_new",
11506 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_tai_utc_delta_s
), 0x7FFF,
11509 { &hf_btmesh_tai_utc_delta_status_padding_2
,
11510 { "Padding 2", "btmesh.model.tai_utc_delta_status.padding_2",
11511 FT_UINT16
, BASE_DEC
, NULL
, 0x8000,
11514 { &hf_btmesh_tai_utc_delta_status_tai_of_delta_change
,
11515 { "TAI of Delta Change", "btmesh.model.tai_utc_delta_status.tai_of_delta_change",
11516 FT_UINT40
, BASE_CUSTOM
, CF_FUNC(format_tai_to_utc_date
), 0x0,
11519 { &hf_btmesh_scheduler_action_get_index
,
11520 { "Index", "btmesh.model.scheduler_action_get.index",
11521 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11524 { &hf_btmesh_scheduler_status_schedules
,
11525 { "Schedules", "btmesh.model.scheduler_status.schedules",
11526 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11529 { &hf_btmesh_scheduler_status_schedules_schedule_0
,
11530 { "Schedule 0", "btmesh.model.scheduler_status.schedules.schedule_0",
11531 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0001,
11534 { &hf_btmesh_scheduler_status_schedules_schedule_1
,
11535 { "Schedule 1", "btmesh.model.scheduler_status.schedules.schedule_1",
11536 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0002,
11539 { &hf_btmesh_scheduler_status_schedules_schedule_2
,
11540 { "Schedule 2", "btmesh.model.scheduler_status.schedules.schedule_2",
11541 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0004,
11544 { &hf_btmesh_scheduler_status_schedules_schedule_3
,
11545 { "Schedule 3", "btmesh.model.scheduler_status.schedules.schedule_3",
11546 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0008,
11549 { &hf_btmesh_scheduler_status_schedules_schedule_4
,
11550 { "Schedule 4", "btmesh.model.scheduler_status.schedules.schedule_4",
11551 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0010,
11554 { &hf_btmesh_scheduler_status_schedules_schedule_5
,
11555 { "Schedule 5", "btmesh.model.scheduler_status.schedules.schedule_5",
11556 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0020,
11559 { &hf_btmesh_scheduler_status_schedules_schedule_6
,
11560 { "Schedule 6", "btmesh.model.scheduler_status.schedules.schedule_6",
11561 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0040,
11564 { &hf_btmesh_scheduler_status_schedules_schedule_7
,
11565 { "Schedule 7", "btmesh.model.scheduler_status.schedules.schedule_7",
11566 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0080,
11569 { &hf_btmesh_scheduler_status_schedules_schedule_8
,
11570 { "Schedule 8", "btmesh.model.scheduler_status.schedules.schedule_8",
11571 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0100,
11574 { &hf_btmesh_scheduler_status_schedules_schedule_9
,
11575 { "Schedule 9", "btmesh.model.scheduler_status.schedules.schedule_9",
11576 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0200,
11579 { &hf_btmesh_scheduler_status_schedules_schedule_10
,
11580 { "Schedule 10", "btmesh.model.scheduler_status.schedules.schedule_10",
11581 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0400,
11584 { &hf_btmesh_scheduler_status_schedules_schedule_11
,
11585 { "Schedule 11", "btmesh.model.scheduler_status.schedules.schedule_11",
11586 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x0800,
11589 { &hf_btmesh_scheduler_status_schedules_schedule_12
,
11590 { "Schedule 12", "btmesh.model.scheduler_status.schedules.schedule_12",
11591 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x1000,
11594 { &hf_btmesh_scheduler_status_schedules_schedule_13
,
11595 { "Schedule 13", "btmesh.model.scheduler_status.schedules.schedule_13",
11596 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x2000,
11599 { &hf_btmesh_scheduler_status_schedules_schedule_14
,
11600 { "Schedule 14", "btmesh.model.scheduler_status.schedules.schedule_14",
11601 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x4000,
11604 { &hf_btmesh_scheduler_status_schedules_schedule_15
,
11605 { "Schedule 15", "btmesh.model.scheduler_status.schedules.schedule_15",
11606 FT_UINT16
, BASE_NONE
, VALS(btmesh_defined_or_dash_vals
), 0x8000,
11609 { &hf_btmesh_light_lc_property_set_light_lc_property_id
,
11610 { "Light LC Property ID", "btmesh.model.light_lc_property_set.light_lc_property_id",
11611 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
11614 { &hf_btmesh_light_lc_property_set_light_lc_property_value
,
11615 { "Light LC Property Value", "btmesh.model.light_lc_property_set.light_lc_property_value",
11616 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11619 { &hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_id
,
11620 { "Light LC Property ID", "btmesh.model.light_lc_property_set_unacknowledged.light_lc_property_id",
11621 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
11624 { &hf_btmesh_light_lc_property_set_unacknowledged_light_lc_property_value
,
11625 { "Light LC Property Value", "btmesh.model.light_lc_property_set_unacknowledged.light_lc_property_value",
11626 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11629 { &hf_btmesh_light_lc_property_status_light_lc_property_id
,
11630 { "Light LC Property ID", "btmesh.model.light_lc_property_status.light_lc_property_id",
11631 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
11634 { &hf_btmesh_light_lc_property_status_light_lc_property_value
,
11635 { "Light LC Property Value", "btmesh.model.light_lc_property_status.light_lc_property_value",
11636 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11639 { &hf_btmesh_light_lightness_set_lightness
,
11640 { "Lightness", "btmesh.model.light_lightness_set.lightness",
11641 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11644 { &hf_btmesh_light_lightness_set_tid
,
11645 { "TID", "btmesh.model.light_lightness_set.tid",
11646 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11649 { &hf_btmesh_light_lightness_set_transition_time
,
11650 { "Transition Time", "btmesh.model.light_lightness_set.transition_time",
11651 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11654 { &hf_btmesh_light_lightness_set_transition_time_resolution
,
11655 { "Step Resolution", "btmesh.model.light_lightness_set.transition_time.resolution",
11656 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11659 { &hf_btmesh_light_lightness_set_transition_time_steps
,
11660 { "Number of Steps", "btmesh.model.light_lightness_set.transition_time.steps",
11661 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11664 { &hf_btmesh_light_lightness_set_delay
,
11665 { "Delay", "btmesh.model.light_lightness_set.delay",
11666 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11669 { &hf_btmesh_light_lightness_set_unacknowledged_lightness
,
11670 { "Lightness", "btmesh.model.light_lightness_set_unacknowledged.lightness",
11671 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11674 { &hf_btmesh_light_lightness_set_unacknowledged_tid
,
11675 { "TID", "btmesh.model.light_lightness_set_unacknowledged.tid",
11676 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11679 { &hf_btmesh_light_lightness_set_unacknowledged_transition_time
,
11680 { "Transition Time", "btmesh.model.light_lightness_set_unacknowledged.transition_time",
11681 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11684 { &hf_btmesh_light_lightness_set_unacknowledged_transition_time_resolution
,
11685 { "Step Resolution", "btmesh.model.light_lightness_set_unacknowledged.transition_time.resolution",
11686 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11689 { &hf_btmesh_light_lightness_set_unacknowledged_transition_time_steps
,
11690 { "Number of Steps", "btmesh.model.light_lightness_set_unacknowledged.transition_time.steps",
11691 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11694 { &hf_btmesh_light_lightness_set_unacknowledged_delay
,
11695 { "Delay", "btmesh.model.light_lightness_set_unacknowledged.delay",
11696 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11699 { &hf_btmesh_light_lightness_status_present_lightness
,
11700 { "Present Lightness", "btmesh.model.light_lightness_status.present_lightness",
11701 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11704 { &hf_btmesh_light_lightness_status_target_lightness
,
11705 { "Target Lightness", "btmesh.model.light_lightness_status.target_lightness",
11706 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11709 { &hf_btmesh_light_lightness_status_remaining_time
,
11710 { "Remaining Time", "btmesh.model.light_lightness_status.remaining_time",
11711 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11714 { &hf_btmesh_light_lightness_status_remaining_time_resolution
,
11715 { "Step Resolution", "btmesh.model.light_lightness_status.remaining_time.resolution",
11716 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11719 { &hf_btmesh_light_lightness_status_remaining_time_steps
,
11720 { "Number of Steps", "btmesh.model.light_lightness_status.remaining_time.steps",
11721 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11724 { &hf_btmesh_light_lightness_linear_set_lightness
,
11725 { "Lightness", "btmesh.model.light_lightness_linear_set.lightness",
11726 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11729 { &hf_btmesh_light_lightness_linear_set_tid
,
11730 { "TID", "btmesh.model.light_lightness_linear_set.tid",
11731 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11734 { &hf_btmesh_light_lightness_linear_set_transition_time
,
11735 { "Transition Time", "btmesh.model.light_lightness_linear_set.transition_time",
11736 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11739 { &hf_btmesh_light_lightness_linear_set_transition_time_resolution
,
11740 { "Step Resolution", "btmesh.model.light_lightness_linear_set.transition_time.resolution",
11741 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11744 { &hf_btmesh_light_lightness_linear_set_transition_time_steps
,
11745 { "Number of Steps", "btmesh.model.light_lightness_linear_set.transition_time.steps",
11746 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11749 { &hf_btmesh_light_lightness_linear_set_delay
,
11750 { "Delay", "btmesh.model.light_lightness_linear_set.delay",
11751 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11754 { &hf_btmesh_light_lightness_linear_set_unacknowledged_lightness
,
11755 { "Lightness", "btmesh.model.light_lightness_linear_set_unacknowledged.lightness",
11756 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11759 { &hf_btmesh_light_lightness_linear_set_unacknowledged_tid
,
11760 { "TID", "btmesh.model.light_lightness_linear_set_unacknowledged.tid",
11761 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11764 { &hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time
,
11765 { "Transition Time", "btmesh.model.light_lightness_linear_set_unacknowledged.transition_time",
11766 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11769 { &hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_resolution
,
11770 { "Step Resolution", "btmesh.model.light_lightness_linear_set_unacknowledged.transition_time.resolution",
11771 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11774 { &hf_btmesh_light_lightness_linear_set_unacknowledged_transition_time_steps
,
11775 { "Number of Steps", "btmesh.model.light_lightness_linear_set_unacknowledged.transition_time.steps",
11776 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11779 { &hf_btmesh_light_lightness_linear_set_unacknowledged_delay
,
11780 { "Delay", "btmesh.model.light_lightness_linear_set_unacknowledged.delay",
11781 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11784 { &hf_btmesh_light_lightness_linear_status_present_lightness
,
11785 { "Present Lightness", "btmesh.model.light_lightness_linear_status.present_lightness",
11786 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11789 { &hf_btmesh_light_lightness_linear_status_target_lightness
,
11790 { "Target Lightness", "btmesh.model.light_lightness_linear_status.target_lightness",
11791 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11794 { &hf_btmesh_light_lightness_linear_status_remaining_time
,
11795 { "Remaining Time", "btmesh.model.light_lightness_linear_status.remaining_time",
11796 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11799 { &hf_btmesh_light_lightness_linear_status_remaining_time_resolution
,
11800 { "Step Resolution", "btmesh.model.light_lightness_linear_status.remaining_time.resolution",
11801 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11804 { &hf_btmesh_light_lightness_linear_status_remaining_time_steps
,
11805 { "Number of Steps", "btmesh.model.light_lightness_linear_status.remaining_time.steps",
11806 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11809 { &hf_btmesh_light_lightness_last_status_lightness
,
11810 { "Lightness", "btmesh.model.light_lightness_last_status.lightness",
11811 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11814 { &hf_btmesh_light_lightness_default_status_lightness
,
11815 { "Lightness", "btmesh.model.light_lightness_default_status.lightness",
11816 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_default
), 0x0,
11819 { &hf_btmesh_light_lightness_range_status_status_code
,
11820 { "Status Code", "btmesh.model.light_lightness_range_status.status_code",
11821 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_status_code_vals
), 0x0,
11824 { &hf_btmesh_light_lightness_range_status_range_min
,
11825 { "Range Min", "btmesh.model.light_lightness_range_status.range_min",
11826 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11829 { &hf_btmesh_light_lightness_range_status_range_max
,
11830 { "Range Max", "btmesh.model.light_lightness_range_status.range_max",
11831 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11834 { &hf_btmesh_light_lightness_default_set_lightness
,
11835 { "Lightness", "btmesh.model.light_lightness_default_set.lightness",
11836 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_default
), 0x0,
11839 { &hf_btmesh_light_lightness_default_set_unacknowledged_lightness
,
11840 { "Lightness", "btmesh.model.light_lightness_default_set_unacknowledged.lightness",
11841 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_default
), 0x0,
11844 { &hf_btmesh_light_lightness_range_set_range_min
,
11845 { "Range Min", "btmesh.model.light_lightness_range_set.range_min",
11846 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11849 { &hf_btmesh_light_lightness_range_set_range_max
,
11850 { "Range Max", "btmesh.model.light_lightness_range_set.range_max",
11851 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11854 { &hf_btmesh_light_lightness_range_set_unacknowledged_range_min
,
11855 { "Range Min", "btmesh.model.light_lightness_range_set_unacknowledged.range_min",
11856 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11859 { &hf_btmesh_light_lightness_range_set_unacknowledged_range_max
,
11860 { "Range Max", "btmesh.model.light_lightness_range_set_unacknowledged.range_max",
11861 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_light_lightness_prohibited
), 0x0,
11864 { &hf_btmesh_light_ctl_set_ctl_lightness
,
11865 { "CTL Lightness", "btmesh.model.light_ctl_set.ctl_lightness",
11866 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11869 { &hf_btmesh_light_ctl_set_ctl_temperature
,
11870 { "CTL Temperature", "btmesh.model.light_ctl_set.ctl_temperature",
11871 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
11874 { &hf_btmesh_light_ctl_set_ctl_delta_uv
,
11875 { "CTL Delta UV", "btmesh.model.light_ctl_set.ctl_delta_uv",
11876 FT_INT16
, BASE_DEC
, NULL
, 0x0,
11879 { &hf_btmesh_light_ctl_set_tid
,
11880 { "TID", "btmesh.model.light_ctl_set.tid",
11881 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11884 { &hf_btmesh_light_ctl_set_transition_time
,
11885 { "Transition Time", "btmesh.model.light_ctl_set.transition_time",
11886 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11889 { &hf_btmesh_light_ctl_set_transition_time_resolution
,
11890 { "Step Resolution", "btmesh.model.light_ctl_set.transition_time.resolution",
11891 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11894 { &hf_btmesh_light_ctl_set_transition_time_steps
,
11895 { "Number of Steps", "btmesh.model.light_ctl_set.transition_time.steps",
11896 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11899 { &hf_btmesh_light_ctl_set_delay
,
11900 { "Delay", "btmesh.model.light_ctl_set.delay",
11901 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11904 { &hf_btmesh_light_ctl_set_unacknowledged_ctl_lightness
,
11905 { "CTL Lightness", "btmesh.model.light_ctl_set_unacknowledged.ctl_lightness",
11906 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11909 { &hf_btmesh_light_ctl_set_unacknowledged_ctl_temperature
,
11910 { "CTL Temperature", "btmesh.model.light_ctl_set_unacknowledged.ctl_temperature",
11911 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
11914 { &hf_btmesh_light_ctl_set_unacknowledged_ctl_delta_uv
,
11915 { "CTL Delta UV", "btmesh.model.light_ctl_set_unacknowledged.ctl_delta_uv",
11916 FT_INT16
, BASE_DEC
, NULL
, 0x0,
11919 { &hf_btmesh_light_ctl_set_unacknowledged_tid
,
11920 { "TID", "btmesh.model.light_ctl_set_unacknowledged.tid",
11921 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11924 { &hf_btmesh_light_ctl_set_unacknowledged_transition_time
,
11925 { "Transition Time", "btmesh.model.light_ctl_set_unacknowledged.transition_time",
11926 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11929 { &hf_btmesh_light_ctl_set_unacknowledged_transition_time_resolution
,
11930 { "Step Resolution", "btmesh.model.light_ctl_set_unacknowledged.transition_time.resolution",
11931 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11934 { &hf_btmesh_light_ctl_set_unacknowledged_transition_time_steps
,
11935 { "Number of Steps", "btmesh.model.light_ctl_set_unacknowledged.transition_time.steps",
11936 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11939 { &hf_btmesh_light_ctl_set_unacknowledged_delay
,
11940 { "Delay", "btmesh.model.light_ctl_set_unacknowledged.delay",
11941 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
11944 { &hf_btmesh_light_ctl_status_present_ctl_lightness
,
11945 { "Present CTL Lightness", "btmesh.model.light_ctl_status.present_ctl_lightness",
11946 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11949 { &hf_btmesh_light_ctl_status_present_ctl_temperature
,
11950 { "Present CTL Temperature", "btmesh.model.light_ctl_status.present_ctl_temperature",
11951 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
11954 { &hf_btmesh_light_ctl_status_target_ctl_lightness
,
11955 { "Target CTL Lightness", "btmesh.model.light_ctl_status.target_ctl_lightness",
11956 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11959 { &hf_btmesh_light_ctl_status_target_ctl_temperature
,
11960 { "Target CTL Temperature", "btmesh.model.light_ctl_status.target_ctl_temperature",
11961 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
11964 { &hf_btmesh_light_ctl_status_remaining_time
,
11965 { "Remaining Time", "btmesh.model.light_ctl_status.remaining_time",
11966 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
11969 { &hf_btmesh_light_ctl_status_remaining_time_resolution
,
11970 { "Step Resolution", "btmesh.model.light_ctl_status.remaining_time.resolution",
11971 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
11974 { &hf_btmesh_light_ctl_status_remaining_time_steps
,
11975 { "Number of Steps", "btmesh.model.light_ctl_status.remaining_time.steps",
11976 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
11979 { &hf_btmesh_light_ctl_temperature_range_status_status_code
,
11980 { "Status Code", "btmesh.model.light_ctl_temperature_range_status.status_code",
11981 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_status_code_vals
), 0x0,
11984 { &hf_btmesh_light_ctl_temperature_range_status_range_min
,
11985 { "Range Min", "btmesh.model.light_ctl_temperature_range_status.range_min",
11986 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
11989 { &hf_btmesh_light_ctl_temperature_range_status_range_max
,
11990 { "Range Max", "btmesh.model.light_ctl_temperature_range_status.range_max",
11991 FT_UINT16
,BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
11994 { &hf_btmesh_light_ctl_temperature_set_ctl_temperature
,
11995 { "CTL Temperature", "btmesh.model.light_ctl_temperature_set.ctl_temperature",
11996 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
11999 { &hf_btmesh_light_ctl_temperature_set_ctl_delta_uv
,
12000 { "CTL Delta UV", "btmesh.model.light_ctl_temperature_set.ctl_delta_uv",
12001 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12004 { &hf_btmesh_light_ctl_temperature_set_tid
,
12005 { "TID", "btmesh.model.light_ctl_temperature_set.tid",
12006 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12009 { &hf_btmesh_light_ctl_temperature_set_transition_time
,
12010 { "Transition Time", "btmesh.model.light_ctl_temperature_set.transition_time",
12011 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12014 { &hf_btmesh_light_ctl_temperature_set_transition_time_resolution
,
12015 { "Step Resolution", "btmesh.model.light_ctl_temperature_set.transition_time.resolution",
12016 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12019 { &hf_btmesh_light_ctl_temperature_set_transition_time_steps
,
12020 { "Number of Steps", "btmesh.model.light_ctl_temperature_set.transition_time.steps",
12021 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12024 { &hf_btmesh_light_ctl_temperature_set_delay
,
12025 { "Delay", "btmesh.model.light_ctl_temperature_set.delay",
12026 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12029 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_temperature
,
12030 { "CTL Temperature", "btmesh.model.light_ctl_temperature_set_unacknowledged.ctl_temperature",
12031 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12034 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_ctl_delta_uv
,
12035 { "CTL Delta UV", "btmesh.model.light_ctl_temperature_set_unacknowledged.ctl_delta_uv",
12036 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12039 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_tid
,
12040 { "TID", "btmesh.model.light_ctl_temperature_set_unacknowledged.tid",
12041 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12044 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time
,
12045 { "Transition Time", "btmesh.model.light_ctl_temperature_set_unacknowledged.transition_time",
12046 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12049 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_resolution
,
12050 { "Step Resolution", "btmesh.model.light_ctl_temperature_set_unacknowledged.transition_time.resolution",
12051 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12054 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_transition_time_steps
,
12055 { "Number of Steps", "btmesh.model.light_ctl_temperature_set_unacknowledged.transition_time.steps",
12056 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12059 { &hf_btmesh_light_ctl_temperature_set_unacknowledged_delay
,
12060 { "Delay", "btmesh.model.light_ctl_temperature_set_unacknowledged.delay",
12061 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12064 { &hf_btmesh_light_ctl_temperature_status_present_ctl_temperature
,
12065 { "Present CTL Temperature", "btmesh.model.light_ctl_temperature_status.present_ctl_temperature",
12066 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12069 { &hf_btmesh_light_ctl_temperature_status_present_ctl_delta_uv
,
12070 { "Present CTL Delta UV", "btmesh.model.light_ctl_temperature_status.present_ctl_delta_uv",
12071 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12074 { &hf_btmesh_light_ctl_temperature_status_target_ctl_temperature
,
12075 { "Target CTL Temperature", "btmesh.model.light_ctl_temperature_status.target_ctl_temperature",
12076 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12079 { &hf_btmesh_light_ctl_temperature_status_target_ctl_delta_uv
,
12080 { "Target CTL Delta UV", "btmesh.model.light_ctl_temperature_status.target_ctl_delta_uv",
12081 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12084 { &hf_btmesh_light_ctl_temperature_status_remaining_time
,
12085 { "Remaining Time", "btmesh.model.light_ctl_temperature_status.remaining_time",
12086 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12089 { &hf_btmesh_light_ctl_temperature_status_remaining_time_resolution
,
12090 { "Step Resolution", "btmesh.model.light_ctl_temperature_status.remaining_time.resolution",
12091 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12094 { &hf_btmesh_light_ctl_temperature_status_remaining_time_steps
,
12095 { "Number of Steps", "btmesh.model.light_ctl_temperature_status.remaining_time.steps",
12096 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12099 { &hf_btmesh_light_ctl_default_status_lightness
,
12100 { "Lightness", "btmesh.model.light_ctl_default_status.lightness",
12101 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12104 { &hf_btmesh_light_ctl_default_status_temperature
,
12105 { "Temperature", "btmesh.model.light_ctl_default_status.temperature",
12106 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12109 { &hf_btmesh_light_ctl_default_status_delta_uv
,
12110 { "Delta UV", "btmesh.model.light_ctl_default_status.delta_uv",
12111 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12114 { &hf_btmesh_light_ctl_default_set_lightness
,
12115 { "Lightness", "btmesh.model.light_ctl_default_set.lightness",
12116 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12119 { &hf_btmesh_light_ctl_default_set_temperature
,
12120 { "Temperature", "btmesh.model.light_ctl_default_set.temperature",
12121 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12124 { &hf_btmesh_light_ctl_default_set_delta_uv
,
12125 { "Delta UV", "btmesh.model.light_ctl_default_set.delta_uv",
12126 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12129 { &hf_btmesh_light_ctl_default_set_unacknowledged_lightness
,
12130 { "Lightness", "btmesh.model.light_ctl_default_set_unacknowledged.lightness",
12131 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12134 { &hf_btmesh_light_ctl_default_set_unacknowledged_temperature
,
12135 { "Temperature", "btmesh.model.light_ctl_default_set_unacknowledged.temperature",
12136 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin
), 0x0,
12139 { &hf_btmesh_light_ctl_default_set_unacknowledged_delta_uv
,
12140 { "Delta UV", "btmesh.model.light_ctl_default_set_unacknowledged.delta_uv",
12141 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12144 { &hf_btmesh_light_ctl_temperature_range_set_range_min
,
12145 { "Range Min", "btmesh.model.light_ctl_temperature_range_set.range_min",
12146 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
12149 { &hf_btmesh_light_ctl_temperature_range_set_range_max
,
12150 { "Range Max", "btmesh.model.light_ctl_temperature_range_set.range_max",
12151 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
12154 { &hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_min
,
12155 { "Range Min", "btmesh.model.light_ctl_temperature_range_set_unacknowledged.range_min",
12156 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
12159 { &hf_btmesh_light_ctl_temperature_range_set_unacknowledged_range_max
,
12160 { "Range Max", "btmesh.model.light_ctl_temperature_range_set_unacknowledged.range_max",
12161 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_temperature_kelvin_unknown
), 0x0,
12164 { &hf_btmesh_light_hsl_hue_set_hue
,
12165 { "Hue", "btmesh.model.light_hsl_hue_set.hue",
12166 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12169 { &hf_btmesh_light_hsl_hue_set_tid
,
12170 { "TID", "btmesh.model.light_hsl_hue_set.tid",
12171 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12174 { &hf_btmesh_light_hsl_hue_set_transition_time
,
12175 { "Transition Time", "btmesh.model.light_hsl_hue_set.transition_time",
12176 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12179 { &hf_btmesh_light_hsl_hue_set_transition_time_resolution
,
12180 { "Step Resolution", "btmesh.model.light_hsl_hue_set.transition_time.resolution",
12181 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12184 { &hf_btmesh_light_hsl_hue_set_transition_time_steps
,
12185 { "Number of Steps", "btmesh.model.light_hsl_hue_set.transition_time.steps",
12186 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12189 { &hf_btmesh_light_hsl_hue_set_delay
,
12190 { "Delay", "btmesh.model.light_hsl_hue_set.delay",
12191 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12194 { &hf_btmesh_light_hsl_hue_set_unacknowledged_hue
,
12195 { "Hue", "btmesh.model.light_hsl_hue_set_unacknowledged.hue",
12196 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12199 { &hf_btmesh_light_hsl_hue_set_unacknowledged_tid
,
12200 { "TID", "btmesh.model.light_hsl_hue_set_unacknowledged.tid",
12201 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12204 { &hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time
,
12205 { "Transition Time", "btmesh.model.light_hsl_hue_set_unacknowledged.transition_time",
12206 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12209 { &hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_resolution
,
12210 { "Step Resolution", "btmesh.model.light_hsl_hue_set_unacknowledged.transition_time.resolution",
12211 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12214 { &hf_btmesh_light_hsl_hue_set_unacknowledged_transition_time_steps
,
12215 { "Number of Steps", "btmesh.model.light_hsl_hue_set_unacknowledged.transition_time.steps",
12216 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12219 { &hf_btmesh_light_hsl_hue_set_unacknowledged_delay
,
12220 { "Delay", "btmesh.model.light_hsl_hue_set_unacknowledged.delay",
12221 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12224 { &hf_btmesh_light_hsl_hue_status_present_hue
,
12225 { "Present Hue", "btmesh.model.light_hsl_hue_status.present_hue",
12226 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12229 { &hf_btmesh_light_hsl_hue_status_target_hue
,
12230 { "Target Hue", "btmesh.model.light_hsl_hue_status.target_hue",
12231 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12234 { &hf_btmesh_light_hsl_hue_status_remaining_time
,
12235 { "Remaining Time", "btmesh.model.light_hsl_hue_status.remaining_time",
12236 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12239 { &hf_btmesh_light_hsl_hue_status_remaining_time_resolution
,
12240 { "Step Resolution", "btmesh.model.light_hsl_hue_status.remaining_time.resolution",
12241 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12244 { &hf_btmesh_light_hsl_hue_status_remaining_time_steps
,
12245 { "Number of Steps", "btmesh.model.light_hsl_hue_status.remaining_time.steps",
12246 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12249 { &hf_btmesh_light_hsl_saturation_set_saturation
,
12250 { "Saturation", "btmesh.model.light_hsl_saturation_set.saturation",
12251 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12254 { &hf_btmesh_light_hsl_saturation_set_tid
,
12255 { "TID", "btmesh.model.light_hsl_saturation_set.tid",
12256 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12259 { &hf_btmesh_light_hsl_saturation_set_transition_time
,
12260 { "Transition Time", "btmesh.model.light_hsl_saturation_set.transition_time",
12261 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12264 { &hf_btmesh_light_hsl_saturation_set_transition_time_resolution
,
12265 { "Step Resolution", "btmesh.model.light_hsl_saturation_set.transition_time.resolution",
12266 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12269 { &hf_btmesh_light_hsl_saturation_set_transition_time_steps
,
12270 { "Number of Steps", "btmesh.model.light_hsl_saturation_set.transition_time.steps",
12271 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12274 { &hf_btmesh_light_hsl_saturation_set_delay
,
12275 { "Delay", "btmesh.model.light_hsl_saturation_set.delay",
12276 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12279 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_saturation
,
12280 { "Saturation", "btmesh.model.light_hsl_saturation_set_unacknowledged.saturation",
12281 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12284 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_tid
,
12285 { "TID", "btmesh.model.light_hsl_saturation_set_unacknowledged.tid",
12286 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12289 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time
,
12290 { "Transition Time", "btmesh.model.light_hsl_saturation_set_unacknowledged.transition_time",
12291 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12294 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_resolution
,
12295 { "Step Resolution", "btmesh.model.light_hsl_saturation_set_unacknowledged.transition_time.resolution",
12296 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12299 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_transition_time_steps
,
12300 { "Number of Steps", "btmesh.model.light_hsl_saturation_set_unacknowledged.transition_time.steps",
12301 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12304 { &hf_btmesh_light_hsl_saturation_set_unacknowledged_delay
,
12305 { "Delay", "btmesh.model.light_hsl_saturation_set_unacknowledged.delay",
12306 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12309 { &hf_btmesh_light_hsl_saturation_status_present_saturation
,
12310 { "Present Saturation", "btmesh.model.light_hsl_saturation_status.present_saturation",
12311 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12314 { &hf_btmesh_light_hsl_saturation_status_target_saturation
,
12315 { "Target Saturation", "btmesh.model.light_hsl_saturation_status.target_saturation",
12316 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12319 { &hf_btmesh_light_hsl_saturation_status_remaining_time
,
12320 { "Remaining Time", "btmesh.model.light_hsl_saturation_status.remaining_time",
12321 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12324 { &hf_btmesh_light_hsl_saturation_status_remaining_time_resolution
,
12325 { "Step Resolution", "btmesh.model.light_hsl_saturation_status.remaining_time.resolution",
12326 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12329 { &hf_btmesh_light_hsl_saturation_status_remaining_time_steps
,
12330 { "Number of Steps", "btmesh.model.light_hsl_saturation_status.remaining_time.steps",
12331 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12334 { &hf_btmesh_light_hsl_set_hsl_lightness
,
12335 { "HSL Lightness", "btmesh.model.light_hsl_set.hsl_lightness",
12336 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12339 { &hf_btmesh_light_hsl_set_hsl_hue
,
12340 { "HSL Hue", "btmesh.model.light_hsl_set.hsl_hue",
12341 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12344 { &hf_btmesh_light_hsl_set_hsl_saturation
,
12345 { "HSL Saturation", "btmesh.model.light_hsl_set.hsl_saturation",
12346 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12349 { &hf_btmesh_light_hsl_set_tid
,
12350 { "TID", "btmesh.model.light_hsl_set.tid",
12351 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12354 { &hf_btmesh_light_hsl_set_transition_time
,
12355 { "Transition Time", "btmesh.model.light_hsl_set.transition_time",
12356 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12359 { &hf_btmesh_light_hsl_set_transition_time_resolution
,
12360 { "Step Resolution", "btmesh.model.light_hsl_set.transition_time.resolution",
12361 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12364 { &hf_btmesh_light_hsl_set_transition_time_steps
,
12365 { "Number of Steps", "btmesh.model.light_hsl_set.transition_time.steps",
12366 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12369 { &hf_btmesh_light_hsl_set_delay
,
12370 { "Delay", "btmesh.model.light_hsl_set.delay",
12371 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12374 { &hf_btmesh_light_hsl_set_unacknowledged_hsl_lightness
,
12375 { "HSL Lightness", "btmesh.model.light_hsl_set_unacknowledged.hsl_lightness",
12376 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12379 { &hf_btmesh_light_hsl_set_unacknowledged_hsl_hue
,
12380 { "HSL Hue", "btmesh.model.light_hsl_set_unacknowledged.hsl_hue",
12381 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12384 { &hf_btmesh_light_hsl_set_unacknowledged_hsl_saturation
,
12385 { "HSL Saturation", "btmesh.model.light_hsl_set_unacknowledged.hsl_saturation",
12386 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12389 { &hf_btmesh_light_hsl_set_unacknowledged_tid
,
12390 { "TID", "btmesh.model.light_hsl_set_unacknowledged.tid",
12391 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12394 { &hf_btmesh_light_hsl_set_unacknowledged_transition_time
,
12395 { "Transition Time", "btmesh.model.light_hsl_set_unacknowledged.transition_time",
12396 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12399 { &hf_btmesh_light_hsl_set_unacknowledged_transition_time_resolution
,
12400 { "Step Resolution", "btmesh.model.light_hsl_set_unacknowledged.transition_time.resolution",
12401 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12404 { &hf_btmesh_light_hsl_set_unacknowledged_transition_time_steps
,
12405 { "Number of Steps", "btmesh.model.light_hsl_set_unacknowledged.transition_time.steps",
12406 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12409 { &hf_btmesh_light_hsl_set_unacknowledged_delay
,
12410 { "Delay", "btmesh.model.light_hsl_set_unacknowledged.delay",
12411 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12414 { &hf_btmesh_light_hsl_status_hsl_lightness
,
12415 { "HSL Lightness", "btmesh.model.light_hsl_status.hsl_lightness",
12416 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12419 { &hf_btmesh_light_hsl_status_hsl_hue
,
12420 { "HSL Hue", "btmesh.model.light_hsl_status.hsl_hue",
12421 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12424 { &hf_btmesh_light_hsl_status_hsl_saturation
,
12425 { "HSL Saturation", "btmesh.model.light_hsl_status.hsl_saturation",
12426 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12429 { &hf_btmesh_light_hsl_status_remaining_time
,
12430 { "Remaining Time", "btmesh.model.light_hsl_status.remaining_time",
12431 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12434 { &hf_btmesh_light_hsl_status_remaining_time_resolution
,
12435 { "Step Resolution", "btmesh.model.light_hsl_status.remaining_time.resolution",
12436 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12439 { &hf_btmesh_light_hsl_status_remaining_time_steps
,
12440 { "Number of Steps", "btmesh.model.light_hsl_status.remaining_time.steps",
12441 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12444 { &hf_btmesh_light_hsl_target_status_hsl_lightness_target
,
12445 { "HSL Lightness Target", "btmesh.model.light_hsl_target_status.hsl_lightness_target",
12446 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12449 { &hf_btmesh_light_hsl_target_status_hsl_hue_target
,
12450 { "HSL Hue Target", "btmesh.model.light_hsl_target_status.hsl_hue_target",
12451 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12454 { &hf_btmesh_light_hsl_target_status_hsl_saturation_target
,
12455 { "HSL Saturation Target", "btmesh.model.light_hsl_target_status.hsl_saturation_target",
12456 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12459 { &hf_btmesh_light_hsl_target_status_remaining_time
,
12460 { "Remaining Time", "btmesh.model.light_hsl_target_status.remaining_time",
12461 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12464 { &hf_btmesh_light_hsl_target_status_remaining_time_resolution
,
12465 { "Step Resolution", "btmesh.model.light_hsl_target_status.remaining_time.resolution",
12466 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12469 { &hf_btmesh_light_hsl_target_status_remaining_time_steps
,
12470 { "Number of Steps", "btmesh.model.light_hsl_target_status.remaining_time.steps",
12471 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12474 { &hf_btmesh_light_hsl_default_status_lightness
,
12475 { "Lightness", "btmesh.model.light_hsl_default_status.lightness",
12476 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12479 { &hf_btmesh_light_hsl_default_status_hue
,
12480 { "Hue", "btmesh.model.light_hsl_default_status.hue",
12481 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12484 { &hf_btmesh_light_hsl_default_status_saturation
,
12485 { "Saturation", "btmesh.model.light_hsl_default_status.saturation",
12486 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12489 { &hf_btmesh_light_hsl_range_status_status_code
,
12490 { "Status Code", "btmesh.model.light_hsl_range_status.status_code",
12491 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_status_code_vals
), 0x0,
12494 { &hf_btmesh_light_hsl_range_status_hue_range_min
,
12495 { "Hue Range Min", "btmesh.model.light_hsl_range_status.hue_range_min",
12496 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12499 { &hf_btmesh_light_hsl_range_status_hue_range_max
,
12500 { "Hue Range Max", "btmesh.model.light_hsl_range_status.hue_range_max",
12501 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12504 { &hf_btmesh_light_hsl_range_status_saturation_range_min
,
12505 { "Saturation Range Min", "btmesh.model.light_hsl_range_status.saturation_range_min",
12506 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12509 { &hf_btmesh_light_hsl_range_status_saturation_range_max
,
12510 { "Saturation Range Max", "btmesh.model.light_hsl_range_status.saturation_range_max",
12511 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12514 { &hf_btmesh_light_hsl_default_set_lightness
,
12515 { "Lightness", "btmesh.model.light_hsl_default_set.lightness",
12516 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12519 { &hf_btmesh_light_hsl_default_set_hue
,
12520 { "Hue", "btmesh.model.light_hsl_default_set.hue",
12521 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12524 { &hf_btmesh_light_hsl_default_set_saturation
,
12525 { "Saturation", "btmesh.model.light_hsl_default_set.saturation",
12526 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12529 { &hf_btmesh_light_hsl_default_set_unacknowledged_lightness
,
12530 { "Lightness", "btmesh.model.light_hsl_default_set_unacknowledged.lightness",
12531 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12534 { &hf_btmesh_light_hsl_default_set_unacknowledged_hue
,
12535 { "Hue", "btmesh.model.light_hsl_default_set_unacknowledged.hue",
12536 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12539 { &hf_btmesh_light_hsl_default_set_unacknowledged_saturation
,
12540 { "Saturation", "btmesh.model.light_hsl_default_set_unacknowledged.saturation",
12541 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12544 { &hf_btmesh_light_hsl_range_set_hue_range_min
,
12545 { "Hue Range Min", "btmesh.model.light_hsl_range_set.hue_range_min",
12546 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12549 { &hf_btmesh_light_hsl_range_set_hue_range_max
,
12550 { "Hue Range Max", "btmesh.model.light_hsl_range_set.hue_range_max",
12551 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12554 { &hf_btmesh_light_hsl_range_set_saturation_range_min
,
12555 { "Saturation Range Min", "btmesh.model.light_hsl_range_set.saturation_range_min",
12556 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12559 { &hf_btmesh_light_hsl_range_set_saturation_range_max
,
12560 { "Saturation Range Max", "btmesh.model.light_hsl_range_set.saturation_range_max",
12561 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12564 { &hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_min
,
12565 { "Hue Range Min", "btmesh.model.light_hsl_range_set_unacknowledged.hue_range_min",
12566 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12569 { &hf_btmesh_light_hsl_range_set_unacknowledged_hue_range_max
,
12570 { "Hue Range Max", "btmesh.model.light_hsl_range_set_unacknowledged.hue_range_max",
12571 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_hsl_hue
), 0x0,
12574 { &hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_min
,
12575 { "Saturation Range Min", "btmesh.model.light_hsl_range_set_unacknowledged.saturation_range_min",
12576 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12579 { &hf_btmesh_light_hsl_range_set_unacknowledged_saturation_range_max
,
12580 { "Saturation Range Max", "btmesh.model.light_hsl_range_set_unacknowledged.saturation_range_max",
12581 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12584 { &hf_btmesh_light_xyl_set_xyl_lightness
,
12585 { "xyL Lightness", "btmesh.model.light_xyl_set.xyl_lightness",
12586 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12589 { &hf_btmesh_light_xyl_set_xyl_x
,
12590 { "xyL x", "btmesh.model.light_xyl_set.xyl_x",
12591 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12594 { &hf_btmesh_light_xyl_set_xyl_y
,
12595 { "xyL y", "btmesh.model.light_xyl_set.xyl_y",
12596 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12599 { &hf_btmesh_light_xyl_set_tid
,
12600 { "TID", "btmesh.model.light_xyl_set.tid",
12601 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12604 { &hf_btmesh_light_xyl_set_transition_time
,
12605 { "Transition Time", "btmesh.model.light_xyl_set.transition_time",
12606 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12609 { &hf_btmesh_light_xyl_set_transition_time_resolution
,
12610 { "Step Resolution", "btmesh.model.light_xyl_set.transition_time.resolution",
12611 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12614 { &hf_btmesh_light_xyl_set_transition_time_steps
,
12615 { "Number of Steps", "btmesh.model.light_xyl_set.transition_time.steps",
12616 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12619 { &hf_btmesh_light_xyl_set_delay
,
12620 { "Delay", "btmesh.model.light_xyl_set.delay",
12621 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12624 { &hf_btmesh_light_xyl_set_unacknowledged_xyl_lightness
,
12625 { "xyL Lightness", "btmesh.model.light_xyl_set_unacknowledged.xyl_lightness",
12626 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12629 { &hf_btmesh_light_xyl_set_unacknowledged_xyl_x
,
12630 { "xyL x", "btmesh.model.light_xyl_set_unacknowledged.xyl_x",
12631 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12634 { &hf_btmesh_light_xyl_set_unacknowledged_xyl_y
,
12635 { "xyL y", "btmesh.model.light_xyl_set_unacknowledged.xyl_y",
12636 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12639 { &hf_btmesh_light_xyl_set_unacknowledged_tid
,
12640 { "TID", "btmesh.model.light_xyl_set_unacknowledged.tid",
12641 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12644 { &hf_btmesh_light_xyl_set_unacknowledged_transition_time
,
12645 { "Transition Time", "btmesh.model.light_xyl_set_unacknowledged.transition_time",
12646 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12649 { &hf_btmesh_light_xyl_set_unacknowledged_transition_time_resolution
,
12650 { "Step Resolution", "btmesh.model.light_xyl_set_unacknowledged.transition_time.resolution",
12651 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12654 { &hf_btmesh_light_xyl_set_unacknowledged_transition_time_steps
,
12655 { "Number of Steps", "btmesh.model.light_xyl_set_unacknowledged.transition_time.steps",
12656 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12659 { &hf_btmesh_light_xyl_set_unacknowledged_delay
,
12660 { "Delay", "btmesh.model.light_xyl_set_unacknowledged.delay",
12661 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12664 { &hf_btmesh_light_xyl_status_xyl_lightness
,
12665 { "xyL Lightness", "btmesh.model.light_xyl_status.xyl_lightness",
12666 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12669 { &hf_btmesh_light_xyl_status_xyl_x
,
12670 { "xyL x", "btmesh.model.light_xyl_status.xyl_x",
12671 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12674 { &hf_btmesh_light_xyl_status_xyl_y
,
12675 { "xyL y", "btmesh.model.light_xyl_status.xyl_y",
12676 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12679 { &hf_btmesh_light_xyl_status_remaining_time
,
12680 { "Remaining Time", "btmesh.model.light_xyl_status.remaining_time",
12681 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12684 { &hf_btmesh_light_xyl_status_remaining_time_resolution
,
12685 { "Step Resolution", "btmesh.model.light_xyl_status.remaining_time.resolution",
12686 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12689 { &hf_btmesh_light_xyl_status_remaining_time_steps
,
12690 { "Number of Steps", "btmesh.model.light_xyl_status.remaining_time.steps",
12691 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12694 { &hf_btmesh_light_xyl_target_status_target_xyl_lightness
,
12695 { "Target xyL Lightness", "btmesh.model.light_xyl_target_status.target_xyl_lightness",
12696 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12699 { &hf_btmesh_light_xyl_target_status_target_xyl_x
,
12700 { "Target xyL x", "btmesh.model.light_xyl_target_status.target_xyl_x",
12701 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12704 { &hf_btmesh_light_xyl_target_status_target_xyl_y
,
12705 { "Target xyL y", "btmesh.model.light_xyl_target_status.target_xyl_y",
12706 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12709 { &hf_btmesh_light_xyl_target_status_remaining_time
,
12710 { "Remaining Time", "btmesh.model.light_xyl_target_status.remaining_time",
12711 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12714 { &hf_btmesh_light_xyl_target_status_remaining_time_resolution
,
12715 { "Step Resolution", "btmesh.model.light_xyl_target_status.remaining_time.resolution",
12716 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12719 { &hf_btmesh_light_xyl_target_status_remaining_time_steps
,
12720 { "Number of Steps", "btmesh.model.light_xyl_target_status.remaining_time.steps",
12721 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12724 { &hf_btmesh_light_xyl_default_status_lightness
,
12725 { "Lightness", "btmesh.model.light_xyl_default_status.lightness",
12726 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12729 { &hf_btmesh_light_xyl_default_status_xyl_x
,
12730 { "xyL x", "btmesh.model.light_xyl_default_status.xyl_x",
12731 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12734 { &hf_btmesh_light_xyl_default_status_xyl_y
,
12735 { "xyL y", "btmesh.model.light_xyl_default_status.xyl_y",
12736 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12739 { &hf_btmesh_light_xyl_range_status_status_code
,
12740 { "Status Code", "btmesh.model.light_xyl_range_status.status_code",
12741 FT_UINT8
, BASE_DEC
, VALS(btmesh_generic_status_code_vals
), 0x0,
12744 { &hf_btmesh_light_xyl_range_status_xyl_x_range_min
,
12745 { "xyL x Range Min", "btmesh.model.light_xyl_range_status.xyl_x_range_min",
12746 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12749 { &hf_btmesh_light_xyl_range_status_xyl_x_range_max
,
12750 { "xyL x Range Max", "btmesh.model.light_xyl_range_status.xyl_x_range_max",
12751 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12754 { &hf_btmesh_light_xyl_range_status_xyl_y_range_min
,
12755 { "xyL y Range Min", "btmesh.model.light_xyl_range_status.xyl_y_range_min",
12756 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12759 { &hf_btmesh_light_xyl_range_status_xyl_y_range_max
,
12760 { "xyL y Range Max", "btmesh.model.light_xyl_range_status.xyl_y_range_max",
12761 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12764 { &hf_btmesh_light_xyl_default_set_lightness
,
12765 { "Lightness", "btmesh.model.light_xyl_default_set.lightness",
12766 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12769 { &hf_btmesh_light_xyl_default_set_xyl_x
,
12770 { "xyL x", "btmesh.model.light_xyl_default_set.xyl_x",
12771 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12774 { &hf_btmesh_light_xyl_default_set_xyl_y
,
12775 { "xyL y", "btmesh.model.light_xyl_default_set.xyl_y",
12776 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12779 { &hf_btmesh_light_xyl_default_set_unacknowledged_lightness
,
12780 { "Lightness", "btmesh.model.light_xyl_default_set_unacknowledged.lightness",
12781 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12784 { &hf_btmesh_light_xyl_default_set_unacknowledged_xyl_x
,
12785 { "xyL x", "btmesh.model.light_xyl_default_set_unacknowledged.xyl_x",
12786 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12789 { &hf_btmesh_light_xyl_default_set_unacknowledged_xyl_y
,
12790 { "xyL y", "btmesh.model.light_xyl_default_set_unacknowledged.xyl_y",
12791 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12794 { &hf_btmesh_light_xyl_range_set_xyl_x_range_min
,
12795 { "xyL x Range Min", "btmesh.model.light_xyl_range_set.xyl_x_range_min",
12796 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12799 { &hf_btmesh_light_xyl_range_set_xyl_x_range_max
,
12800 { "xyL x Range Max", "btmesh.model.light_xyl_range_set.xyl_x_range_max",
12801 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12804 { &hf_btmesh_light_xyl_range_set_xyl_y_range_min
,
12805 { "xyL y Range Min", "btmesh.model.light_xyl_range_set.xyl_y_range_min",
12806 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12809 { &hf_btmesh_light_xyl_range_set_xyl_y_range_max
,
12810 { "xyL y Range Max", "btmesh.model.light_xyl_range_set.xyl_y_range_max",
12811 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12814 { &hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_min
,
12815 { "xyL x Range Min", "btmesh.model.light_xyl_range_set_unacknowledged.xyl_x_range_min",
12816 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12819 { &hf_btmesh_light_xyl_range_set_unacknowledged_xyl_x_range_max
,
12820 { "xyL x Range Max", "btmesh.model.light_xyl_range_set_unacknowledged.xyl_x_range_max",
12821 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12824 { &hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_min
,
12825 { "xyL y Range Min", "btmesh.model.light_xyl_range_set_unacknowledged.xyl_y_range_min",
12826 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12829 { &hf_btmesh_light_xyl_range_set_unacknowledged_xyl_y_range_max
,
12830 { "xyL y Range Max", "btmesh.model.light_xyl_range_set_unacknowledged.xyl_y_range_max",
12831 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_xyl_coordinate
), 0x0,
12834 { &hf_btmesh_light_lc_mode_set_mode
,
12835 { "Mode", "btmesh.model.light_lc_mode_set.mode",
12836 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12839 { &hf_btmesh_light_lc_mode_set_unacknowledged_mode
,
12840 { "Mode", "btmesh.model.light_lc_mode_set_unacknowledged.mode",
12841 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12844 { &hf_btmesh_light_lc_mode_status_mode
,
12845 { "Mode", "btmesh.model.light_lc_mode_status.mode",
12846 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12849 { &hf_btmesh_light_lc_om_set_mode
,
12850 { "Mode", "btmesh.model.light_lc_om_set.mode",
12851 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12854 { &hf_btmesh_light_lc_om_set_unacknowledged_mode
,
12855 { "Mode", "btmesh.model.light_lc_om_set_unacknowledged.mode",
12856 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12859 { &hf_btmesh_light_lc_om_status_mode
,
12860 { "Mode", "btmesh.model.light_lc_om_status.mode",
12861 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12864 { &hf_btmesh_light_lc_light_onoff_set_light_onoff
,
12865 { "Light OnOff", "btmesh.model.light_lc_light_onoff_set.light_onoff",
12866 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12869 { &hf_btmesh_light_lc_light_onoff_set_tid
,
12870 { "TID", "btmesh.model.light_lc_light_onoff_set.tid",
12871 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12874 { &hf_btmesh_light_lc_light_onoff_set_transition_time
,
12875 { "Transition Time", "btmesh.model.light_lc_light_onoff_set.transition_time",
12876 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12879 { &hf_btmesh_light_lc_light_onoff_set_transition_time_resolution
,
12880 { "Step Resolution", "btmesh.model.light_lc_light_onoff_set.transition_time.resolution",
12881 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12884 { &hf_btmesh_light_lc_light_onoff_set_transition_time_steps
,
12885 { "Number of Steps", "btmesh.model.light_lc_light_onoff_set.transition_time.steps",
12886 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12889 { &hf_btmesh_light_lc_light_onoff_set_delay
,
12890 { "Delay", "btmesh.model.light_lc_light_onoff_set.delay",
12891 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12894 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_light_onoff
,
12895 { "Light OnOff", "btmesh.model.light_lc_light_onoff_set_unacknowledged.light_onoff",
12896 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12899 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_tid
,
12900 { "TID", "btmesh.model.light_lc_light_onoff_set_unacknowledged.tid",
12901 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12904 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time
,
12905 { "Transition Time", "btmesh.model.light_lc_light_onoff_set_unacknowledged.transition_time",
12906 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12909 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_resolution
,
12910 { "Step Resolution", "btmesh.model.light_lc_light_onoff_set_unacknowledged.transition_time.resolution",
12911 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12914 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_transition_time_steps
,
12915 { "Number of Steps", "btmesh.model.light_lc_light_onoff_set_unacknowledged.transition_time.steps",
12916 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12919 { &hf_btmesh_light_lc_light_onoff_set_unacknowledged_delay
,
12920 { "Delay", "btmesh.model.light_lc_light_onoff_set_unacknowledged.delay",
12921 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_delay_ms
), 0x0,
12924 { &hf_btmesh_light_lc_light_onoff_status_present_light_onoff
,
12925 { "Present Light OnOff", "btmesh.model.light_lc_light_onoff_status.present_light_onoff",
12926 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12929 { &hf_btmesh_light_lc_light_onoff_status_target_light_onoff
,
12930 { "Target Light OnOff", "btmesh.model.light_lc_light_onoff_status.target_light_onoff",
12931 FT_UINT8
, BASE_DEC
, VALS(btmesh_on_off_vals
), 0x0,
12934 { &hf_btmesh_light_lc_light_onoff_status_remaining_time
,
12935 { "Remaining Time", "btmesh.model.light_lc_light_onoff_status.remaining_time",
12936 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_publish_period
), 0x0,
12939 { &hf_btmesh_light_lc_light_onoff_status_remaining_time_resolution
,
12940 { "Step Resolution", "btmesh.model.light_lc_light_onoff_status.remaining_time.resolution",
12941 FT_UINT8
, BASE_DEC
, VALS(btmesh_publishperiod_resolution_vals
), 0xC0,
12944 { &hf_btmesh_light_lc_light_onoff_status_remaining_time_steps
,
12945 { "Number of Steps", "btmesh.model.light_lc_light_onoff_status.remaining_time.steps",
12946 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
12949 { &hf_btmesh_light_lc_property_get_light_lc_property_id
,
12950 { "Light LC Property ID", "btmesh.model.light_lc_property_get.light_lc_property_id",
12951 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12954 { &hf_btmesh_generic_manufacturer_properties_status_manufacturer_property_id
,
12955 { "Manufacturer Property ID", "btmesh.model.generic_manufacturer_properties_status.manufacturer_property_id",
12956 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12959 { &hf_btmesh_generic_manufacturer_property_set_manufacturer_property_id
,
12960 { "Manufacturer Property ID", "btmesh.model.generic_manufacturer_property_set.manufacturer_property_id",
12961 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12964 { &hf_btmesh_generic_manufacturer_property_set_manufacturer_user_access
,
12965 { "Manufacturer User Access", "btmesh.model.generic_manufacturer_property_set.manufacturer_user_access",
12966 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_manufacturer_user_access
), 0x0,
12969 { &hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_property_id
,
12970 { "Manufacturer Property ID", "btmesh.model.generic_manufacturer_property_set_unacknowledged.manufacturer_property_id",
12971 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12974 { &hf_btmesh_generic_manufacturer_property_set_unacknowledged_manufacturer_user_access
,
12975 { "Manufacturer User Access", "btmesh.model.generic_manufacturer_property_set_unacknowledged.manufacturer_user_access",
12976 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_manufacturer_user_access
), 0x0,
12979 { &hf_btmesh_generic_manufacturer_property_status_manufacturer_property_id
,
12980 { "Manufacturer Property ID", "btmesh.model.generic_manufacturer_property_status.manufacturer_property_id",
12981 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12984 { &hf_btmesh_generic_manufacturer_property_status_manufacturer_user_access
,
12985 { "Manufacturer User Access", "btmesh.model.generic_manufacturer_property_status.manufacturer_user_access",
12986 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_manufacturer_user_access
), 0x0,
12989 { &hf_btmesh_generic_manufacturer_property_status_manufacturer_property_value
,
12990 { "Manufacturer Property Value", "btmesh.model.generic_manufacturer_property_status.manufacturer_property_value",
12991 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12994 { &hf_btmesh_generic_admin_properties_status_admin_property_id
,
12995 { "Admin Property ID", "btmesh.model.generic_admin_properties_status.admin_property_id",
12996 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
12999 { &hf_btmesh_generic_admin_property_set_admin_property_id
,
13000 { "Admin Property ID", "btmesh.model.generic_admin_property_set.admin_property_id",
13001 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13004 { &hf_btmesh_generic_admin_property_set_admin_user_access
,
13005 { "Admin User Access", "btmesh.model.generic_admin_property_set.admin_user_access",
13006 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_admin_user_access
), 0x0,
13009 { &hf_btmesh_generic_admin_property_set_admin_property_value
,
13010 { "Admin Property Value", "btmesh.model.generic_admin_property_set.admin_property_value",
13011 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13014 { &hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_id
,
13015 { "Admin Property ID", "btmesh.model.generic_admin_property_set_unacknowledged.admin_property_id",
13016 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13019 { &hf_btmesh_generic_admin_property_set_unacknowledged_admin_user_access
,
13020 { "Admin User Access", "btmesh.model.generic_admin_property_set_unacknowledged.admin_user_access",
13021 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_admin_user_access
), 0x0,
13024 { &hf_btmesh_generic_admin_property_set_unacknowledged_admin_property_value
,
13025 { "Admin Property Value", "btmesh.model.generic_admin_property_set_unacknowledged.admin_property_value",
13026 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13029 { &hf_btmesh_generic_admin_property_status_admin_property_id
,
13030 { "Admin Property ID", "btmesh.model.generic_admin_property_status.admin_property_id",
13031 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13034 { &hf_btmesh_generic_admin_property_status_admin_user_access
,
13035 { "Admin User Access", "btmesh.model.generic_admin_property_status.admin_user_access",
13036 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_admin_user_access
), 0x0,
13039 { &hf_btmesh_generic_admin_property_status_admin_property_value
,
13040 { "Admin Property Value", "btmesh.model.generic_admin_property_status.admin_property_value",
13041 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13044 { &hf_btmesh_generic_user_properties_status_user_property_id
,
13045 { "User Property ID", "btmesh.model.generic_user_properties_status.user_property_id",
13046 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13049 { &hf_btmesh_generic_user_property_set_user_property_id
,
13050 { "User Property ID", "btmesh.model.generic_user_property_set.user_property_id",
13051 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13054 { &hf_btmesh_generic_user_property_set_user_property_value
,
13055 { "User Property Value", "btmesh.model.generic_user_property_set.user_property_value",
13056 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13059 { &hf_btmesh_generic_user_property_set_unacknowledged_user_property_id
,
13060 { "User Property ID", "btmesh.model.generic_user_property_set_unacknowledged.user_property_id",
13061 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13064 { &hf_btmesh_generic_user_property_set_unacknowledged_user_property_value
,
13065 { "User Property Value", "btmesh.model.generic_user_property_set_unacknowledged.user_property_value",
13066 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13069 { &hf_btmesh_generic_user_property_status_user_property_id
,
13070 { "User Property ID", "btmesh.model.generic_user_property_status.user_property_id",
13071 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13074 { &hf_btmesh_generic_user_property_status_user_access
,
13075 { "User Access", "btmesh.model.generic_user_property_status.user_access",
13076 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_user_access
), 0x0,
13079 { &hf_btmesh_generic_user_property_status_user_property_value
,
13080 { "User Property Value", "btmesh.model.generic_user_property_status.user_property_value",
13081 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13084 { &hf_btmesh_generic_client_properties_get_client_property_id
,
13085 { "Client Property ID", "btmesh.model.generic_client_properties_get.client_property_id",
13086 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13089 { &hf_btmesh_generic_client_properties_status_client_property_id
,
13090 { "Client Property ID", "btmesh.model.generic_client_properties_status.client_property_id",
13091 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13094 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_property_id
,
13095 { "Sensor Property ID", "btmesh.model.sensor_descriptor_status.descriptor_sensor_property_id",
13096 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13099 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_positive_tolerance
,
13100 { "Sensor Positive Tolerance", "btmesh.model.sensor_descriptor_status.descriptor_positive_tolerance",
13101 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_sensor_descriptor_tolerance
), 0x000FFF,
13104 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_negative_tolerance
,
13105 { "Sensor Negative Tolerance", "btmesh.model.sensor_descriptor_status.descriptor_negative_tolerance",
13106 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_sensor_descriptor_tolerance
), 0xFFF000,
13109 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_sampling_function
,
13110 { "Sensor Sampling Function", "btmesh.model.sensor_descriptor_status.descriptor_sensor_sampling_function",
13111 FT_UINT8
, BASE_DEC
, VALS(btmesh_sensor_sampling_function_vals
), 0x0,
13114 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_measurement_period
,
13115 { "Sensor Measurement Period", "btmesh.model.sensor_descriptor_status.descriptor_sensor_measurement_period",
13116 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_sensor_period
), 0x0,
13119 { &hf_btmesh_sensor_descriptor_status_descriptor_sensor_update_interval
,
13120 { "Sensor Update Interval", "btmesh.model.sensor_descriptor_status.descriptor_sensor_update_interval",
13121 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_sensor_period
), 0x0,
13124 { &hf_btmesh_sensor_status_mpid_format
,
13125 { "MPID Format", "btmesh.model.sensor_status.mpid.format",
13126 FT_UINT8
, BASE_DEC
, VALS(btmesh_mpid_format_vals
), 0x01,
13129 { &hf_btmesh_sensor_status_mpid_format_a_length
,
13130 { "MPID Length", "btmesh.model.sensor_status.mpid.format_a.length",
13131 FT_UINT8
, BASE_DEC
, NULL
, 0x1e,
13134 { &hf_btmesh_sensor_status_mpid_format_b_length
,
13135 { "MPID Length", "btmesh.model.sensor_status.mpid.format_b.length",
13136 FT_UINT8
, BASE_DEC
, NULL
, 0xfe,
13139 { &hf_btmesh_sensor_status_mpid_format_a_property_id
,
13140 { "MPID Property ID", "btmesh.model.sensor_status.mpid.format_a.property_id",
13141 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0xFFE0,
13144 { &hf_btmesh_sensor_status_mpid_format_b_property_id
,
13145 { "MPID Property ID", "btmesh.model.sensor_status.mpid.format_b.property_id",
13146 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13149 { &hf_btmesh_sensor_status_raw_value
,
13150 { "Raw Value", "btmesh.model.sensor_status.raw_value",
13151 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13154 { &hf_btmesh_sensor_column_status_property_id
,
13155 { "Property ID", "btmesh.model.sensor_column_status.property_id",
13156 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13159 { &hf_btmesh_sensor_column_status_raw_value_a
,
13160 { "Raw Value A", "btmesh.model.sensor_column_status.raw_value_a",
13161 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13164 { &hf_btmesh_sensor_column_status_raw_value_b
,
13165 { "Raw Value B", "btmesh.model.sensor_column_status.raw_value_b",
13166 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13169 { &hf_btmesh_sensor_column_status_raw_value_c
,
13170 { "Raw Value C", "btmesh.model.sensor_column_status.raw_value_c",
13171 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13174 { &hf_btmesh_sensor_series_status_property_id
,
13175 { "Property ID", "btmesh.model.sensor_series_status.property_id",
13176 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13179 { &hf_btmesh_sensor_series_status_raw_value_a
,
13180 { "Raw Value A", "btmesh.model.sensor_series_status.raw_value_a",
13181 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13184 { &hf_btmesh_sensor_series_status_raw_value_b
,
13185 { "Raw Value B", "btmesh.model.sensor_series_status.raw_value_b",
13186 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13189 { &hf_btmesh_sensor_series_status_raw_value_c
,
13190 { "Raw Value C", "btmesh.model.sensor_series_status.raw_value_c",
13191 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13194 { &hf_btmesh_sensor_cadence_set_property_id
,
13195 { "Property ID", "btmesh.model.sensor_cadence_set.property_id",
13196 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13199 { &hf_btmesh_sensor_cadence_set_fast_cadence_period_divisor
,
13200 { "Fast Cadence Period Divisor", "btmesh.model.sensor_cadence_set.fast_cadence_period_divisor",
13201 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_fast_cadence_period_divisor
), 0x7F,
13204 { &hf_btmesh_sensor_cadence_set_status_trigger_type
,
13205 { "Status Trigger Type", "btmesh.model.sensor_cadence_set.status_trigger_type",
13206 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_trigger_type_vals
), 0x80,
13209 { &hf_btmesh_sensor_cadence_set_status_trigger_delta_down
,
13210 { "Status Trigger Delta Down", "btmesh.model.sensor_cadence_set.status_trigger_delta_down",
13211 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13214 { &hf_btmesh_sensor_cadence_set_status_trigger_delta_up
,
13215 { "Status Trigger Delta Up", "btmesh.model.sensor_cadence_set.status_trigger_delta_up",
13216 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13219 { &hf_btmesh_sensor_cadence_set_status_min_interval
,
13220 { "Status Min Interval", "btmesh.model.sensor_cadence_set.status_min_interval",
13221 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_status_min_interval
), 0x0,
13224 { &hf_btmesh_sensor_cadence_set_fast_cadence_low
,
13225 { "Fast Cadence Low", "btmesh.model.sensor_cadence_set.fast_cadence_low",
13226 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13229 { &hf_btmesh_sensor_cadence_set_fast_cadence_high
,
13230 { "Fast Cadence High", "btmesh.model.sensor_cadence_set.fast_cadence_high",
13231 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13234 { &hf_btmesh_sensor_cadence_set_remainder_not_dissected
,
13235 { "Remainder Not Dissected", "btmesh.model.sensor_cadence_set.remainder_not_dissected",
13236 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13239 { &hf_btmesh_sensor_cadence_set_unacknowledged_property_id
,
13240 { "Property ID", "btmesh.model.sensor_cadence_set_unacknowledged.property_id",
13241 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13244 { &hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_period_divisor
,
13245 { "Fast Cadence Period Divisor", "btmesh.model.sensor_cadence_set_unacknowledged.fast_cadence_period_divisor",
13246 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_fast_cadence_period_divisor
), 0x7F,
13249 { &hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_type
,
13250 { "Status Trigger Type", "btmesh.model.sensor_cadence_set_unacknowledged.status_trigger_type",
13251 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_trigger_type_vals
), 0x80,
13254 { &hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_down
,
13255 { "Status Trigger Delta Down", "btmesh.model.sensor_cadence_set_unacknowledged.status_trigger_delta_down",
13256 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13259 { &hf_btmesh_sensor_cadence_set_unacknowledged_status_trigger_delta_up
,
13260 { "Status Trigger Delta Up", "btmesh.model.sensor_cadence_set_unacknowledged.status_trigger_delta_up",
13261 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13264 { &hf_btmesh_sensor_cadence_set_unacknowledged_status_min_interval
,
13265 { "Status Min Interval", "btmesh.model.sensor_cadence_set_unacknowledged.status_min_interval",
13266 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_status_min_interval
), 0x0,
13269 { &hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_low
,
13270 { "Fast Cadence Low", "btmesh.model.sensor_cadence_set_unacknowledged.fast_cadence_low",
13271 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13274 { &hf_btmesh_sensor_cadence_set_unacknowledged_fast_cadence_high
,
13275 { "Fast Cadence High", "btmesh.model.sensor_cadence_set_unacknowledged.fast_cadence_high",
13276 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13279 { &hf_btmesh_sensor_cadence_set_unacknowledged_remainder_not_dissected
,
13280 { "Remainder Not Dissected", "btmesh.model.sensor_cadence_set_unacknowledged.remainder_not_dissected",
13281 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13284 { &hf_btmesh_sensor_cadence_status_property_id
,
13285 { "Property ID", "btmesh.model.sensor_cadence_status.property_id",
13286 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13289 { &hf_btmesh_sensor_cadence_status_fast_cadence_period_divisor
,
13290 { "Fast Cadence Period Divisor", "btmesh.model.sensor_cadence_status.fast_cadence_period_divisor",
13291 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_fast_cadence_period_divisor
), 0x7F,
13294 { &hf_btmesh_sensor_cadence_status_status_trigger_type
,
13295 { "Status Trigger Type", "btmesh.model.sensor_cadence_status.status_trigger_type",
13296 FT_UINT8
, BASE_DEC
, VALS(btmesh_status_trigger_type_vals
), 0x80,
13299 { &hf_btmesh_sensor_cadence_status_status_trigger_delta_down
,
13300 { "Status Trigger Delta Down", "btmesh.model.sensor_cadence_status.status_trigger_delta_down",
13301 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13304 { &hf_btmesh_sensor_cadence_status_status_trigger_delta_up
,
13305 { "Status Trigger Delta Up", "btmesh.model.sensor_cadence_status.status_trigger_delta_up",
13306 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13309 { &hf_btmesh_sensor_cadence_status_status_min_interval
,
13310 { "Status Min Interval", "btmesh.model.sensor_cadence_status.status_min_interval",
13311 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_status_min_interval
), 0x0,
13314 { &hf_btmesh_sensor_cadence_status_fast_cadence_low
,
13315 { "Fast Cadence Low", "btmesh.model.sensor_cadence_status.fast_cadence_low",
13316 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13319 { &hf_btmesh_sensor_cadence_status_fast_cadence_high
,
13320 { "Fast Cadence High", "btmesh.model.sensor_cadence_status.fast_cadence_high",
13321 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13324 { &hf_btmesh_sensor_cadence_status_remainder_not_dissected
,
13325 { "Remainder Not Dissected", "btmesh.model.sensor_cadence_status.remainder_not_dissected",
13326 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13329 { &hf_btmesh_sensor_settings_status_sensor_property_id
,
13330 { "Sensor Property ID", "btmesh.model.sensor_settings_status.sensor_property_id",
13331 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13334 { &hf_btmesh_sensor_settings_status_sensor_setting_property_id
,
13335 { "Sensor Setting Property ID", "btmesh.model.sensor_settings_status.sensor_setting_property_id",
13336 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13339 { &hf_btmesh_sensor_setting_set_sensor_property_id
,
13340 { "Sensor Property ID", "btmesh.model.sensor_setting_set.sensor_property_id",
13341 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13344 { &hf_btmesh_sensor_setting_set_sensor_setting_property_id
,
13345 { "Sensor Setting Property ID", "btmesh.model.sensor_setting_set.sensor_setting_property_id",
13346 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13349 { &hf_btmesh_sensor_setting_set_sensor_setting_raw
,
13350 { "Sensor Setting Raw", "btmesh.model.sensor_setting_set.sensor_setting_raw",
13351 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13354 { &hf_btmesh_sensor_setting_set_unacknowledged_sensor_property_id
,
13355 { "Sensor Property ID", "btmesh.model.sensor_setting_set_unacknowledged.sensor_property_id",
13356 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13359 { &hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_property_id
,
13360 { "Sensor Setting Property ID", "btmesh.model.sensor_setting_set_unacknowledged.sensor_setting_property_id",
13361 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13364 { &hf_btmesh_sensor_setting_set_unacknowledged_sensor_setting_raw
,
13365 { "Sensor Setting Raw", "btmesh.model.sensor_setting_set_unacknowledged.sensor_setting_raw",
13366 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13369 { &hf_btmesh_sensor_setting_status_sensor_property_id
,
13370 { "Sensor Property ID", "btmesh.model.sensor_setting_status.sensor_property_id",
13371 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13374 { &hf_btmesh_sensor_setting_status_sensor_setting_property_id
,
13375 { "Sensor Setting Property ID", "btmesh.model.sensor_setting_status.sensor_setting_property_id",
13376 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13379 { &hf_btmesh_sensor_setting_status_sensor_setting_access
,
13380 { "Sensor Setting Access", "btmesh.model.sensor_setting_status.sensor_setting_access",
13381 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_sensor_setting_access
), 0x0,
13384 { &hf_btmesh_sensor_setting_status_sensor_setting_raw
,
13385 { "Sensor Setting Raw", "btmesh.model.sensor_setting_status.sensor_setting_raw",
13386 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13389 { &hf_btmesh_generic_manufacturer_property_get_manufacturer_property_id
,
13390 { "Manufacturer Property ID", "btmesh.model.generic_manufacturer_property_get.manufacturer_property_id",
13391 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13394 { &hf_btmesh_generic_admin_property_get_admin_property_id
,
13395 { "Admin Property ID", "btmesh.model.generic_admin_property_get.admin_property_id",
13396 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13399 { &hf_btmesh_generic_user_property_get_user_property_id
,
13400 { "User Property ID", "btmesh.model.generic_user_property_get.user_property_id",
13401 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13404 { &hf_btmesh_sensor_descriptor_get_property_id
,
13405 { "Property ID", "btmesh.model.sensor_descriptor_get.property_id",
13406 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13409 { &hf_btmesh_sensor_get_property_id
,
13410 { "Property ID", "btmesh.model.sensor_get.property_id",
13411 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13414 { &hf_btmesh_sensor_column_get_property_id
,
13415 { "Property ID", "btmesh.model.sensor_column_get.property_id",
13416 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13419 { &hf_btmesh_sensor_column_get_raw_value_a
,
13420 { "Raw Value A", "btmesh.model.sensor_column_get.raw_value_a",
13421 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13424 { &hf_btmesh_sensor_series_get_property_id
,
13425 { "Property ID", "btmesh.model.sensor_series_get.property_id",
13426 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13429 { &hf_btmesh_sensor_series_get_raw_value_a1
,
13430 { "Raw Value A1", "btmesh.model.sensor_series_get.raw_value_a1",
13431 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13434 { &hf_btmesh_sensor_series_get_raw_value_a2
,
13435 { "Raw Value A2", "btmesh.model.sensor_series_get.raw_value_a2",
13436 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13439 { &hf_btmesh_sensor_cadence_get_property_id
,
13440 { "Property ID", "btmesh.model.sensor_cadence_get.property_id",
13441 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13444 { &hf_btmesh_sensor_settings_get_sensor_property_id
,
13445 { "Sensor Property ID", "btmesh.model.sensor_settings_get.sensor_property_id",
13446 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13449 { &hf_btmesh_sensor_setting_get_sensor_property_id
,
13450 { "Sensor Property ID", "btmesh.model.sensor_setting_get.sensor_property_id",
13451 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13454 { &hf_btmesh_sensor_setting_get_sensor_setting_property_id
,
13455 { "Sensor Setting Property ID", "btmesh.model.sensor_setting_get.sensor_setting_property_id",
13456 FT_UINT16
, BASE_DEC
, VALS(btmesh_properties_vals
), 0x0,
13459 { &hf_bt_characteristic_illuminance
,
13460 { "Illuminance", "btmesh.property.illuminance",
13461 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_illuminance
), 0x0,
13464 { &hf_bt_characteristic_perceived_lightness
,
13465 { "Perceived Lightness", "btmesh.property.perceived_lightness",
13466 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13469 { &hf_bt_characteristic_percentage_8
,
13470 { "Percentage 8", "btmesh.property.percentage_8",
13471 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_percentage_8
), 0x0,
13474 { &hf_bt_characteristic_coefficient
,
13475 { "Coefficient", "btmesh.property.coefficient",
13476 FT_FLOAT
, BASE_NONE
, NULL
, 0x0,
13479 { &hf_bt_characteristic_time_millisecond_24
,
13480 { "Time Millisecond 24", "btmesh.property.time_millisecond_24",
13481 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_time_millisecond_24
), 0x0,
13484 { &hf_bt_characteristic_count_16
,
13485 { "Count 16", "btmesh.property.count_16",
13486 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_count_16
), 0x0,
13489 { &hf_bt_phony_characteristic_percentage_change_16
,
13490 { "Percentage Change", "btmesh.property.percentage_change_16",
13491 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_percentage_change_16
), 0x0,
13494 { &hf_bt_phony_characteristic_index
,
13495 { "Index", "btmesh.property.index",
13496 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13499 { &hf_bt_characteristic_time_decihour_8
,
13500 { "Time Decihour 8", "btmesh.property.time_decihour_8",
13501 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_decihour_8
), 0x0,
13504 { &hf_bt_characteristic_temperature_8
,
13505 { "Temperature 8", "btmesh.property.temperature_8",
13506 FT_INT8
, BASE_CUSTOM
, CF_FUNC(format_temperature_8
), 0x0,
13509 { &hf_bt_characteristic_temperature
,
13510 { "Temperature", "btmesh.property.temperature",
13511 FT_INT16
, BASE_CUSTOM
, CF_FUNC(format_temperature
), 0x0,
13514 { &hf_bt_characteristic_electric_current
,
13515 { "Electric Current", "btmesh.property.electric_current",
13516 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_electric_current
), 0x0,
13519 { &hf_bt_characteristic_energy
,
13520 { "Energy", "btmesh.property.energy",
13521 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(format_energy
), 0x0,
13524 { &hf_bt_characteristic_generic_level
,
13525 { "Generic Level", "btmesh.property.generic_level",
13526 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13529 { &hf_bt_characteristic_boolean
,
13530 { "Boolean", "btmesh.property.boolean",
13531 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(format_boolean
), 0x0,
13534 { &hf_bt_characteristic_time_second_16
,
13535 { "Time Second 16", "btmesh.property.time_second_16",
13536 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(format_time_second_16
), 0x0,
13541 static int *ett
[] = {
13543 &ett_btmesh_net_pdu
,
13544 &ett_btmesh_transp_pdu
,
13545 &ett_btmesh_transp_ctrl_msg
,
13546 &ett_btmesh_upper_transp_acc_pdu
,
13547 &ett_btmesh_segmented_access_fragments
,
13548 &ett_btmesh_segmented_access_fragment
,
13549 &ett_btmesh_segmented_control_fragments
,
13550 &ett_btmesh_segmented_control_fragment
,
13551 &ett_btmesh_access_pdu
,
13552 &ett_btmesh_model_layer
,
13553 &ett_btmesh_config_model_netapp_index
,
13554 &ett_btmesh_config_model_publishperiod
,
13555 &ett_btmesh_config_model_publishretransmit
,
13556 &ett_btmesh_config_model_relayretransmit
,
13557 &ett_btmesh_config_model_network_transmit
,
13558 &ett_btmesh_config_model_element
,
13559 &ett_btmesh_config_model_model
,
13560 &ett_btmesh_config_model_vendor
,
13561 &ett_btmesh_config_composition_data_status_features
,
13562 &ett_btmesh_config_model_pub_app_index
,
13563 &ett_btmesh_config_model_addresses
,
13564 &ett_btmesh_config_model_netkey_list
,
13565 &ett_btmesh_config_model_appkey_list
,
13566 &ett_btmesh_config_model_net_index
,
13567 &ett_btmesh_config_model_app_index
,
13568 &ett_btmesh_config_heartbeat_publication_set_features
,
13569 &ett_btmesh_config_heartbeat_publication_status_features
,
13570 &ett_btmesh_config_model_fault_array
,
13571 &ett_btmesh_scene_register_status_scenes
,
13572 &ett_btmesh_scheduler_model_month
,
13573 &ett_btmesh_scheduler_model_day_of_week
,
13574 &ett_btmesh_scheduler_schedules
,
13575 &ett_btmesh_user_property_ids
,
13576 &ett_btmesh_admin_property_ids
,
13577 &ett_btmesh_manufacturer_property_ids
,
13578 &ett_btmesh_generic_client_property_ids
,
13579 &ett_btmesh_sensor_setting_property_ids
,
13582 static ei_register_info ei
[] = {
13583 { &ei_btmesh_not_decoded_yet
,{ "btmesh.not_decoded_yet", PI_PROTOCOL
, PI_NOTE
, "Not decoded yet", EXPFILL
} },
13584 { &ei_btmesh_unknown_payload
,{ "btmesh.unknown_payload", PI_PROTOCOL
, PI_ERROR
, "Unknown Payload", EXPFILL
} },
13587 expert_module_t
* expert_btmesh
;
13589 module_t
*btmesh_module
;
13591 /* UAT Net Key and App Key definitions */
13592 static uat_field_t btmesh_uat_flds
[] = {
13593 UAT_FLD_CSTRING(uat_btmesh_records
, network_key_string
, "Network Key", "Network Key"),
13594 UAT_FLD_CSTRING(uat_btmesh_records
, application_key_string
, "Application Key", "Application Key"),
13595 UAT_FLD_CSTRING(uat_btmesh_records
, ivindex_string
, "IVindex", "IVindex"),
13599 /* UAT Device Key definition */
13600 static uat_field_t btmesh_dev_key_uat_flds
[] = {
13601 UAT_FLD_CSTRING(uat_btmesh_dev_key_records
, device_key_string
, "Device Key", "Device Key"),
13602 UAT_FLD_CSTRING(uat_btmesh_dev_key_records
, src_string
, "SRC Address", "SRC Address"),
13606 /* UAT Label UUID definition */
13607 static uat_field_t btmesh_label_uuid_uat_flds
[] = {
13608 UAT_FLD_CSTRING(uat_btmesh_label_uuid_records
, label_uuid_string
, "Label UUID", "Label UUID"),
13612 proto_btmesh
= proto_register_protocol("Bluetooth Mesh", "BT Mesh", "btmesh");
13614 proto_register_field_array(proto_btmesh
, hf
, array_length(hf
));
13615 proto_register_subtree_array(ett
, array_length(ett
));
13617 expert_btmesh
= expert_register_protocol(proto_btmesh
);
13618 expert_register_field_array(expert_btmesh
, ei
, array_length(ei
));
13620 btmesh_module
= prefs_register_protocol_subtree("Bluetooth", proto_btmesh
, NULL
);
13622 prefs_register_static_text_preference(btmesh_module
, "version",
13623 "Bluetooth Mesh Profile v1.0",
13624 "Version of protocol supported by this dissector.");
13626 btmesh_uat
= uat_new("BTMesh Network and Application keys",
13627 sizeof(uat_btmesh_record_t
), /* record size */
13628 "btmesh_nw_keys", /* filename */
13629 true, /* from_profile */
13630 &uat_btmesh_records
, /* data_ptr */
13631 &num_btmesh_uat
, /* numitems_ptr */
13632 UAT_AFFECTS_DISSECTION
, /* affects dissection of packets, but not set of named fields */
13634 uat_btmesh_record_copy_cb
, /* copy callback */
13635 uat_btmesh_record_update_cb
, /* update callback */
13636 uat_btmesh_record_free_cb
, /* free callback */
13637 NULL
, /* post update callback */
13638 NULL
, /* reset callback */
13639 btmesh_uat_flds
); /* UAT field definitions */
13641 prefs_register_uat_preference(btmesh_module
,
13644 "Configured Mesh Keys",
13647 btmesh_dev_key_uat
= uat_new("BTMesh Device keys",
13648 sizeof(uat_btmesh_dev_key_record_t
), /* record size */
13649 "btmesh_dev_keys", /* filename */
13650 true, /* from_profile */
13651 &uat_btmesh_dev_key_records
, /* data_ptr */
13652 &num_btmesh_dev_key_uat
, /* numitems_ptr */
13653 UAT_AFFECTS_DISSECTION
, /* affects dissection of packets, but not set of named fields */
13655 uat_btmesh_dev_key_record_copy_cb
, /* copy callback */
13656 uat_btmesh_dev_key_record_update_cb
, /* update callback */
13657 uat_btmesh_dev_key_record_free_cb
, /* free callback */
13658 NULL
, /* post update callback */
13659 NULL
, /* reset callback */
13660 btmesh_dev_key_uat_flds
); /* UAT field definitions */
13662 prefs_register_uat_preference(btmesh_module
,
13663 "mesh_dev_key_table",
13665 "Configured Mesh Device Keys",
13666 btmesh_dev_key_uat
);
13668 btmesh_label_uuid_uat
= uat_new("BTMesh Label UUIDs",
13669 sizeof(uat_btmesh_label_uuid_record_t
), /* record size */
13670 "btmesh_label_uuids", /* filename */
13671 true, /* from_profile */
13672 &uat_btmesh_label_uuid_records
, /* data_ptr */
13673 &num_btmesh_label_uuid_uat
, /* numitems_ptr */
13674 UAT_AFFECTS_DISSECTION
, /* affects dissection of packets, but not set of named fields */
13676 uat_btmesh_label_uuid_record_copy_cb
, /* copy callback */
13677 uat_btmesh_label_uuid_record_update_cb
, /* update callback */
13678 uat_btmesh_label_uuid_record_free_cb
, /* free callback */
13679 NULL
, /* post update callback */
13680 NULL
, /* reset callback */
13681 btmesh_label_uuid_uat_flds
); /* UAT field definitions */
13683 prefs_register_uat_preference(btmesh_module
,
13684 "mesh_label_uuid_table",
13686 "Configured Mesh Label UUIDs",
13687 btmesh_label_uuid_uat
);
13689 btmesh_model_vendor_dissector_table
= register_dissector_table("btmesh.model.vendor", "BT Mesh model vendor", proto_btmesh
, FT_UINT16
, BASE_DEC
);
13691 register_dissector("btmesh.msg", dissect_btmesh_msg
, proto_btmesh
);
13693 reassembly_table_register(&upper_transport_reassembly_table
, &upper_transport_reassembly_table_functions
);
13700 * c-basic-offset: 4
13702 * indent-tabs-mode: nil
13705 * ex: set shiftwidth=4 tabstop=8 expandtab:
13706 * :indentSize=4:tabSize=8:noTabs=true: