Coverage Report

Created: 2026-01-02 06:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-rdm.c
Line
Count
Source
1
/* packet-rdm.c
2
 * RDM (Remote Device Management) packet disassembly.
3
 *
4
 * This dissector is written by
5
 *
6
 *  Erwin Rol <erwin@erwinrol.com>
7
 *  Copyright 2003, 2011, 2012 Erwin Rol
8
 *
9
 *  Shaun Jackman <sjackman@gmail.com>
10
 *  Copyright 2006 Pathway Connectivity
11
 *
12
 *  Wireshark - Network traffic analyzer
13
 *  Gerald Combs <gerald@wireshark.org>
14
 *  Copyright 1999 Gerald Combs
15
 *
16
 * SPDX-License-Identifier: GPL-2.0-or-later
17
 */
18
19
/*
20
 * ANSI E1.20-2006, Entertainment Technology
21
 * Remote Device Management over USITT DMX512, describes a method of
22
 * bi-directional communications over a USITT DMX512/1990 data link
23
 * between an entertainment lighting controller and one or more
24
 * remotely controlled lighting devices. The protocol also is intended
25
 * to work with the ANSI E1.11-2004 control protocol. It allows
26
 * discovery of devices on a DMX512/E1.11 network and the remote
27
 * setting of DMX starting addresses, as well as status and fault
28
 * reporting back to the control console.
29
 */
30
31
#include "config.h"
32
33
#include <epan/packet.h>
34
#include <epan/expert.h>
35
#include "packet-rdm.h"
36
#include "packet-arp.h"
37
#include "packet-dmx-manfid.h"
38
39
void proto_register_rdm(void);
40
void proto_reg_handoff_rdm(void);
41
42
static dissector_handle_t rdm_handle;
43
44
0
#define RDM_SC_RDM          0xCC
45
#define RDM_SC_SUB_MESSAGE  0x01
46
47
0
#define RDM_CC_COMMAND_RESPONSE_FLAG    0x01
48
49
0
#define RDM_CC_DISCOVERY_COMMAND           0x10
50
0
#define RDM_CC_DISCOVERY_COMMAND_RESPONSE  0x11
51
0
#define RDM_CC_GET_COMMAND                 0x20
52
0
#define RDM_CC_GET_COMMAND_RESPONSE        0x21
53
0
#define RDM_CC_SET_COMMAND                 0x30
54
0
#define RDM_CC_SET_COMMAND_RESPONSE        0x31
55
56
static const value_string rdm_cc_vals[] = {
57
  { RDM_CC_DISCOVERY_COMMAND,           "Discovery Command" },
58
  { RDM_CC_DISCOVERY_COMMAND_RESPONSE,  "Discovery Command Response" },
59
  { RDM_CC_GET_COMMAND,                 "Get Command" },
60
  { RDM_CC_GET_COMMAND_RESPONSE,        "Get Command Response" },
61
  { RDM_CC_SET_COMMAND,                 "Set Command" },
62
  { RDM_CC_SET_COMMAND_RESPONSE,        "Set Command Response" },
63
  { 0, NULL },
64
};
65
66
0
#define RDM_RESPONSE_TYPE_ACK           0x00
67
0
#define RDM_RESPONSE_TYPE_ACK_TIMER     0x01
68
0
#define RDM_RESPONSE_TYPE_NACK_REASON   0x02
69
0
#define RDM_RESPONSE_TYPE_ACK_OVERFLOW  0x03
70
71
static const value_string rdm_rt_vals[] = {
72
  { RDM_RESPONSE_TYPE_ACK,           "Ack" },
73
  { RDM_RESPONSE_TYPE_ACK_TIMER,     "Ack Timer" },
74
  { RDM_RESPONSE_TYPE_NACK_REASON,   "Nack Reason" },
75
  { RDM_RESPONSE_TYPE_ACK_OVERFLOW,  "Ack Overflow" },
76
  { 0, NULL },
77
};
78
79
#define RDM_NR_UNKNOWN_PID                 0x0000
80
#define RDM_NR_FORMAT_ERROR                0x0001
81
#define RDM_NR_HARDWARE_FAULT              0x0002
82
#define RDM_NR_PROXY_REJECT                0x0003
83
#define RDM_NR_WRITE_PROTECT               0x0004
84
#define RDM_NR_UNSUPPORTED_COMMAND_CLASS   0x0005
85
#define RDM_NR_DATA_OUT_OF_RANGE           0x0006
86
#define RDM_NR_BUFFER_FULL                 0x0007
87
#define RDM_NR_PACKET_SIZE_UNSUPPORTED     0x0008
88
#define RDM_NR_SUB_DEVICE_OUT_OF_RANGE     0x0009
89
#define RDM_NR_PROXY_BUFFER_FULL           0x000A
90
#define RDM_NR_ACTION_NOT_SUPPORTED        0x000B  /* E1.37-2 */
91
#define RDM_NR_ENDPOINT_NUMBER_INVALID     0x000C  /* E1.37-7 */
92
#define RDM_NR_INVALID_ENDPOINT_MODE       0x000D
93
#define RDM_NR_UNKNOWN_UID                 0x000E
94
95
#define RDM_NR_UNKNOWN_SCOPE               0x000F  /* E1.33 */
96
#define RDM_NR_INVALID_STATIC_CONFIG_TYPE  0x0010  /* E1.33 */
97
#define RDM_NR_INVALID_IPV4_ADDRESS        0x0011  /* E1.33 */
98
#define RDM_NR_INVALID_IPV6_ADDRESS        0x0012  /* E1.33 */
99
#define RDM_NR_INVALID_PORT                0x0013  /* E1.33 */
100
101
static const value_string rdm_nr_vals[] = {
102
  { RDM_NR_UNKNOWN_PID,                 "Unknown PID" },
103
  { RDM_NR_FORMAT_ERROR,                "Format Error" },
104
  { RDM_NR_HARDWARE_FAULT,              "Hardware Fault" },
105
  { RDM_NR_PROXY_REJECT,                "Proxy Reject" },
106
  { RDM_NR_WRITE_PROTECT,               "Write Protect" },
107
  { RDM_NR_UNSUPPORTED_COMMAND_CLASS,   "Unsupported Command Class" },
108
  { RDM_NR_DATA_OUT_OF_RANGE,           "Data Out Of Range" },
109
  { RDM_NR_BUFFER_FULL,                 "Buffer Full" },
110
  { RDM_NR_PACKET_SIZE_UNSUPPORTED,     "Packet Size Unsupported" },
111
  { RDM_NR_SUB_DEVICE_OUT_OF_RANGE,     "Sub-Device Out Of Range" },
112
  { RDM_NR_PROXY_BUFFER_FULL,           "Proxy Buffer Full" },
113
  { RDM_NR_ACTION_NOT_SUPPORTED,        "Action Not Supported" },  /* E1.37-2 */
114
  { RDM_NR_ENDPOINT_NUMBER_INVALID,     "Endpoint Number Invalid" },  /* E1.37-7 */
115
  { RDM_NR_INVALID_ENDPOINT_MODE,       "Invalid Endpoint Mode" },
116
  { RDM_NR_UNKNOWN_UID,                 "Unknown UID" },
117
  { RDM_NR_UNKNOWN_SCOPE,               "Unknown Scope" },    /* E1.33 */
118
  { RDM_NR_INVALID_STATIC_CONFIG_TYPE,  "Invalid Static Config Type" },
119
  { RDM_NR_INVALID_IPV4_ADDRESS,        "Invalid IPv4 Address" },
120
  { RDM_NR_INVALID_IPV6_ADDRESS,        "Invalid IPv6 Address" },
121
  { RDM_NR_INVALID_PORT,                "Invalid Port" },
122
  { 0, NULL },
123
};
124
125
/* E1.20, E1.33, and E1.37 PIDs */
126
0
#define RDM_PARAM_ID_DISC_UNIQUE_BRANCH                           0x0001
127
0
#define RDM_PARAM_ID_DISC_MUTE                                    0x0002
128
0
#define RDM_PARAM_ID_DISC_UN_MUTE                                 0x0003
129
0
#define RDM_PARAM_ID_PROXIED_DEVICES                              0x0010
130
0
#define RDM_PARAM_ID_PROXIED_DEVICE_COUNT                         0x0011
131
0
#define RDM_PARAM_ID_COMMS_STATUS                                 0x0015
132
0
#define RDM_PARAM_ID_QUEUED_MESSAGE                               0x0020
133
0
#define RDM_PARAM_ID_STATUS_MESSAGES                              0x0030
134
0
#define RDM_PARAM_ID_STATUS_ID_DESCRIPTION                        0x0031
135
0
#define RDM_PARAM_ID_CLEAR_STATUS_ID                              0x0032
136
0
#define RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD           0x0033
137
0
#define RDM_PARAM_ID_SUPPORTED_PARAMETERS                         0x0050
138
0
#define RDM_PARAM_ID_PARAMETER_DESCRIPTION                        0x0051
139
0
#define RDM_PARAM_ID_DEVICE_INFO                                  0x0060
140
0
#define RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST                       0x0070
141
0
#define RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION                     0x0080
142
0
#define RDM_PARAM_ID_MANUFACTURER_LABEL                           0x0081
143
0
#define RDM_PARAM_ID_DEVICE_LABEL                                 0x0082
144
0
#define RDM_PARAM_ID_FACTORY_DEFAULTS                             0x0090
145
0
#define RDM_PARAM_ID_LANGUAGE_CAPABILITIES                        0x00A0
146
0
#define RDM_PARAM_ID_LANGUAGE                                     0x00B0
147
0
#define RDM_PARAM_ID_SOFTWARE_VERSION_LABEL                       0x00C0
148
0
#define RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID                     0x00C1
149
0
#define RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL                  0x00C2
150
0
#define RDM_PARAM_ID_DMX_PERSONALITY                              0x00E0
151
0
#define RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION                  0x00E1
152
0
#define RDM_PARAM_ID_DMX_START_ADDRESS                            0x00F0
153
0
#define RDM_PARAM_ID_SLOT_INFO                                    0x0120
154
0
#define RDM_PARAM_ID_SLOT_DESCRIPTION                             0x0121
155
0
#define RDM_PARAM_ID_DEFAULT_SLOT_VALUE                           0x0122
156
157
0
#define RDM_PARAM_ID_DMX_BLOCK_ADDRESS                            0x0140  /* E1.37-1 */
158
0
#define RDM_PARAM_ID_DMX_FAIL_MODE                                0x0141
159
0
#define RDM_PARAM_ID_DMX_STARTUP_MODE                             0x0142
160
161
0
#define RDM_PARAM_ID_SENSOR_DEFINITION                            0x0200
162
0
#define RDM_PARAM_ID_SENSOR_VALUE                                 0x0201
163
0
#define RDM_PARAM_ID_RECORD_SENSORS                               0x0202
164
165
0
#define RDM_PARAM_ID_DIMMER_INFO                                  0x0340  /* E1.37-1 */
166
0
#define RDM_PARAM_ID_MINIMUM_LEVEL                                0x0341
167
0
#define RDM_PARAM_ID_MAXIMUM_LEVEL                                0x0342
168
0
#define RDM_PARAM_ID_CURVE                                        0x0343
169
0
#define RDM_PARAM_ID_CURVE_DESCRIPTION                            0x0344
170
0
#define RDM_PARAM_ID_OUTPUT_RESPONSE_TIME                         0x0345
171
0
#define RDM_PARAM_ID_OUTPUT_RESPONSE_TIME_DESCRIPTION             0x0346
172
0
#define RDM_PARAM_ID_MODULATION_FREQUENCY                         0x0347
173
0
#define RDM_PARAM_ID_MODULATION_FREQUENCY_DESCRIPTION             0x0348
174
175
0
#define RDM_PARAM_ID_DEVICE_HOURS                                 0x0400
176
0
#define RDM_PARAM_ID_LAMP_HOURS                                   0x0401
177
0
#define RDM_PARAM_ID_LAMP_STRIKES                                 0x0402
178
0
#define RDM_PARAM_ID_LAMP_STATE                                   0x0403
179
0
#define RDM_PARAM_ID_LAMP_ON_MODE                                 0x0404
180
0
#define RDM_PARAM_ID_DEVICE_POWER_CYCLES                          0x0405
181
182
0
#define RDM_PARAM_ID_BURN_IN                                      0x0440  /* E1.37-1 */
183
184
0
#define RDM_PARAM_ID_DISPLAY_INVERT                               0x0500
185
0
#define RDM_PARAM_ID_DISPLAY_LEVEL                                0x0501
186
0
#define RDM_PARAM_ID_PAN_INVERT                                   0x0600
187
0
#define RDM_PARAM_ID_TILT_INVERT                                  0x0601
188
0
#define RDM_PARAM_ID_PAN_TILT_SWAP                                0x0602
189
0
#define RDM_PARAM_ID_REAL_TIME_CLOCK                              0x0603
190
191
0
#define RDM_PARAM_ID_LOCK_PIN                                     0x0640  /* E1.37-1 */
192
0
#define RDM_PARAM_ID_LOCK_STATE                                   0x0641
193
0
#define RDM_PARAM_ID_LOCK_STATE_DESCRIPTION                       0x0642
194
195
0
#define RDM_PARAM_ID_LIST_INTERFACES                              0x0700  /* E1.37-2 */
196
0
#define RDM_PARAM_ID_INTERFACE_LABEL                              0x0701
197
0
#define RDM_PARAM_ID_INTERFACE_HARDWARE_ADDRESS_TYPE1             0x0702
198
0
#define RDM_PARAM_ID_IPV4_DHCP_MODE                               0x0703
199
0
#define RDM_PARAM_ID_IPV4_ZEROCONF_MODE                           0x0704
200
0
#define RDM_PARAM_ID_IPV4_CURRENT_ADDRESS                         0x0705
201
0
#define RDM_PARAM_ID_IPV4_STATIC_ADDRESS                          0x0706
202
0
#define RDM_PARAM_ID_INTERFACE_RENEW_DHCP                         0x0707
203
0
#define RDM_PARAM_ID_INTERFACE_RELEASE_DHCP                       0x0708
204
0
#define RDM_PARAM_ID_INTERFACE_APPLY_CONFIGURATION                0x0709
205
0
#define RDM_PARAM_ID_IPV4_DEFAULT_ROUTE                           0x070A
206
0
#define RDM_PARAM_ID_DNS_IPV4_NAME_SERVER                         0x070B
207
0
#define RDM_PARAM_ID_DNS_HOSTNAME                                 0x070C
208
0
#define RDM_PARAM_ID_DNS_DOMAIN_NAME                              0x070D
209
210
0
#define RDM_PARAM_ID_COMPONENT_SCOPE                              0x0800  /* E1.33 */
211
0
#define RDM_PARAM_ID_SEARCH_DOMAIN                                0x0801  /* E1.33 */
212
0
#define RDM_PARAM_ID_TCP_COMMS_STATUS                             0x0802  /* E1.33 */
213
0
#define RDM_PARAM_ID_BROKER_STATUS                                0x0803  /* E1.33 */
214
215
0
#define RDM_PARAM_ID_ENDPOINT_LIST                                0x0900  /* E1.37-7 */
216
0
#define RDM_PARAM_ID_ENDPOINT_LIST_CHANGE                         0x0901
217
0
#define RDM_PARAM_ID_IDENTIFY_ENDPOINT                            0x0902
218
0
#define RDM_PARAM_ID_ENDPOINT_TO_UNIVERSE                         0x0903
219
0
#define RDM_PARAM_ID_ENDPOINT_MODE                                0x0904
220
0
#define RDM_PARAM_ID_ENDPOINT_LABEL                               0x0905
221
0
#define RDM_PARAM_ID_RDM_TRAFFIC_ENABLE                           0x0906
222
0
#define RDM_PARAM_ID_DISCOVERY_STATE                              0x0907
223
0
#define RDM_PARAM_ID_BACKGROUND_DISCOVERY                         0x0908
224
0
#define RDM_PARAM_ID_ENDPOINT_TIMING                              0x0909
225
0
#define RDM_PARAM_ID_ENDPOINT_TIMING_DESCRIPTION                  0x090A
226
0
#define RDM_PARAM_ID_ENDPOINT_RESPONDERS                          0x090B
227
0
#define RDM_PARAM_ID_ENDPOINT_RESPONDER_LIST_CHANGE               0x090C
228
0
#define RDM_PARAM_ID_BINDING_CONTROL_FIELDS                       0x090D
229
0
#define RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY              0x090E
230
0
#define RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY_DESCRIPTION  0x090F
231
232
0
#define RDM_PARAM_ID_IDENTIFY_DEVICE                              0x1000
233
0
#define RDM_PARAM_ID_RESET_DEVICE                                 0x1001
234
0
#define RDM_PARAM_ID_POWER_STATE                                  0x1010
235
0
#define RDM_PARAM_ID_PERFORM_SELFTEST                             0x1020
236
0
#define RDM_PARAM_ID_SELF_TEST_DESCRIPTION                        0x1021
237
0
#define RDM_PARAM_ID_CAPTURE_PRESET                               0x1030
238
0
#define RDM_PARAM_ID_PRESET_PLAYBACK                              0x1031
239
240
0
#define RDM_PARAM_ID_IDENTIFY_MODE                                0x1040  /* E1.37-1 */
241
0
#define RDM_PARAM_ID_PRESET_INFO                                  0x1041
242
0
#define RDM_PARAM_ID_PRESET_STATUS                                0x1042
243
0
#define RDM_PARAM_ID_PRESET_MERGEMODE                             0x1043
244
0
#define RDM_PARAM_ID_POWER_ON_SELF_TEST                           0x1044
245
246
static const value_string rdm_param_id_vals[] = {
247
  { RDM_PARAM_ID_DISC_UNIQUE_BRANCH,                  "Discovery Unique Branch" },
248
  { RDM_PARAM_ID_DISC_MUTE,                           "Discovery Mute" },
249
  { RDM_PARAM_ID_DISC_UN_MUTE,                        "Discovery Un-Mute" },
250
  { RDM_PARAM_ID_PROXIED_DEVICES,                     "Proxied Devices" },
251
  { RDM_PARAM_ID_PROXIED_DEVICE_COUNT,                "Proxied Device Count" },
252
  { RDM_PARAM_ID_COMMS_STATUS,                        "Communication Status" },
253
  { RDM_PARAM_ID_QUEUED_MESSAGE,                      "Queued Messages" },
254
  { RDM_PARAM_ID_STATUS_MESSAGES,                     "Status Messages" },
255
  { RDM_PARAM_ID_STATUS_ID_DESCRIPTION,               "Status ID Description" },
256
  { RDM_PARAM_ID_CLEAR_STATUS_ID,                     "Clear Status ID" },
257
  { RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD,  "Device Status Reporting Threshold" },
258
  { RDM_PARAM_ID_SUPPORTED_PARAMETERS,                "Supported Parameters" },
259
  { RDM_PARAM_ID_PARAMETER_DESCRIPTION,               "Parameter Description" },
260
  { RDM_PARAM_ID_DEVICE_INFO,                         "Device Info" },
261
  { RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST,              "Product Detail ID List" },
262
  { RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION,            "Device Model Description" },
263
  { RDM_PARAM_ID_MANUFACTURER_LABEL,                  "Manufacturer Label" },
264
  { RDM_PARAM_ID_DEVICE_LABEL,                        "Device Label" },
265
  { RDM_PARAM_ID_FACTORY_DEFAULTS,                    "Factory Defaults" },
266
  { RDM_PARAM_ID_LANGUAGE_CAPABILITIES,               "Language Capabilities" },
267
  { RDM_PARAM_ID_LANGUAGE,                            "Language" },
268
  { RDM_PARAM_ID_SOFTWARE_VERSION_LABEL,              "Software Version Label" },
269
  { RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID,            "Boot Software Version ID" },
270
  { RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL,         "Boot Software Version Label" },
271
  { RDM_PARAM_ID_DMX_PERSONALITY,                     "DMX Personality" },
272
  { RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION,         "DMX Personality Description" },
273
  { RDM_PARAM_ID_DMX_START_ADDRESS,                   "DMX Start Address" },
274
  { RDM_PARAM_ID_SLOT_INFO,                           "Slot Info" },
275
  { RDM_PARAM_ID_SLOT_DESCRIPTION,                    "Slot Description" },
276
  { RDM_PARAM_ID_DEFAULT_SLOT_VALUE,                  "Default Slot Value" },
277
278
  { RDM_PARAM_ID_DMX_BLOCK_ADDRESS,                   "DMX Block Address" },  /* E1.37-1 */
279
  { RDM_PARAM_ID_DMX_FAIL_MODE,                       "DMX Fail Mode" },
280
  { RDM_PARAM_ID_DMX_STARTUP_MODE,                    "DMX Startup Mode" },
281
282
  { RDM_PARAM_ID_SENSOR_DEFINITION,                   "Sensor Definition" },
283
  { RDM_PARAM_ID_SENSOR_VALUE,                        "Sensor Value" },
284
  { RDM_PARAM_ID_RECORD_SENSORS,                      "Record Sensors" },
285
286
  { RDM_PARAM_ID_DIMMER_INFO,                         "Dimmer Info" },  /* E1.37-1 */
287
  { RDM_PARAM_ID_MINIMUM_LEVEL,                       "Minimum Level" },
288
  { RDM_PARAM_ID_MAXIMUM_LEVEL,                       "Maximum Level" },
289
  { RDM_PARAM_ID_CURVE,                               "Curve" },
290
  { RDM_PARAM_ID_CURVE_DESCRIPTION,                   "Curve Description" },
291
  { RDM_PARAM_ID_OUTPUT_RESPONSE_TIME,                "Output Response Time" },
292
  { RDM_PARAM_ID_OUTPUT_RESPONSE_TIME_DESCRIPTION,    "Output Response Time Description" },
293
  { RDM_PARAM_ID_MODULATION_FREQUENCY,                "Modulation Frequency" },
294
  { RDM_PARAM_ID_MODULATION_FREQUENCY_DESCRIPTION,    "Modulation Frequency Description" },
295
296
  { RDM_PARAM_ID_DEVICE_HOURS,                        "Device Hours" },
297
  { RDM_PARAM_ID_LAMP_HOURS,                          "Lamp Hours" },
298
  { RDM_PARAM_ID_LAMP_STRIKES,                        "Lamp Strikes" },
299
  { RDM_PARAM_ID_LAMP_STATE,                          "Lamp State" },
300
  { RDM_PARAM_ID_LAMP_ON_MODE,                        "Lamp On Mode" },
301
  { RDM_PARAM_ID_DEVICE_POWER_CYCLES,                 "Device Power Cycles" },
302
303
  { RDM_PARAM_ID_BURN_IN,                             "Burn In" },  /* E1.37-1 */
304
305
  { RDM_PARAM_ID_DISPLAY_INVERT,                      "Display Invert" },
306
  { RDM_PARAM_ID_DISPLAY_LEVEL,                       "Display Level" },
307
  { RDM_PARAM_ID_PAN_INVERT,                          "Pan Invert" },
308
  { RDM_PARAM_ID_TILT_INVERT,                         "Tilt Invert" },
309
  { RDM_PARAM_ID_PAN_TILT_SWAP,                       "Pan Tilt Swap" },
310
  { RDM_PARAM_ID_REAL_TIME_CLOCK,                     "Real Time Clock" },
311
312
  { RDM_PARAM_ID_LOCK_PIN,                            "Lock PIN" },  /* E1.37-1 */
313
  { RDM_PARAM_ID_LOCK_STATE,                          "Lock State" },
314
  { RDM_PARAM_ID_LOCK_STATE_DESCRIPTION,              "Lock State Description" },
315
316
  { RDM_PARAM_ID_LIST_INTERFACES,                     "List Interfaces" },  /* E1.37-2 */
317
  { RDM_PARAM_ID_INTERFACE_LABEL,                     "Interface Label" },
318
  { RDM_PARAM_ID_INTERFACE_HARDWARE_ADDRESS_TYPE1,    "Interface Hardware Address Type 1" },
319
  { RDM_PARAM_ID_IPV4_DHCP_MODE,                      "IPv4 DHCP Mode" },
320
  { RDM_PARAM_ID_IPV4_ZEROCONF_MODE,                  "IPv4 Zero Configuration Mode" },
321
  { RDM_PARAM_ID_IPV4_CURRENT_ADDRESS,                "IPv4 Current Address" },
322
  { RDM_PARAM_ID_IPV4_STATIC_ADDRESS,                 "IPv4 Static Address" },
323
  { RDM_PARAM_ID_INTERFACE_RENEW_DHCP,                "Interface Renew DHCP" },
324
  { RDM_PARAM_ID_INTERFACE_RELEASE_DHCP,              "Interface Release DHCP" },
325
  { RDM_PARAM_ID_INTERFACE_APPLY_CONFIGURATION,       "Interface Apply Configuration" },
326
  { RDM_PARAM_ID_IPV4_DEFAULT_ROUTE,                  "IPv4 Default Route" },
327
  { RDM_PARAM_ID_DNS_IPV4_NAME_SERVER,                "DNS IPv4 Name Server" },
328
  { RDM_PARAM_ID_DNS_HOSTNAME,                        "DNS Hostname" },
329
  { RDM_PARAM_ID_DNS_DOMAIN_NAME,                     "DNS Domain Name" },
330
331
  { RDM_PARAM_ID_COMPONENT_SCOPE,                     "Component Scope" },
332
  { RDM_PARAM_ID_SEARCH_DOMAIN,                       "Search Domain" },
333
  { RDM_PARAM_ID_TCP_COMMS_STATUS,                    "TCP Communication Status" },
334
  { RDM_PARAM_ID_BROKER_STATUS,                       "Broker Status" },
335
336
  { RDM_PARAM_ID_ENDPOINT_LIST,                       "Endpoint List" },  /* E1.37-7 */
337
  { RDM_PARAM_ID_ENDPOINT_LIST_CHANGE,                "Endpoint List Change" },
338
  { RDM_PARAM_ID_IDENTIFY_ENDPOINT,                   "Identify Endpoint" },
339
  { RDM_PARAM_ID_ENDPOINT_TO_UNIVERSE,                "Endpoint To Universe" },
340
  { RDM_PARAM_ID_ENDPOINT_MODE,                       "Endpoint Mode" },
341
  { RDM_PARAM_ID_ENDPOINT_LABEL,                      "Endpoint Label" },
342
  { RDM_PARAM_ID_RDM_TRAFFIC_ENABLE,                  "RDM Traffic Enable" },
343
  { RDM_PARAM_ID_DISCOVERY_STATE,                     "Discovery State" },
344
  { RDM_PARAM_ID_BACKGROUND_DISCOVERY,                "Background Discovery" },
345
  { RDM_PARAM_ID_ENDPOINT_TIMING,                     "Endpoint Timing" },
346
  { RDM_PARAM_ID_ENDPOINT_TIMING_DESCRIPTION,         "Endpoint Timing Description" },
347
  { RDM_PARAM_ID_ENDPOINT_RESPONDERS,                 "Endpoint Responders" },
348
  { RDM_PARAM_ID_ENDPOINT_RESPONDER_LIST_CHANGE,      "Endpoint Responder List Change" },
349
  { RDM_PARAM_ID_BINDING_CONTROL_FIELDS,              "Binding Control Fields" },
350
  { RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY,     "Background Queued Status Policy" },
351
  { RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY_DESCRIPTION,  "Background Queued Status Policy Description" },
352
353
  { RDM_PARAM_ID_IDENTIFY_DEVICE,                     "Identify Device" },
354
  { RDM_PARAM_ID_RESET_DEVICE,                        "Reset Device" },
355
  { RDM_PARAM_ID_POWER_STATE,                         "Power State" },
356
  { RDM_PARAM_ID_PERFORM_SELFTEST,                    "Perform Self Test" },
357
  { RDM_PARAM_ID_SELF_TEST_DESCRIPTION,               "Self Test Description" },
358
  { RDM_PARAM_ID_CAPTURE_PRESET,                      "Capture Preset" },
359
  { RDM_PARAM_ID_PRESET_PLAYBACK,                     "Preset Playback" },
360
361
  { RDM_PARAM_ID_IDENTIFY_MODE,                       "Identify Mode" },  /* E1.37-1 */
362
  { RDM_PARAM_ID_PRESET_INFO,                         "Preset Info" },
363
  { RDM_PARAM_ID_PRESET_STATUS,                       "Preset Status" },
364
  { RDM_PARAM_ID_PRESET_MERGEMODE,                    "Preset Merge Mode" },
365
  { RDM_PARAM_ID_POWER_ON_SELF_TEST,                  "Power On Self Test" },
366
367
  { 0, NULL },
368
};
369
370
value_string_ext rdm_param_id_vals_ext = VALUE_STRING_EXT_INIT(rdm_param_id_vals);
371
372
/* manufacturer IDs */
373
0
#define RDM_MANUFACTURER_ID_ETC    0x6574
374
375
#define RDM_STATUS_NONE              0x00
376
#define RMD_STATUS_GET_LAST_MESSAGE  0x01
377
#define RDM_STATUS_ADVISORY          0x02
378
#define RDM_STATUS_WARNING           0x03
379
#define RDM_STATUS_ERROR             0x04
380
381
static const value_string rdm_status_vals[] = {
382
  { RDM_STATUS_NONE,              "None" },
383
  { RMD_STATUS_GET_LAST_MESSAGE,  "Get Last Message" },
384
  { RDM_STATUS_ADVISORY,          "Advisory" },
385
  { RDM_STATUS_WARNING,           "Warning" },
386
  { RDM_STATUS_ERROR,             "Error" },
387
  { 0, NULL },
388
};
389
390
#define RDM_PREFIX_NONE    0x00
391
#define RDM_PREFIX_DECI    0x01
392
#define RDM_PREFIX_CENTI   0x02
393
#define RDM_PREFIX_MILLI   0x03
394
#define RDM_PREFIX_MICRO   0x04
395
#define RDM_PREFIX_NANO    0x05
396
#define RDM_PREFIX_PICO    0x06
397
#define RDM_PREFIX_FEMPTO  0x07
398
#define RDM_PREFIX_ATTO    0x08
399
#define RDM_PREFIX_ZEPTO   0x09
400
#define RDM_PREFIX_YOCTO   0x0A
401
#define RDM_PREFIX_DECA    0x11
402
#define RDM_PREFIX_HECTO   0x12
403
#define RDM_PREFIX_KILO    0x13
404
#define RDM_PREFIX_MEGA    0x14
405
#define RDM_PREFIX_GIGA    0x15
406
#define RDM_PREFIX_TERRA   0x16
407
#define RDM_PREFIX_PETA    0x17
408
#define RDM_PREFIX_EXA     0x18
409
#define RDM_PREFIX_ZETTA   0x19
410
#define RDM_PREFIX_YOTTA   0x1A
411
412
static const value_string rdm_prefix_vals[] = {
413
  { RDM_PREFIX_NONE,    "NONE (x1)" },
414
  { RDM_PREFIX_DECI,    "deci (x10^-1)" },
415
  { RDM_PREFIX_CENTI,   "centi (x10^-2)" },
416
  { RDM_PREFIX_MILLI,   "milli (x10^-3)" },
417
  { RDM_PREFIX_MICRO,   "micro (x10^-6)" },
418
  { RDM_PREFIX_NANO,    "nano (x10^-9)" },
419
  { RDM_PREFIX_PICO,    "pico (x10^-12)" },
420
  { RDM_PREFIX_FEMPTO,  "fempto (x10^-15)" },
421
  { RDM_PREFIX_ATTO,    "atto (x10^-18)" },
422
  { RDM_PREFIX_ZEPTO,   "zepto (x10^-21)" },
423
  { RDM_PREFIX_YOCTO,   "yocto (x10^-24)" },
424
  { RDM_PREFIX_DECA,    "deca (x10^1)" },
425
  { RDM_PREFIX_HECTO,   "hecto (x10^2)" },
426
  { RDM_PREFIX_KILO,    "kilo (x10^3)" },
427
  { RDM_PREFIX_MEGA,    "mega (x10^6)" },
428
  { RDM_PREFIX_GIGA,    "giga (x10^9)" },
429
  { RDM_PREFIX_TERRA,   "terra (x10^12)" },
430
  { RDM_PREFIX_PETA,    "peta (x10^15)" },
431
  { RDM_PREFIX_EXA,     "exa (x10^18)" },
432
  { RDM_PREFIX_ZETTA,   "zetta (x10^21)" },
433
  { RDM_PREFIX_YOTTA,   "yotta (x10^24)" },
434
  { 0, NULL },
435
};
436
static value_string_ext rdm_prefix_vals_ext = VALUE_STRING_EXT_INIT(rdm_prefix_vals);
437
438
#define RDM_UNITS_NONE                         0x00
439
#define RDM_UNITS_CENTIGRADE                   0x01
440
#define RDM_UNITS_VOLTS_DC                     0x02
441
#define RDM_UNITS_VOLTS_AC_PEAK                0x03
442
#define RDM_UNITS_VOLTS_AC_RMS                 0x04
443
#define RDM_UNITS_AMPERE_DC                    0x05
444
#define RDM_UNITS_AMPERE_AC_PEAK               0x06
445
#define RDM_UNITS_AMPERE_AC_RMS                0x07
446
#define RDM_UNITS_HERTZ                        0x08
447
#define RDM_UNITS_OHM                          0x09
448
#define RDM_UNITS_WATT                         0x0A
449
#define RDM_UNITS_KILOGRAM                     0x0B
450
#define RDM_UNITS_METERS                       0x0C
451
#define RDM_UNITS_METERS_SQUARED               0x0D
452
#define RDM_UNITS_METERS_CUBED                 0x0E
453
#define RDM_UNITS_KILOGRAMMES_PER_METER_CUBED  0x0F
454
#define RDM_UNITS_METERS_PER_SECOND            0x10
455
#define RDM_UNITS_METERS_PER_SECOND_SQUARED    0x11
456
#define RDM_UNITS_NEWTON                       0x12
457
#define RDM_UNITS_JOULE                        0x13
458
#define RDM_UNITS_PASCAL                       0x14
459
#define RDM_UNITS_SECOND                       0x15
460
#define RDM_UNITS_DEGREE                       0x16
461
#define RDM_UNITS_STERADIAN                    0x17
462
#define RDM_UNITS_CANDELA                      0x18
463
#define RDM_UNITS_LUMEN                        0x19
464
#define RDM_UNITS_LUX                          0x1A
465
#define RDM_UNITS_IRE                          0x1B
466
#define RDM_UNITS_BYTE                         0x1C
467
468
static const value_string rdm_unit_vals[] = {
469
  { RDM_UNITS_NONE,                         "NONE" },
470
  { RDM_UNITS_CENTIGRADE,                   "Centigrade" },
471
  { RDM_UNITS_VOLTS_DC,                     "Volts DC" },
472
  { RDM_UNITS_VOLTS_AC_PEAK,                "Volts AC Peak" },
473
  { RDM_UNITS_VOLTS_AC_RMS,                 "Volts AC RMS" },
474
  { RDM_UNITS_AMPERE_DC,                    "Ampere DC" },
475
  { RDM_UNITS_AMPERE_AC_PEAK,               "Ampere AC Peak" },
476
  { RDM_UNITS_AMPERE_AC_RMS,                "Ampere AC RMS" },
477
  { RDM_UNITS_HERTZ,                        "Hertz" },
478
  { RDM_UNITS_OHM,                          "Ohm" },
479
  { RDM_UNITS_WATT,                         "Watt" },
480
  { RDM_UNITS_KILOGRAM,                     "Kilogram" },
481
  { RDM_UNITS_METERS,                       "Meters" },
482
  { RDM_UNITS_METERS_SQUARED,               "Meters Squared" },
483
  { RDM_UNITS_METERS_CUBED,                 "Meters Cubed" },
484
  { RDM_UNITS_KILOGRAMMES_PER_METER_CUBED,  "Kilogrammes per Meter Cubed" },
485
  { RDM_UNITS_METERS_PER_SECOND,            "Meters per Second" },
486
  { RDM_UNITS_METERS_PER_SECOND_SQUARED,    "Meters per Second Squared" },
487
  { RDM_UNITS_NEWTON,                       "Newton" },
488
  { RDM_UNITS_JOULE,                        "Joule" },
489
  { RDM_UNITS_PASCAL,                       "Pascal" },
490
  { RDM_UNITS_SECOND,                       "Second" },
491
  { RDM_UNITS_DEGREE,                       "Degree" },
492
  { RDM_UNITS_STERADIAN,                    "Steradian" },
493
  { RDM_UNITS_CANDELA,                      "Candela" },
494
  { RDM_UNITS_LUMEN,                        "Lumen" },
495
  { RDM_UNITS_LUX,                          "Lux" },
496
  { RDM_UNITS_IRE,                          "Ire" },
497
  { RDM_UNITS_BYTE,                         "Byte" },
498
  { 0, NULL },
499
};
500
static value_string_ext rdm_unit_vals_ext = VALUE_STRING_EXT_INIT(rdm_unit_vals);
501
502
#define RDM_SENS_TEMPERATURE         0x00
503
#define RDM_SENS_VOLTAGE             0x01
504
#define RDM_SENS_CURRENT             0x02
505
#define RDM_SENS_FREQUENCY           0x03
506
#define RDM_SENS_RESISTANCE          0x04
507
#define RDM_SENS_POWER               0x05
508
#define RDM_SENS_MASS                0x06
509
#define RDM_SENS_LENGTH              0x07
510
#define RDM_SENS_AREA                0x08
511
#define RDM_SENS_VOLUME              0x09
512
#define RDM_SENS_DENSITY             0x0A
513
#define RDM_SENS_VELOCITY            0x0B
514
#define RDM_SENS_ACCELERATION        0x0C
515
#define RDM_SENS_FORCE               0x0D
516
#define RDM_SENS_ENERGY              0x0E
517
#define RDM_SENS_PRESSURE            0x0F
518
#define RDM_SENS_TIME                0x10
519
#define RDM_SENS_ANGLE               0x11
520
#define RDM_SENS_POSITION_X          0x12
521
#define RDM_SENS_POSITION_Y          0x13
522
#define RDM_SENS_POSITION_Z          0x14
523
#define RDM_SENS_ANGULAR_VELOCITY    0x15
524
#define RDM_SENS_LUMINOUS_INTENSITY  0x16
525
#define RDM_SENS_LUMINOUS_FLUX       0x17
526
#define RDM_SENS_ILLUMINANCE         0x18
527
#define RDM_SENS_CHROMINANCE_RED     0x19
528
#define RDM_SENS_CHROMINANCE_GREEN   0x1A
529
#define RDM_SENS_CHROMINANCE_BLUE    0x1B
530
#define RDM_SENS_CONTACTS            0x1C
531
#define RDM_SENS_MEMORY              0x1D
532
#define RDM_SENS_ITEMS               0x1E
533
#define RDM_SENS_HUMIDITY            0x1F
534
#define RDM_SENS_COUNTER_16BIT       0x20
535
#define RDM_SENS_OTHER               0x7F
536
537
static const value_string rdm_sensor_type_vals[] = {
538
  { RDM_SENS_TEMPERATURE,          "Temperature" },
539
  { RDM_SENS_VOLTAGE,             "Voltage" },
540
  { RDM_SENS_CURRENT,             "Current" },
541
  { RDM_SENS_FREQUENCY,           "Frequency" },
542
  { RDM_SENS_RESISTANCE,          "Resistance" },
543
  { RDM_SENS_POWER,               "Power" },
544
  { RDM_SENS_MASS,                "Mass" },
545
  { RDM_SENS_LENGTH,              "Length" },
546
  { RDM_SENS_AREA,                "Area" },
547
  { RDM_SENS_VOLUME,              "Volume" },
548
  { RDM_SENS_DENSITY,             "Density" },
549
  { RDM_SENS_VELOCITY,            "Velocity" },
550
  { RDM_SENS_ACCELERATION,        "Acceleration" },
551
  { RDM_SENS_FORCE,               "Force" },
552
  { RDM_SENS_ENERGY,              "Energy" },
553
  { RDM_SENS_PRESSURE,            "Pressure" },
554
  { RDM_SENS_TIME,                "Time" },
555
  { RDM_SENS_ANGLE,               "Angle" },
556
  { RDM_SENS_POSITION_X,          "Position X" },
557
  { RDM_SENS_POSITION_Y,          "Position Y" },
558
  { RDM_SENS_POSITION_Z,          "Position Z" },
559
  { RDM_SENS_ANGULAR_VELOCITY,    "Angular Velocity" },
560
  { RDM_SENS_LUMINOUS_INTENSITY,  "Luminous Intensity" },
561
  { RDM_SENS_LUMINOUS_FLUX,       "Luminous Flux" },
562
  { RDM_SENS_ILLUMINANCE,         "Illuminance" },
563
  { RDM_SENS_CHROMINANCE_RED,     "Chrominance Red" },
564
  { RDM_SENS_CHROMINANCE_GREEN,   "Chrominance Green" },
565
  { RDM_SENS_CHROMINANCE_BLUE,    "Chrominance Blue" },
566
  { RDM_SENS_CONTACTS,            "Contacts" },
567
  { RDM_SENS_MEMORY,              "Memory" },
568
  { RDM_SENS_ITEMS,               "Items" },
569
  { RDM_SENS_HUMIDITY,            "Humidity" },
570
  { RDM_SENS_COUNTER_16BIT,       "Counter 16bit" },
571
  { RDM_SENS_OTHER,               "Other" },
572
  { 0, NULL} ,
573
};
574
static value_string_ext rdm_sensor_type_vals_ext = VALUE_STRING_EXT_INIT(rdm_sensor_type_vals);
575
576
#define RDM_PRODUCT_CATEGORY_NOT_DECLARED              0x0000
577
#define RDM_PRODUCT_CATEGORY_FIXTURE                   0x0100
578
#define RDM_PRODUCT_CATEGORY_FIXTURE_FIXED             0x0101
579
#define RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_YOKE       0x0102
580
#define RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_MIRROR     0x0103
581
#define RDM_PRODUCT_CATEGORY_FIXTURE_OTHER             0x01FF
582
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY         0x0200
583
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_COLOR   0x0201
584
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_YOKE    0x0202
585
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_MIRROR  0x0203
586
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_EFFECT  0x0204
587
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_BEAM    0x0205
588
#define RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_OTHER   0x02FF
589
#define RDM_PRODUCT_CATEGORY_PROJECTOR                 0x0300
590
#define RDM_PRODUCT_CATEGORY_PROJECTOR_FIXED           0x0301
591
#define RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_YOKE     0x0302
592
#define RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_MIRROR   0x0303
593
#define RDM_PRODUCT_CATEGORY_PROJECTOR_OTHER           0x03FF
594
#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC               0x0400
595
#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_EFFECT        0x0401
596
#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_PYRO          0x0402
597
#define RDM_PRODUCT_CATEGORY_ATMOSPHERIC_OTHER         0x04FF
598
#define RDM_PRODUCT_CATEGORY_DIMMER                    0x0500
599
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_INCANDESCENT    0x0501
600
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_FLUORESCENT     0x0502
601
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_COLDCATHODE     0x0503
602
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_NONDIM          0x0504
603
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_ELV             0x0505
604
#define RDM_PRODUCT_CATEGORY_DIMMER_AC_OTHER           0x0506
605
#define RDM_PRODUCT_CATEGORY_DIMMER_DC_LEVEL           0x0507
606
#define RDM_PRODUCT_CATEGORY_DIMMER_DC_PWM             0x0508
607
#define RDM_PRODUCT_CATEGORY_DIMMER_CS_LED             0x0509
608
#define RDM_PRODUCT_CATEGORY_DIMMER_OTHER              0x05FF
609
#define RDM_PRODUCT_CATEGORY_POWER                     0x0600
610
#define RDM_PRODUCT_CATEGORY_POWER_CONTROL             0x0601
611
#define RDM_PRODUCT_CATEGORY_POWER_SOURCE              0x0602
612
#define RDM_PRODUCT_CATEGORY_POWER_OTHER               0x06FF
613
#define RDM_PRODUCT_CATEGORY_SCENIC                    0x0700
614
#define RDM_PRODUCT_CATEGORY_SCENIC_DRIVE              0x0701
615
#define RDM_PRODUCT_CATEGORY_SCENIC_OTHER              0x07FF
616
#define RDM_PRODUCT_CATEGORY_DATA                      0x0800
617
#define RDM_PRODUCT_CATEGORY_DATA_DISTRIBUTION         0x0801
618
#define RDM_PRODUCT_CATEGORY_DATA_CONVERSION           0x0802
619
#define RDM_PRODUCT_CATEGORY_DATA_OTHER                0x08FF
620
#define RDM_PRODUCT_CATEGORY_AV                        0x0900
621
#define RDM_PRODUCT_CATEGORY_AV_AUDIO                  0x0901
622
#define RDM_PRODUCT_CATEGORY_AV_VIDEO                  0x0902
623
#define RDM_PRODUCT_CATEGORY_AV_OTHER                  0x09FF
624
#define RDM_PRODUCT_CATEGORY_MONITOR                   0x0A00
625
#define RDM_PRODUCT_CATEGORY_MONITOR_ACLINEPOWER       0x0A01
626
#define RDM_PRODUCT_CATEGORY_MONITOR_DCPOWER           0x0A02
627
#define RDM_PRODUCT_CATEGORY_MONITOR_ENVIRONMENTAL     0x0A03
628
#define RDM_PRODUCT_CATEGORY_MONITOR_OTHER             0x0AFF
629
#define RDM_PRODUCT_CATEGORY_CONTROL                   0x7000
630
#define RDM_PRODUCT_CATEGORY_CONTROL_CONTROLLER        0x7001
631
#define RDM_PRODUCT_CATEGORY_CONTROL_BACKUPDEVICE      0x7002
632
#define RDM_PRODUCT_CATEGORY_CONTROL_OTHER             0x70FF
633
#define RDM_PRODUCT_CATEGORY_TEST                      0x7100
634
#define RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT            0x7101
635
#define RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT_OTHER      0x71FF
636
#define RDM_PRODUCT_CATEGORY_OTHER                     0x7FFF
637
638
static const value_string rdm_product_cat_vals[] = {
639
  { RDM_PRODUCT_CATEGORY_NOT_DECLARED,              "Not Declared" },
640
  { RDM_PRODUCT_CATEGORY_FIXTURE,                   "Fixture" },
641
  { RDM_PRODUCT_CATEGORY_FIXTURE_FIXED,             "Fixture Fixed" },
642
  { RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_YOKE,       "Fixture Moving Yoke" },
643
  { RDM_PRODUCT_CATEGORY_FIXTURE_MOVING_MIRROR,     "Fixture Moving Mirror" },
644
  { RDM_PRODUCT_CATEGORY_FIXTURE_OTHER,             "Fixture Other" },
645
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY,         "Fixture Accessory" },
646
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_COLOR,   "Fixture Accessory Color" },
647
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_YOKE,    "Fixture Accessory Yoke" },
648
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_MIRROR,  "Fixture Accessory Mirror" },
649
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_EFFECT,  "Fixture Accessory Effect" },
650
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_BEAM,    "Fixture Accessory Beam" },
651
  { RDM_PRODUCT_CATEGORY_FIXTURE_ACCESSORY_OTHER,   "Fixture Accessory Other" },
652
  { RDM_PRODUCT_CATEGORY_PROJECTOR,                 "Projector" },
653
  { RDM_PRODUCT_CATEGORY_PROJECTOR_FIXED,           "Projector Fixed" },
654
  { RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_YOKE,     "Projector Moving Yoke" },
655
  { RDM_PRODUCT_CATEGORY_PROJECTOR_MOVING_MIRROR,   "Projector Moving Mirror" },
656
  { RDM_PRODUCT_CATEGORY_PROJECTOR_OTHER,           "Projector Other" },
657
  { RDM_PRODUCT_CATEGORY_ATMOSPHERIC,               "Atmospheric" },
658
  { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_EFFECT,        "Atmospheric Effect" },
659
  { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_PYRO,          "Atmospheric Pyro" },
660
  { RDM_PRODUCT_CATEGORY_ATMOSPHERIC_OTHER,         "Atmospheric Other" },
661
  { RDM_PRODUCT_CATEGORY_DIMMER,                    "Dimmer" },
662
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_INCANDESCENT,    "Dimmer AC Incandescent" },
663
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_FLUORESCENT,     "Dimmer AC Fluorescent" },
664
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_COLDCATHODE,     "Dimmer AC Coldcathode" },
665
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_NONDIM,          "Dimmer AC Nondim" },
666
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_ELV,             "Dimmer AC ELV" },
667
  { RDM_PRODUCT_CATEGORY_DIMMER_AC_OTHER,           "Dimmer AC Other" },
668
  { RDM_PRODUCT_CATEGORY_DIMMER_DC_LEVEL,           "Dimmer DC Level" },
669
  { RDM_PRODUCT_CATEGORY_DIMMER_DC_PWM,             "Dimmer DC PWM" },
670
  { RDM_PRODUCT_CATEGORY_DIMMER_CS_LED,             "Dimmer CS LED" },
671
  { RDM_PRODUCT_CATEGORY_DIMMER_OTHER,              "Dimmer Other" },
672
  { RDM_PRODUCT_CATEGORY_POWER,                     "Power" },
673
  { RDM_PRODUCT_CATEGORY_POWER_CONTROL,             "Power Control" },
674
  { RDM_PRODUCT_CATEGORY_POWER_SOURCE,              "Power Source" },
675
  { RDM_PRODUCT_CATEGORY_POWER_OTHER,               "Power Other" },
676
  { RDM_PRODUCT_CATEGORY_SCENIC,                    "Scenic" },
677
  { RDM_PRODUCT_CATEGORY_SCENIC_DRIVE,              "Scenic Drive" },
678
  { RDM_PRODUCT_CATEGORY_SCENIC_OTHER,              "Scenic Other" },
679
  { RDM_PRODUCT_CATEGORY_DATA,                      "Data" },
680
  { RDM_PRODUCT_CATEGORY_DATA_DISTRIBUTION,         "Data Distribution" },
681
  { RDM_PRODUCT_CATEGORY_DATA_CONVERSION,           "Data Conversion" },
682
  { RDM_PRODUCT_CATEGORY_DATA_OTHER,                "Data Other" },
683
  { RDM_PRODUCT_CATEGORY_AV,                        "AV" },
684
  { RDM_PRODUCT_CATEGORY_AV_AUDIO,                  "AV Audio" },
685
  { RDM_PRODUCT_CATEGORY_AV_VIDEO,                  "AV Video" },
686
  { RDM_PRODUCT_CATEGORY_AV_OTHER,                  "AV Other" },
687
  { RDM_PRODUCT_CATEGORY_MONITOR,                   "Monitor" },
688
  { RDM_PRODUCT_CATEGORY_MONITOR_ACLINEPOWER,       "Monitor AC Line Power" },
689
  { RDM_PRODUCT_CATEGORY_MONITOR_DCPOWER,           "Monitor DC Power" },
690
  { RDM_PRODUCT_CATEGORY_MONITOR_ENVIRONMENTAL,     "Monitor Environmental" },
691
  { RDM_PRODUCT_CATEGORY_MONITOR_OTHER,             "Monitor Other" },
692
  { RDM_PRODUCT_CATEGORY_CONTROL,                   "Control" },
693
  { RDM_PRODUCT_CATEGORY_CONTROL_CONTROLLER,        "Control Controller" },
694
  { RDM_PRODUCT_CATEGORY_CONTROL_BACKUPDEVICE,      "Control Backup Device" },
695
  { RDM_PRODUCT_CATEGORY_CONTROL_OTHER,             "Control Other" },
696
  { RDM_PRODUCT_CATEGORY_TEST,                      "Test" },
697
  { RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT,            "Test Equipment" },
698
  { RDM_PRODUCT_CATEGORY_TEST_EQUIPMENT_OTHER,      "Test Equipment Other" },
699
  { RDM_PRODUCT_CATEGORY_OTHER,                     "Other" },
700
  { 0, NULL },
701
};
702
static value_string_ext rdm_product_cat_vals_ext = VALUE_STRING_EXT_INIT(rdm_product_cat_vals);
703
704
/* E1.20 Table A-6 */
705
#define RDM_PRODUCT_DETAIL_NOT_DECLARED   0x0000
706
// Generally applied to fixtures
707
#define RDM_PRODUCT_DETAIL_ARC      0x0001
708
#define RDM_PRODUCT_DETAIL_METAL_HALIDE   0x0002
709
#define RDM_PRODUCT_DETAIL_INCANDESCENT   0x0003
710
#define RDM_PRODUCT_DETAIL_LED      0x0004
711
#define RDM_PRODUCT_DETAIL_FLUORESCENT    0x0005
712
#define RDM_PRODUCT_DETAIL_COLDCATHODE    0x0006
713
#define RDM_PRODUCT_DETAIL_ELECTROLUMINESCENT 0x0007
714
#define RDM_PRODUCT_DETAIL_LASER    0x0008
715
#define RDM_PRODUCT_DETAIL_FLASHTUBE    0x0009
716
// Generally applied to fixture accessories
717
#define RDM_PRODUCT_DETAIL_COLORSCROLLER  0x0100
718
#define RDM_PRODUCT_DETAIL_COLORWHEEL   0x0101
719
#define RDM_PRODUCT_DETAIL_COLORCHANGE    0x0102
720
#define RDM_PRODUCT_DETAIL_IRIS_DOUSER    0x0103
721
#define RDM_PRODUCT_DETAIL_DIMMING_SHUTTER  0x0104
722
#define RDM_PRODUCT_DETAIL_PROFILE_SHUTTER  0x0105
723
#define RDM_PRODUCT_DETAIL_BARNDOOR_SHUTTER 0x0106
724
#define RDM_PRODUCT_DETAIL_EFFECTS_DISC   0x0107
725
#define RDM_PRODUCT_DETAIL_GOBO_ROTATOR   0x0108
726
// Generally applied to Projectors
727
#define RDM_PRODUCT_DETAIL_VIDEO    0x0200
728
#define RDM_PRODUCT_DETAIL_SLIDE    0x0201
729
#define RDM_PRODUCT_DETAIL_FILM     0x0202
730
#define RDM_PRODUCT_DETAIL_OILWHEEL   0x0203
731
#define RDM_PRODUCT_DETAIL_LCDGATE    0x0204
732
// Generally applied to Atmospheric Effects
733
#define RDM_PRODUCT_DETAIL_FOGGER_GLYCOL  0x0300
734
#define RDM_PRODUCT_DETAIL_FOGGER_MINERALOIL  0x0301
735
#define RDM_PRODUCT_DETAIL_FOGGER_WATER   0x0302
736
#define RDM_PRODUCT_DETAIL_CO2      0x0303
737
#define RDM_PRODUCT_DETAIL_LN2      0x0304
738
#define RDM_PRODUCT_DETAIL_BUBBLE   0x0305
739
#define RDM_PRODUCT_DETAIL_FLAME_PROPANE  0x0306
740
#define RDM_PRODUCT_DETAIL_FLAME_OTHER    0x0307
741
#define RDM_PRODUCT_DETAIL_OLEFACTORY_STIMULATOR  0x0308
742
#define RDM_PRODUCT_DETAIL_SNOW     0x0309
743
#define RDM_PRODUCT_DETAIL_WATER_JET    0x030A
744
#define RDM_PRODUCT_DETAIL_WIND     0x030B
745
#define RDM_PRODUCT_DETAIL_CONFETTI   0x030C
746
#define RDM_PRODUCT_DETAIL_HAZARD   0x030D
747
// Generally applied to Dimmers/Power controllers
748
#define RDM_PRODUCT_DETAIL_PHASE_CONTROL  0x0400
749
#define RDM_PRODUCT_DETAIL_REVERSE_PHASE_CONTROL  0x0401
750
#define RDM_PRODUCT_DETAIL_SINE     0x0402
751
#define RDM_PRODUCT_DETAIL_PWM      0x0403
752
#define RDM_PRODUCT_DETAIL_DC     0x0404
753
#define RDM_PRODUCT_DETAIL_HFBALLAST    0x0405
754
#define RDM_PRODUCT_DETAIL_HFHV_NEONBALLAST 0x0406
755
#define RDM_PRODUCT_DETAIL_HFHV_EL    0x0407
756
#define RDM_PRODUCT_DETAIL_MHR_BALLAST    0x0408
757
#define RDM_PRODUCT_DETAIL_BITANGLE_MODULATION  0x0409
758
#define RDM_PRODUCT_DETAIL_FREQUENCY_MODULATION 0x040A
759
#define RDM_PRODUCT_DETAIL_HIGHFREQUENCY_12V  0x040B
760
#define RDM_PRODUCT_DETAIL_RELAY_MECHANICAL 0x040C
761
#define RDM_PRODUCT_DETAIL_RELAY_ELECTRONIC 0x040D
762
#define RDM_PRODUCT_DETAIL_SWITCH_ELECTRONIC  0x040E
763
#define RDM_PRODUCT_DETAIL_CONTACTOR    0x040F
764
// Generally applied to Scenic drive
765
#define RDM_PRODUCT_DETAIL_MIRRORBALL_ROTATOR 0x0500
766
#define RDM_PRODUCT_DETAIL_OTHER_ROTATOR  0x0501
767
#define RDM_PRODUCT_DETAIL_KABUKI_DROP    0x0502
768
#define RDM_PRODUCT_DETAIL_CURTAIN    0x0503
769
#define RDM_PRODUCT_DETAIL_LINESET    0x0504
770
#define RDM_PRODUCT_DETAIL_MOTOR_CONTROL  0x0505
771
#define RDM_PRODUCT_DETAIL_DAMPER_CONTROL 0x0506
772
// Generally applied to Data Distribution
773
#define RDM_PRODUCT_DETAIL_SPLITTER   0x0600
774
#define RDM_PRODUCT_DETAIL_ETHERNET_NODE  0x0601
775
#define RDM_PRODUCT_DETAIL_MERGE    0x0602
776
#define RDM_PRODUCT_DETAIL_DATAPATCH    0x0603
777
#define RDM_PRODUCT_DETAIL_WIRELESS_LINK  0x0604
778
// Generally applied to Data Conversion and Interfaces
779
#define RDM_PRODUCT_DETAIL_PROTOCOL_CONVERTOR 0x0701
780
#define RDM_PRODUCT_DETAIL_ANALOG_DEMULTIPLEX 0x0702
781
#define RDM_PRODUCT_DETAIL_ANALOG_MULTIPLEX 0x0703
782
#define RDM_PRODUCT_DETAIL_SWITCH_PANEL   0x0704
783
// Generally applied to Audio or Video (AV) devices
784
#define RDM_PRODUCT_DETAIL_ROUTER   0x0800
785
#define RDM_PRODUCT_DETAIL_FADER    0x0801
786
#define RDM_PRODUCT_DETAIL_MIXER    0x0802
787
// Generally applied to Controllers, Backup devices, and Test Equipment
788
#define RDM_PRODUCT_DETAIL_CHANGEOVER_MANUAL  0x0900
789
#define RDM_PRODUCT_DETAIL_CHANGEOVER_AUTO  0x0901
790
#define RDM_PRODUCT_DETAIL_TEST     0x0902
791
// Could be applied to any category
792
#define RDM_PRODUCT_DETAIL_GFI_RCD    0x0A00
793
#define RDM_PRODUCT_DETAIL_BATTERY    0x0A01
794
#define RDM_PRODUCT_DETAIL_CONTROLLABLE_BREAKER 0x0A02
795
// Input Devices E1.20-2025
796
#define RDM_PRODUCT_DETAIL_INPUT    0x0B00
797
#define RDM_PRODUCT_DETAIL_SENSOR   0x0B01
798
#define RDM_PRODUCT_DETAIL_OTHER    0x7FFF
799
800
static const value_string rdm_product_detail_vals[] = {
801
  { RDM_PRODUCT_DETAIL_NOT_DECLARED,  "Not Declared" },
802
// Generally applied to fixtures
803
  { RDM_PRODUCT_DETAIL_ARC,   "Arc Lamp" },
804
  { RDM_PRODUCT_DETAIL_METAL_HALIDE,  "Metal Halide" },
805
  { RDM_PRODUCT_DETAIL_INCANDESCENT,  "Incandescent" },
806
  { RDM_PRODUCT_DETAIL_LED,   "LED" },
807
// ANSI-ESTA E1.20-2010 misspells this FLUROESCENT
808
  { RDM_PRODUCT_DETAIL_FLUORESCENT, "Fluorescent" },
809
  { RDM_PRODUCT_DETAIL_COLDCATHODE, "Cold Cathode" },
810
  { RDM_PRODUCT_DETAIL_ELECTROLUMINESCENT,  "Electroluminescent" },
811
  { RDM_PRODUCT_DETAIL_LASER,   "LED" },
812
  { RDM_PRODUCT_DETAIL_FLASHTUBE, "Flashtube" },
813
// Generally applied to fixture accessories
814
  { RDM_PRODUCT_DETAIL_COLORSCROLLER, "Color Scroller" },
815
  { RDM_PRODUCT_DETAIL_COLORWHEEL,  "Color Wheel" },
816
  { RDM_PRODUCT_DETAIL_COLORCHANGE, "Color Change" },
817
  { RDM_PRODUCT_DETAIL_IRIS_DOUSER, "Iris / Douser" },
818
  { RDM_PRODUCT_DETAIL_DIMMING_SHUTTER, "Dimming Shutter" },
819
  { RDM_PRODUCT_DETAIL_PROFILE_SHUTTER, "Profile Shutter" },
820
  { RDM_PRODUCT_DETAIL_BARNDOOR_SHUTTER,  "Barn Door Shutter" },
821
  { RDM_PRODUCT_DETAIL_EFFECTS_DISC,  "Effects Disc" },
822
  { RDM_PRODUCT_DETAIL_GOBO_ROTATOR,  "Gobo Rotator" },
823
// Generally applied to Projectors
824
  { RDM_PRODUCT_DETAIL_VIDEO,   "Video" },
825
  { RDM_PRODUCT_DETAIL_SLIDE,   "Slide" },
826
  { RDM_PRODUCT_DETAIL_FILM,    "Film" },
827
  { RDM_PRODUCT_DETAIL_OILWHEEL,  "Oil Wheel" },
828
  { RDM_PRODUCT_DETAIL_LCDGATE,   "LCD Gate" },
829
// Generally applied to Atmospheric Effects
830
  { RDM_PRODUCT_DETAIL_FOGGER_GLYCOL, "Fogger, Glycol" },
831
  { RDM_PRODUCT_DETAIL_FOGGER_MINERALOIL, "Fogger, Mineral Oil" },
832
  { RDM_PRODUCT_DETAIL_FOGGER_WATER,  "Fogger, Water" },
833
// ANSI E1.20-2010 has a '0' instead of 'O' in CO2
834
  { RDM_PRODUCT_DETAIL_CO2,   "Dry Ice / CO2 based" },
835
  { RDM_PRODUCT_DETAIL_LN2,   "Liquid Nitrogen based" },
836
  { RDM_PRODUCT_DETAIL_BUBBLE,    "Bubble or Foam" },
837
  { RDM_PRODUCT_DETAIL_FLAME_PROPANE, "Propane Flame" },
838
  { RDM_PRODUCT_DETAIL_FLAME_OTHER, "Other Flame" },
839
  { RDM_PRODUCT_DETAIL_OLEFACTORY_STIMULATOR, "Scents" },
840
  { RDM_PRODUCT_DETAIL_SNOW,    "Snow" },
841
  { RDM_PRODUCT_DETAIL_WATER_JET, "Water Jet" },
842
  { RDM_PRODUCT_DETAIL_WIND,    "Wind" },
843
  { RDM_PRODUCT_DETAIL_CONFETTI,  "Confetti" },
844
  { RDM_PRODUCT_DETAIL_HAZARD,    "Hazard (any pyrotechnic)" },
845
// Generally applied to Dimmers/Power controllers
846
  { RDM_PRODUCT_DETAIL_PHASE_CONTROL, "Phase Control" },
847
  { RDM_PRODUCT_DETAIL_REVERSE_PHASE_CONTROL, "Reverse Phase Control" },
848
  { RDM_PRODUCT_DETAIL_SINE,    "Sine" },
849
  { RDM_PRODUCT_DETAIL_PWM,   "Pulse Width Modulation" },
850
  { RDM_PRODUCT_DETAIL_DC,    "DC" },
851
  { RDM_PRODUCT_DETAIL_HFBALLAST, "HF Ballast" },
852
  { RDM_PRODUCT_DETAIL_HFHV_NEONBALLAST,  "HF Neon Ballast" },
853
  { RDM_PRODUCT_DETAIL_HFHV_EL,   "HFHV Electroluminescent" },
854
  { RDM_PRODUCT_DETAIL_MHR_BALLAST, "Metal Halide Ballast" },
855
  { RDM_PRODUCT_DETAIL_BITANGLE_MODULATION, "Bit Angle Modulation" },
856
  { RDM_PRODUCT_DETAIL_FREQUENCY_MODULATION,  "Frequency Modulation" },
857
  { RDM_PRODUCT_DETAIL_HIGHFREQUENCY_12V, "High Frequency 12V" },
858
  { RDM_PRODUCT_DETAIL_RELAY_MECHANICAL,  "Mechanical Relay" },
859
  { RDM_PRODUCT_DETAIL_RELAY_ELECTRONIC,  "Electronic Relay" },
860
  { RDM_PRODUCT_DETAIL_SWITCH_ELECTRONIC, "Electronic Switch" },
861
  { RDM_PRODUCT_DETAIL_CONTACTOR, "Contactor" },
862
// Generally applied to Scenic driver
863
  { RDM_PRODUCT_DETAIL_MIRRORBALL_ROTATOR,  "Mirror Ball Rotator" },
864
  { RDM_PRODUCT_DETAIL_OTHER_ROTATOR, "Other Rotator" },
865
  { RDM_PRODUCT_DETAIL_KABUKI_DROP, "Kabuki Drop" },
866
  { RDM_PRODUCT_DETAIL_CURTAIN,   "Curtain" },
867
  { RDM_PRODUCT_DETAIL_LINESET,   "Line Set" },
868
  { RDM_PRODUCT_DETAIL_MOTOR_CONTROL, "Motor Control" },
869
  { RDM_PRODUCT_DETAIL_DAMPER_CONTROL,  "Damper Control" },
870
// Generally applied to Data Distribution
871
  { RDM_PRODUCT_DETAIL_SPLITTER,  "Splitter" },
872
  { RDM_PRODUCT_DETAIL_ETHERNET_NODE, "DMX512 to/from Ethernet" },
873
  { RDM_PRODUCT_DETAIL_MERGE,   "DMX512 Combiner" },
874
  { RDM_PRODUCT_DETAIL_DATAPATCH, "Datapatch" },
875
  { RDM_PRODUCT_DETAIL_WIRELESS_LINK, "Wireless Link" },
876
// Generally applied to Data Conversion and Interfaces
877
  { RDM_PRODUCT_DETAIL_PROTOCOL_CONVERTOR,  "Protocol Converter" },
878
  { RDM_PRODUCT_DETAIL_ANALOG_DEMULTIPLEX,  "DMX512 to DC Voltage" },
879
  { RDM_PRODUCT_DETAIL_ANALOG_MULTIPLEX,  "DC Voltage to DMX512" },
880
  { RDM_PRODUCT_DETAIL_SWITCH_PANEL,  "Switch Panel" },
881
// Generally applied to Audio or Video (AV) devices
882
  { RDM_PRODUCT_DETAIL_ROUTER,    "Router" },
883
  { RDM_PRODUCT_DETAIL_FADER,   "Fader" },
884
  { RDM_PRODUCT_DETAIL_MIXER,   "Mixer" },
885
// Generally applied to Controllers, Backup devices, and Test Equipment
886
  { RDM_PRODUCT_DETAIL_CHANGEOVER_MANUAL, "Manual Changeover" },
887
  { RDM_PRODUCT_DETAIL_CHANGEOVER_AUTO, "Auto Changeover" },
888
  { RDM_PRODUCT_DETAIL_TEST,    "Test Equipment" },
889
// Could be applied to any category
890
  { RDM_PRODUCT_DETAIL_GFI_RCD,   "Includes GFI/RCD Trip" },
891
  { RDM_PRODUCT_DETAIL_BATTERY,   "Battery Operated" },
892
  { RDM_PRODUCT_DETAIL_CONTROLLABLE_BREAKER,  "Controllable Breaker" },
893
// Input Devices E1.20-2025
894
  { RDM_PRODUCT_DETAIL_INPUT,   "Generic Input" },
895
  { RDM_PRODUCT_DETAIL_SENSOR,    "Sensor Input" },
896
  { RDM_PRODUCT_DETAIL_OTHER,   "Other" },
897
  { 0, NULL },
898
};
899
static value_string_ext rdm_product_detail_vals_ext = VALUE_STRING_EXT_INIT(rdm_product_detail_vals);
900
901
/* E1.37-1 */
902
#define RDM_PRESET_NOT_PROGRAMMED        0x00
903
#define RDM_PRESET_PROGRAMMED            0x01
904
#define RDM_PRESET_PROGRAMMED_READ_ONLY  0x02
905
906
static const value_string rdm_preset_programmed_vals[] = {
907
  { RDM_PRESET_NOT_PROGRAMMED,        "Preset Not Programmed" },
908
  { RDM_PRESET_PROGRAMMED,            "Preset Programmed" },
909
  { RDM_PRESET_PROGRAMMED_READ_ONLY,  "Preset Programmed Read Only" },
910
  { 0, NULL },
911
};
912
913
/* E1.37-1 */
914
#define RDM_MERGEMODE_DEFAULT   0x00
915
#define RDM_MERGEMODE_HTP       0x01
916
#define RDM_MERGEMODE_LTP       0x02
917
#define RDM_MERGEMODE_DMX_ONLY  0x03
918
#define RDM_MERGEMODE_OTHER     0xFF
919
920
static const value_string rdm_mergemode_vals[] = {
921
  { RDM_MERGEMODE_DEFAULT,   "Mergemode Default" },
922
  { RDM_MERGEMODE_HTP,       "Mergemode Highest Takes Precedence" },
923
  { RDM_MERGEMODE_LTP,       "Mergemode Last Takes Precedence" },
924
  { RDM_MERGEMODE_DMX_ONLY,  "Mergemode DMX Only" },
925
  { RDM_MERGEMODE_OTHER,     "Mergemode Other" },
926
  { 0, NULL },
927
};
928
929
/* E1.37-2 */
930
#define RDM_DHCP_STATUS_INACTIVE  0x00
931
#define RDM_DHCP_STATUS_ACTIVE    0x01
932
#define RDM_DHCP_STATUS_UNKNOWN   0x02
933
934
static const value_string rdm_dhcp_status_vals[] = {
935
  { RDM_DHCP_STATUS_INACTIVE,  "DHCP Status Inactive" },
936
  { RDM_DHCP_STATUS_ACTIVE,    "DHCP Status Active" },
937
  { RDM_DHCP_STATUS_UNKNOWN,   "DHCP Status Unknown" },
938
  { 0, NULL },
939
};
940
941
/* E1.37-7 */
942
#define RDM_DISCOVERY_STATE_INCOMPLETE   0x00
943
#define RDM_DISCOVERY_STATE_INCREMENTAL  0x01
944
#define RDM_DISCOVERY_STATE_FULL         0x02
945
                                 /* skip 0x03 */
946
#define RDM_DISCOVERY_STATE_NOT_ACTIVE   0x04
947
948
static const value_string rdm_discovery_state_vals[] = {
949
  { RDM_DISCOVERY_STATE_INCOMPLETE,   "Incomplete" },
950
  { RDM_DISCOVERY_STATE_INCREMENTAL,  "Incremental" },
951
  { RDM_DISCOVERY_STATE_FULL,         "Full" },
952
  { RDM_DISCOVERY_STATE_NOT_ACTIVE,   "Not Active" },
953
  { 0, NULL },
954
};
955
956
/* E1.37-7 */
957
#define RDM_ENDPOINT_MODE_DISABLED  0x00
958
#define RDM_ENDPOINT_MODE_INPUT     0x01
959
#define RDM_ENDPOINT_MODE_OUTPUT    0x02
960
961
static const value_string rdm_endpoint_mode_vals[] = {
962
  { RDM_ENDPOINT_MODE_DISABLED,  "Disabled" },
963
  { RDM_ENDPOINT_MODE_INPUT,     "Input" },
964
  { RDM_ENDPOINT_MODE_OUTPUT,    "Output" },
965
  { 0, NULL },
966
};
967
968
/* E1.37-7 */
969
#define RDM_ENDPOINT_TYPE_VIRTUAL   0x00
970
#define RDM_ENDPOINT_TYPE_PHYSICAL  0x01
971
972
static const value_string rdm_endpoint_type_vals[] = {
973
  { RDM_ENDPOINT_TYPE_VIRTUAL,   "Virtual" },
974
  { RDM_ENDPOINT_TYPE_PHYSICAL,  "Physical" },
975
  { 0, NULL },
976
};
977
978
/* E1.33 Table A-17 Static Config Types for Component Scope Messages */
979
#define RDMNET_COMPONENT_SCOPE_NO_STATIC_CONFIG    0x00
980
#define RDMNET_COMPONENT_SCOPE_STATIC_CONFIG_IPV4  0x01
981
#define RDMNET_COMPONENT_SCOPE_STATIC_CONFIG_IPV6  0x02
982
983
static const value_string rdmnet_component_scope_static_config_type_vals[] = {
984
  { RDMNET_COMPONENT_SCOPE_NO_STATIC_CONFIG,   "No Static Config" },
985
  { RDMNET_COMPONENT_SCOPE_STATIC_CONFIG_IPV4, "Static Config IPv4" },
986
  { RDMNET_COMPONENT_SCOPE_STATIC_CONFIG_IPV6, "Static Config IPv6" },
987
  { 0, NULL }
988
};
989
/* E1.33 Table A-18 Broker States for Broker Status Messages */
990
#define RDMNET_BROKER_STATE_DISABLED  0x00
991
#define RDMNET_BROKER_STATE_ACTIVE    0x01
992
#define RDMNET_BROKER_STATE_STANDBY   0x02
993
994
static const value_string rdmnet_broker_status_states_vals[] = {
995
  { RDMNET_BROKER_STATE_DISABLED, "Broker State Disabled" },
996
  { RDMNET_BROKER_STATE_ACTIVE,   "Broker State Active" },
997
  { RDMNET_BROKER_STATE_STANDBY,  "Broker State Standby" },
998
  { 0, NULL }
999
};
1000
1001
static const value_string true_false_vals[] = {
1002
  { 0x00,  "False" },
1003
  { 0x01,  "True" },
1004
  { 0, NULL },
1005
};
1006
1007
static const value_string enabled_disabled_vals[] = {
1008
  { 0x00,  "Disabled" },
1009
  { 0x01,  "Enabled" },
1010
  { 0, NULL },
1011
};
1012
1013
static const value_string on_off_vals[] = {
1014
  { 0x00,  "Off" },
1015
  { 0x01,  "On" },
1016
  { 0, NULL },
1017
};
1018
1019
static int proto_rdm;
1020
1021
static int hf_rdm_sub_start_code;
1022
static int hf_rdm_message_length;
1023
static int hf_rdm_dest_uid;
1024
static int hf_rdm_dest_uid_manf;
1025
static int hf_rdm_dest_uid_dev;
1026
static int hf_rdm_src_uid;
1027
static int hf_rdm_src_uid_manf;
1028
static int hf_rdm_src_uid_dev;
1029
static int hf_rdm_transaction_number;
1030
static int hf_rdm_port_id;
1031
static int hf_rdm_response_type;
1032
static int hf_rdm_message_count;
1033
static int hf_rdm_sub_device;
1034
static int hf_rdm_mdb;
1035
static int hf_rdm_command_class;
1036
static int hf_rdm_parameter_id;
1037
static int hf_rdm_parameter_data_length;
1038
static int hf_rdm_parameter_data;
1039
static int hf_rdm_parameter_data_raw;
1040
static int hf_rdm_intron;
1041
static int hf_rdm_checksum;
1042
static int hf_rdm_checksum_status;
1043
static int hf_rdm_trailer;
1044
1045
static int hf_rdm_pd_ack_timer_estimated_response_time;
1046
static int hf_rdm_pd_ack_overflow_raw_data;
1047
static int hf_rdm_pd_nack_reason_code;
1048
1049
static int hf_rdm_pd_device_label;
1050
1051
static int hf_rdm_pd_manu_label;
1052
1053
static int hf_rdm_pd_dmx_start_address;
1054
1055
static int hf_rdm_pd_queued_message_status;
1056
1057
static int hf_rdm_pd_sensor_nr;
1058
static int hf_rdm_pd_sensor_type;
1059
static int hf_rdm_pd_sensor_unit;
1060
static int hf_rdm_pd_sensor_prefix;
1061
static int hf_rdm_pd_sensor_value_pres;
1062
static int hf_rdm_pd_sensor_value_low;
1063
static int hf_rdm_pd_sensor_value_high;
1064
static int hf_rdm_pd_sensor_value_rec;
1065
1066
static int hf_rdm_pd_sensor_range_min_value;
1067
static int hf_rdm_pd_sensor_range_max_value;
1068
static int hf_rdm_pd_sensor_normal_min_value;
1069
static int hf_rdm_pd_sensor_normal_max_value;
1070
static int hf_rdm_pd_sensor_recorded_value_support;
1071
static int hf_rdm_pd_sensor_description;
1072
1073
static int hf_rdm_pd_device_hours;
1074
static int hf_rdm_pd_lamp_hours;
1075
static int hf_rdm_pd_lamp_strikes;
1076
1077
1078
static int hf_rdm_pd_proto_vers;
1079
static int hf_rdm_pd_device_model_id;
1080
static int hf_rdm_pd_product_cat;
1081
static int hf_rdm_pd_software_vers_id;
1082
static int hf_rdm_pd_dmx_footprint;
1083
static int hf_rdm_pd_dmx_pers_current;
1084
static int hf_rdm_pd_dmx_pers_total;
1085
static int hf_rdm_pd_sub_device_count;
1086
static int hf_rdm_pd_sensor_count;
1087
1088
static int hf_rdm_pd_device_model_description;
1089
1090
static int hf_rdm_pd_disc_unique_branch_lb_uid;
1091
static int hf_rdm_pd_disc_unique_branch_ub_uid;
1092
static int hf_rdm_pd_disc_mute_control_field;
1093
static int hf_rdm_pd_disc_mute_binding_uid;
1094
static int hf_rdm_pd_disc_mute_binding_uid_manf;
1095
static int hf_rdm_pd_disc_mute_binding_uid_dev;
1096
static int hf_rdm_pd_disc_unmute_control_field;
1097
static int hf_rdm_pd_disc_unmute_binding_uid;
1098
static int hf_rdm_pd_disc_unmute_binding_uid_manf;
1099
static int hf_rdm_pd_disc_unmute_binding_uid_dev;
1100
static int hf_rdm_pd_proxied_devices_uid;
1101
static int hf_rdm_pd_proxied_devices_uid_manf;
1102
static int hf_rdm_pd_proxied_devices_uid_dev;
1103
static int hf_rdm_pd_proxied_device_count;
1104
static int hf_rdm_pd_proxied_device_list_change;
1105
static int hf_rdm_pd_real_time_clock_year;
1106
static int hf_rdm_pd_real_time_clock_month;
1107
static int hf_rdm_pd_real_time_clock_day;
1108
static int hf_rdm_pd_real_time_clock_hour;
1109
static int hf_rdm_pd_real_time_clock_minute;
1110
static int hf_rdm_pd_real_time_clock_second;
1111
static int hf_rdm_pd_lamp_state;
1112
static int hf_rdm_pd_lamp_on_mode;
1113
static int hf_rdm_pd_device_power_cycles;
1114
static int hf_rdm_pd_display_invert;
1115
static int hf_rdm_pd_display_level;
1116
static int hf_rdm_pd_pan_invert;
1117
static int hf_rdm_pd_tilt_invert;
1118
static int hf_rdm_pd_tilt_swap;
1119
static int hf_rdm_pd_selftest_nr;
1120
static int hf_rdm_pd_selftest_state;
1121
static int hf_rdm_pd_selftest_description;
1122
static int hf_rdm_pd_language_code;
1123
static int hf_rdm_pd_identify_device;
1124
static int hf_rdm_pd_identify_device_state;
1125
static int hf_rdm_pd_reset_device;
1126
static int hf_rdm_pd_power_state;
1127
static int hf_rdm_pd_capture_preset_scene_nr;
1128
static int hf_rdm_pd_capture_preset_up_fade_time;
1129
static int hf_rdm_pd_capture_preset_down_fade_time;
1130
static int hf_rdm_pd_capture_preset_wait_time;
1131
static int hf_rdm_pd_preset_playback_mode;
1132
static int hf_rdm_pd_preset_playback_level;
1133
static int hf_rdm_pd_parameter_id;
1134
static int hf_rdm_pd_parameter_pdl_size;
1135
static int hf_rdm_pd_parameter_data_type;
1136
static int hf_rdm_pd_parameter_cmd_class;
1137
static int hf_rdm_pd_parameter_type;
1138
static int hf_rdm_pd_parameter_unit;
1139
static int hf_rdm_pd_parameter_prefix;
1140
static int hf_rdm_pd_parameter_min_value;
1141
static int hf_rdm_pd_parameter_max_value;
1142
static int hf_rdm_pd_parameter_default_value;
1143
static int hf_rdm_pd_parameter_description;
1144
static int hf_rdm_pd_software_version_label;
1145
static int hf_rdm_pd_boot_software_version_id;
1146
static int hf_rdm_pd_boot_software_version_label;
1147
static int hf_rdm_pd_comms_status_short_msg;
1148
static int hf_rdm_pd_comms_status_len_mismatch;
1149
static int hf_rdm_pd_comms_status_csum_fail;
1150
static int hf_rdm_pd_status_messages_type;
1151
static int hf_rdm_pd_status_messages_sub_device_id;
1152
static int hf_rdm_pd_status_messages_id;
1153
static int hf_rdm_pd_status_messages_data_value_1;
1154
static int hf_rdm_pd_status_messages_data_value_2;
1155
static int hf_rdm_pd_status_id;
1156
static int hf_rdm_pd_status_id_description;
1157
static int hf_rdm_pd_sub_device_status_report_threshold_status_type;
1158
static int hf_rdm_pd_product_detail_id;
1159
static int hf_rdm_pd_factory_defaults;
1160
static int hf_rdm_pd_background_discovery_endpoint_id;
1161
static int hf_rdm_pd_background_discovery_enabled;
1162
static int hf_rdm_pd_background_queued_status_policy_current_policy;
1163
static int hf_rdm_pd_background_queued_status_policy_number_of_policies;
1164
static int hf_rdm_pd_background_queued_status_policy_description_policy;
1165
static int hf_rdm_pd_background_queued_status_policy_description_description;
1166
static int hf_rdm_pd_binding_control_fields_endpoint_id;
1167
static int hf_rdm_pd_binding_control_fields_uid;
1168
static int hf_rdm_pd_binding_control_fields_uid_manf;
1169
static int hf_rdm_pd_binding_control_fields_uid_dev;
1170
static int hf_rdm_pd_binding_control_fields_control_field;
1171
static int hf_rdm_pd_binding_control_fields_binding_uid;
1172
static int hf_rdm_pd_binding_control_fields_binding_uid_manf;
1173
static int hf_rdm_pd_binding_control_fields_binding_uid_dev;
1174
static int hf_rem_pd_broker_status_set_allowed;
1175
static int hf_rem_pd_broker_status_state;
1176
static int hf_rdm_pd_burn_in;
1177
static int hf_rdm_pd_component_scope_scope_slot;
1178
static int hf_rdm_pd_component_scope_scope_string;
1179
static int hf_rdm_pd_component_scope_scope_static_config_type;
1180
static int hf_rdm_pd_component_scope_scope_static_ipv4_address;
1181
static int hf_rdm_pd_component_scope_scope_static_ipv6_address;
1182
static int hf_rdm_pd_component_scope_scope_static_port;
1183
static int hf_rdm_pd_current_address_interface_identifier;
1184
static int hf_rdm_pd_current_address_ipv4_address;
1185
static int hf_rdm_pd_current_address_netmask;
1186
static int hf_rdm_pd_current_address_dhcp_status;
1187
static int hf_rdm_pd_curve_curve;
1188
static int hf_rdm_pd_curve_number_of_curves;
1189
static int hf_rdm_pd_curve_description_curve;
1190
static int hf_rdm_pd_curve_description_text;
1191
static int hf_rdm_pd_dhcp_mode_interface_identifier;
1192
static int hf_rdm_pd_dhcp_mode_enabled;
1193
static int hf_rdm_pd_dimmer_info_minimum_level_lower_limit;
1194
static int hf_rdm_pd_dimmer_info_minimum_level_upper_limit;
1195
static int hf_rdm_pd_dimmer_info_maximum_level_lower_limit;
1196
static int hf_rdm_pd_dimmer_info_maximum_level_upper_limit;
1197
static int hf_rdm_pd_dimmer_info_number_of_supported_curves;
1198
static int hf_rdm_pd_dimmer_info_levels_resolution;
1199
static int hf_rdm_pd_dimmer_info_minimum_level_split_levels_supported;
1200
static int hf_rdm_pd_discovery_state_endpoint_id;
1201
static int hf_rdm_pd_discovery_state_device_count;
1202
static int hf_rdm_pd_discovery_state_discovery_state;
1203
static int hf_rdm_pd_dmx_block_address_base_dmx_address;
1204
static int hf_rdm_pd_dmx_block_address_subdevice_footprint;
1205
static int hf_rdm_pd_dmx_fail_mode_scene_number;
1206
static int hf_rdm_pd_dmx_fail_mode_loss_of_signal_delay;
1207
static int hf_rdm_pd_dmx_fail_mode_hold_time;
1208
static int hf_rdm_pd_dmx_fail_mode_level;
1209
static int hf_rdm_pd_dmx_pers_nr;
1210
static int hf_rdm_pd_dmx_pers_count;
1211
static int hf_rdm_pd_dmx_pers_requested;
1212
static int hf_rdm_pd_dmx_pers_slots;
1213
static int hf_rdm_pd_dmx_pers_text;
1214
static int hf_rdm_pd_dmx_startup_mode_scene_number;
1215
static int hf_rdm_pd_dmx_startup_mode_loss_of_signal_delay;
1216
static int hf_rdm_pd_dmx_startup_mode_hold_time;
1217
static int hf_rdm_pd_dmx_startup_mode_level;
1218
static int hf_rdm_pd_dns_domain_name;
1219
static int hf_rdm_pd_dns_hostname;
1220
static int hf_rdm_pd_dns_ipv4_name_server_index;
1221
static int hf_rdm_pd_dns_ipv4_name_server_address;
1222
static int hf_rdm_pd_endpoint_label_endpoint_id;
1223
static int hf_rdm_pd_endpoint_label_label;
1224
static int hf_rdm_pd_endpoint_list_change_number;
1225
static int hf_rdm_pd_endpoint_list_endpoint_id;
1226
static int hf_rdm_pd_endpoint_list_endpoint_type;
1227
static int hf_rdm_pd_endpoint_list_change_change_number;
1228
static int hf_rdm_pd_endpoint_mode_endpoint_id;
1229
static int hf_rdm_pd_endpoint_mode_endpoint_mode;
1230
static int hf_rdm_pd_endpoint_responder_list_change_endpoint_id;
1231
static int hf_rdm_pd_endpoint_responder_list_change_change_number;
1232
static int hf_rdm_pd_endpoint_responders_endpoint_id;
1233
static int hf_rdm_pd_endpoint_responders_change_number;
1234
static int hf_rdm_pd_endpoint_responders_uid;
1235
static int hf_rdm_pd_endpoint_responders_uid_manf;
1236
static int hf_rdm_pd_endpoint_responders_uid_dev;
1237
static int hf_rdm_pd_endpoint_timing_endpoint_id;
1238
static int hf_rdm_pd_endpoint_timing_setting;
1239
static int hf_rdm_pd_endpoint_timing_number_of_settings;
1240
static int hf_rdm_pd_endpoint_timing_description_setting;
1241
static int hf_rdm_pd_endpoint_timing_description_description;
1242
static int hf_rdm_pd_endpoint_to_universe_endpoint_id;
1243
static int hf_rdm_pd_endpoint_to_universe_universe_number;
1244
static int hf_rdm_pd_hardware_address_type1_interface_identifier;
1245
static int hf_rdm_pd_hardware_address_type1_hardware_address;
1246
static int hf_rdm_pd_identify_endpoint_endpoint_id;
1247
static int hf_rdm_pd_identify_endpoint_identify_state;
1248
static int hf_rdm_pd_identify_mode;
1249
static int hf_rdm_pd_interface_apply_configuration_interface_identifier;
1250
static int hf_rdm_pd_interface_label_interface_identifier;
1251
static int hf_rdm_pd_interface_label_label;
1252
static int hf_rdm_pd_interface_release_dhcp_interface_identifier;
1253
static int hf_rdm_pd_interface_renew_dhcp_interface_identifier;
1254
static int hf_rdm_pd_ipv4_default_route_interface_identifier;
1255
static int hf_rdm_pd_ipv4_default_route_ipv4_default_route;
1256
static int hf_rdm_pd_list_interfaces_interface_identifier;
1257
static int hf_rdm_pd_list_interfaces_interface_hardware_type;
1258
static int hf_rdm_pd_lock_pin_pin_code;
1259
static int hf_rdm_pd_lock_pin_new_pin_code;
1260
static int hf_rdm_pd_lock_state_lock_state;
1261
static int hf_rdm_pd_lock_state_number_of_lock_states;
1262
static int hf_rdm_pd_lock_state_pin_code;
1263
static int hf_rdm_pd_lock_state_description_lock_state;
1264
static int hf_rdm_pd_lock_state_description_text;
1265
static int hf_rdm_pd_maximum_level_level;
1266
static int hf_rdm_pd_preset_mergemode;
1267
static int hf_rdm_pd_power_on_self_test;
1268
static int hf_rdm_pd_minimum_level_increasing;
1269
static int hf_rdm_pd_minimum_level_decreasing;
1270
static int hf_rdm_pd_minimum_level_on_below_minimum;
1271
static int hf_rdm_pd_modulation_frequency_modulation_frequency;
1272
static int hf_rdm_pd_modulation_frequency_number_of_modulation_frequencies;
1273
static int hf_rdm_pd_modulation_frequency_description_modulation_frequency;
1274
static int hf_rdm_pd_modulation_frequency_description_text;
1275
static int hf_rdm_pd_output_response_time_response_time;
1276
static int hf_rdm_pd_output_response_time_number_of_response_times;
1277
static int hf_rdm_pd_output_response_time_description_output_response_time;
1278
static int hf_rdm_pd_output_response_time_description_text;
1279
static int hf_rdm_pd_preset_info_level_field_supported;
1280
static int hf_rdm_pd_preset_info_preset_sequence_supported;
1281
static int hf_rdm_pd_preset_info_split_times_supported;
1282
static int hf_rdm_pd_preset_info_dmx_fail_infinite_delay_time_supported;
1283
static int hf_rdm_pd_preset_info_dmx_fail_infinite_hold_time_supported;
1284
static int hf_rdm_pd_preset_info_start_up_infinite_hold_time_supported;
1285
static int hf_rdm_pd_preset_info_maximum_scene_number;
1286
static int hf_rdm_pd_preset_info_minimum_preset_fade_time_supported;
1287
static int hf_rdm_pd_preset_info_maximum_preset_fade_time_supported;
1288
static int hf_rdm_pd_preset_info_minimum_preset_wait_time_supported;
1289
static int hf_rdm_pd_preset_info_maximum_preset_wait_time_supported;
1290
static int hf_rdm_pd_preset_info_minimum_dmx_fail_delay_time_supported;
1291
static int hf_rdm_pd_preset_info_maximum_dmx_fail_delay_time_supported;
1292
static int hf_rdm_pd_preset_info_minimum_dmx_fail_hold_time_supported;
1293
static int hf_rdm_pd_preset_info_maximum_dmx_fail_hold_time_supported;
1294
static int hf_rdm_pd_preset_info_minimum_start_up_delay_time_supported;
1295
static int hf_rdm_pd_preset_info_maximum_start_up_delay_time_supported;
1296
static int hf_rdm_pd_preset_info_minimum_start_up_hold_time_supported;
1297
static int hf_rdm_pd_preset_info_maximum_start_up_hold_time_supported;
1298
static int hf_rdm_pd_preset_status_scene_number;
1299
static int hf_rdm_pd_preset_status_up_fade_time;
1300
static int hf_rdm_pd_preset_status_down_fade_time;
1301
static int hf_rdm_pd_preset_status_wait_time;
1302
static int hf_rdm_pd_preset_status_programmed;
1303
static int hf_rdm_pd_preset_status_clear_preset;
1304
static int hf_rdm_pd_rdm_traffic_enable_endpoint_id;
1305
static int hf_rdm_pd_rdm_traffic_enable_rdm_enabled;
1306
static int hf_rdm_pd_search_domain_dns_domain_name;
1307
static int hf_rdm_pd_slot_offset;
1308
static int hf_rdm_pd_slot_type;
1309
static int hf_rdm_pd_slot_label_id;
1310
static int hf_rdm_pd_slot_nr;
1311
static int hf_rdm_pd_slot_description;
1312
static int hf_rdm_pd_slot_value;
1313
static int hf_rdm_pd_static_address_interface_identifier;
1314
static int hf_rdm_pd_static_address_ipv4_address;
1315
static int hf_rdm_pd_static_address_netmask;
1316
static int hf_rdm_pd_tcp_comms_status_scope_string;
1317
static int hf_rdm_pd_tcp_comms_status_broker_ipv4_address;
1318
static int hf_rdm_pd_tcp_comms_status_broker_ipv6_address;
1319
static int hf_rdm_pd_tcp_comms_status_broker_port;
1320
static int hf_rdm_pd_tcp_comms_status_unhealthy_tcp_events;
1321
static int hf_rdm_pd_zeroconf_mode_interface_identifier;
1322
static int hf_rdm_pd_zeroconf_mode_enabled;
1323
static int hf_rdm_pd_rec_value_support;
1324
1325
static int ett_rdm;
1326
static int ett_rdm_uid;
1327
1328
static expert_field ei_rdm_checksum;
1329
1330
/* begin manufacturer-specific constants and variables */
1331
/* begin ETC */
1332
1333
/* ETC manufacturer-specific PIDs */
1334
0
#define ETC_PARAM_ID_LED_CURVE                             0x8101
1335
0
#define ETC_PARAM_ID_LED_CURVE_DESCRIPTION                 0x8102
1336
0
#define ETC_PARAM_ID_LED_STROBE                            0x8103
1337
0
#define ETC_PARAM_ID_LED_OUTPUT_MODE                       0x8104
1338
0
#define ETC_PARAM_ID_LED_OUTPUT_MODE_DESCRIPTION           0x8105
1339
0
#define ETC_PARAM_ID_LED_RED_SHIFT                         0x8106
1340
0
#define ETC_PARAM_ID_LED_WHITE_POINT                       0x8107
1341
0
#define ETC_PARAM_ID_LED_WHITE_POINT_DESCRIPTION           0x8108
1342
0
#define ETC_PARAM_ID_LED_FREQUENCY                         0x8109
1343
0
#define ETC_PARAM_ID_DMX_LOSS_BEHAVIOR                     0x810A
1344
0
#define ETC_PARAM_ID_DMX_LOSS_BEHAVIOR_DESCRIPTION         0x810B
1345
0
#define ETC_PARAM_ID_LED_PLUS_SEVEN                        0x810C
1346
0
#define ETC_PARAM_ID_BACKLIGHT_BRIGHTNESS                  0x810D
1347
0
#define ETC_PARAM_ID_BACKLIGHT_TIMEOUT                     0x810E
1348
0
#define ETC_PARAM_ID_STATUS_INDICATORS                     0x810F
1349
0
#define ETC_PARAM_ID_RECALIBRATE_FIXTURE                   0x8110
1350
0
#define ETC_PARAM_ID_OVERTEMPMODE                          0x8111
1351
0
#define ETC_PARAM_ID_SIMPLESETUPMODE                       0x8112
1352
0
#define ETC_PARAM_ID_LED_STROBE_DESCRIPTION                0x8113
1353
0
#define ETC_PARAM_ID_LED_RED_SHIFT_DESCRIPTION             0x8114
1354
0
#define ETC_PARAM_ID_LED_PLUS_SEVEN_DESCRIPTION            0x8115
1355
0
#define ETC_PARAM_ID_BACKLIGHT_TIMEOUT_DESCRIPTION         0x8116
1356
0
#define ETC_PARAM_ID_SIMPLESETUPMODE_DESCRIPTION           0x8117
1357
0
#define ETC_PARAM_ID_OVERTEMPMODE_DESCRIPTION              0x8118
1358
0
#define ETC_PARAM_ID_LED_REQUESTED_XY                      0x8119
1359
0
#define ETC_PARAM_ID_LED_CURRENT_XY                        0x811A
1360
0
#define ETC_PARAM_ID_LED_CURRENT_PWM                       0x811B
1361
0
#define ETC_PARAM_ID_LED_TRISTIMULUS                       0x811C
1362
0
#define ETC_PARAM_ID_LED_INFORMATION                       0x811D
1363
0
#define ETC_PARAM_ID_PRESETCONFIG                          0x811E
1364
0
#define ETC_PARAM_ID_SEQUENCE_PLAYBACK                     0x811F
1365
0
#define ETC_PARAM_ID_SEQUENCE_CONFIG                       0x8120
1366
0
#define ETC_PARAM_ID_LOW_POWER_TIMEOUT                     0x8121
1367
0
#define ETC_PARAM_ID_LOW_POWER_TIMEOUT_DESCRIPTION         0x8122
1368
0
#define ETC_PARAM_ID_LED_ENUM_FREQUENCY                    0x8123
1369
0
#define ETC_PARAM_ID_LED_ENUM_FREQUENCY_DESCRIPTION        0x8124
1370
0
#define ETC_PARAM_ID_RGBI_PRESETCONFIG                     0x8125
1371
0
#define ETC_PARAM_ID_CCT_PRESETCONFIG                      0x8126
1372
0
#define ETC_PARAM_ID_SUPPLEMENTARY_DEVICE_VERSION          0x8130
1373
/* do not display
1374
#define ETC_PARAM_ID_START_UWB_DISCOVER                    0x8150
1375
#define ETC_PARAM_ID_START_UWB_MEASURE                     0x8151
1376
#define ETC_PARAM_ID_POSITION                              0x8152
1377
*/
1378
0
#define ETC_PARAM_ID_S4DIM_CALIBRATE                       0x9000
1379
0
#define ETC_PARAM_ID_S4DIM_CALIBRATE_DESCRIPTION           0x9001
1380
0
#define ETC_PARAM_ID_S4DIM_TEST_MODE                       0x9002
1381
0
#define ETC_PARAM_ID_S4DIM_TEST_MODE_DESCRIPTION           0x9003
1382
0
#define ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE              0x9004
1383
0
#define ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE_DESCRIPTION  0x9005
1384
0
#define ETC_PARAM_ID_POWER_COMMAND                         0xA000
1385
0
#define ETC_PARAM_ID_POWER_COMMAND_DESCRIPTION             0xA001
1386
0
#define ETC_PARAM_ID_THRESHOLD_COMMAND                     0xA002
1387
0
#define ETC_PARAM_ID_TURNON_DELAY_COMMAND                  0xA003
1388
0
#define ETC_PARAM_ID_SET_DALI_SHORTADDRESS                 0xA004
1389
0
#define ETC_PARAM_ID_DALI_GROUP_MEMBERSHIP                 0xA005
1390
0
#define ETC_PARAM_ID_AUTOBIND                              0xA006
1391
0
#define ETC_PARAM_ID_DELETE_SUBDEVICE                      0xA007
1392
0
#define ETC_PARAM_ID_PACKET_DELAY                          0xB000
1393
0
#define ETC_PARAM_ID_HAS_ENUM_TEXT                         0xE000
1394
0
#define ETC_PARAM_ID_GET_ENUM_TEXT                         0xE001
1395
0
#define ETC_PARAM_ID_PREPAREFORSOFTWAREDOWNLOAD            0xF000
1396
1397
static const value_string etc_param_id_vals[] = {
1398
  { ETC_PARAM_ID_LED_CURVE,                             "LED Curve" },
1399
  { ETC_PARAM_ID_LED_CURVE_DESCRIPTION,                 "LED Curve Description" },
1400
  { ETC_PARAM_ID_LED_STROBE,                            "LED Strobe" },
1401
  { ETC_PARAM_ID_LED_OUTPUT_MODE,                       "LED Output Mode" },
1402
  { ETC_PARAM_ID_LED_OUTPUT_MODE_DESCRIPTION,           "LED Output Mode Description" },
1403
  { ETC_PARAM_ID_LED_RED_SHIFT,                         "LED Red Shift" },
1404
  { ETC_PARAM_ID_LED_WHITE_POINT,                       "LED White Point" },
1405
  { ETC_PARAM_ID_LED_WHITE_POINT_DESCRIPTION,           "LED White Point Description" },
1406
  { ETC_PARAM_ID_LED_FREQUENCY,                         "LED Frequency" },
1407
  { ETC_PARAM_ID_DMX_LOSS_BEHAVIOR,                     "DMX Loss Behavior" },
1408
  { ETC_PARAM_ID_DMX_LOSS_BEHAVIOR_DESCRIPTION,         "DMX Loss Behavior Description" },
1409
  { ETC_PARAM_ID_LED_PLUS_SEVEN,                        "LED Plus Seven" },
1410
  { ETC_PARAM_ID_BACKLIGHT_BRIGHTNESS,                  "Backlight Brightness" },
1411
  { ETC_PARAM_ID_BACKLIGHT_TIMEOUT,                     "Backlight Timeout" },
1412
  { ETC_PARAM_ID_STATUS_INDICATORS,                     "Status Indicators" },
1413
  { ETC_PARAM_ID_RECALIBRATE_FIXTURE,                   "Recalibrate Fixture" },
1414
  { ETC_PARAM_ID_OVERTEMPMODE,                          "Overtemp Mode" },
1415
  { ETC_PARAM_ID_SIMPLESETUPMODE,                       "Simple Setup Mode" },
1416
  { ETC_PARAM_ID_LED_STROBE_DESCRIPTION,                "LED Strobe Description" },
1417
  { ETC_PARAM_ID_LED_RED_SHIFT_DESCRIPTION,             "LED Red Shift Description" },
1418
  { ETC_PARAM_ID_LED_PLUS_SEVEN_DESCRIPTION,            "LED Plus Seven Description" },
1419
  { ETC_PARAM_ID_BACKLIGHT_TIMEOUT_DESCRIPTION,         "Backlight Timeout Description" },
1420
  { ETC_PARAM_ID_SIMPLESETUPMODE_DESCRIPTION,           "Simple Setup Mode Description" },
1421
  { ETC_PARAM_ID_OVERTEMPMODE_DESCRIPTION,              "Overtemp Mode Description" },
1422
  { ETC_PARAM_ID_LED_REQUESTED_XY,                      "LED Requested XY" },
1423
  { ETC_PARAM_ID_LED_CURRENT_XY,                        "LED Current XY" },
1424
  { ETC_PARAM_ID_LED_CURRENT_PWM,                       "LED Current PWM" },
1425
  { ETC_PARAM_ID_LED_TRISTIMULUS,                       "LED Tristimulus" },
1426
  { ETC_PARAM_ID_LED_INFORMATION,                       "LED Information" },
1427
  { ETC_PARAM_ID_PRESETCONFIG,                          "Preset Config" },
1428
  { ETC_PARAM_ID_SEQUENCE_PLAYBACK,                     "Sequence Playback" },
1429
  { ETC_PARAM_ID_SEQUENCE_CONFIG,                       "Sequence Config" },
1430
  { ETC_PARAM_ID_LOW_POWER_TIMEOUT,                     "Low Power Timeout" },
1431
  { ETC_PARAM_ID_LOW_POWER_TIMEOUT_DESCRIPTION,         "Low Power Timeout Description" },
1432
  { ETC_PARAM_ID_LED_ENUM_FREQUENCY,                    "LED Enum Frequency" },
1433
  { ETC_PARAM_ID_LED_ENUM_FREQUENCY_DESCRIPTION,        "LED Enum Frequency Description" },
1434
  { ETC_PARAM_ID_RGBI_PRESETCONFIG,                     "RGBI Preset Config" },
1435
  { ETC_PARAM_ID_CCT_PRESETCONFIG,                      "CCT Preset Config" },
1436
  { ETC_PARAM_ID_SUPPLEMENTARY_DEVICE_VERSION,          "Supplementary Device Version" },
1437
  /* do not display
1438
  { ETC_PARAM_ID_START_UWB_DISCOVER,                    "Start UWB Discover" },
1439
  { ETC_PARAM_ID_START_UWB_MEASURE,                     "Start UWB Measure" },
1440
  { ETC_PARAM_ID_POSITION,                              "Position" },
1441
  */
1442
  { ETC_PARAM_ID_S4DIM_CALIBRATE,                       "S4Dimmer Calibrate" },
1443
  { ETC_PARAM_ID_S4DIM_CALIBRATE_DESCRIPTION,           "S4Dimmer Calibrate Description" },
1444
  { ETC_PARAM_ID_S4DIM_TEST_MODE,                       "S4Dimmer Test Mode" },
1445
  { ETC_PARAM_ID_S4DIM_TEST_MODE_DESCRIPTION,           "S4Dimmer Test Mode Description" },
1446
  { ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE,              "S4Dimmer Max Output Voltage" },
1447
  { ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE_DESCRIPTION,  "S4Dimmer Max Output Voltage Description" },
1448
  { ETC_PARAM_ID_POWER_COMMAND,                         "Power Command" },
1449
  { ETC_PARAM_ID_POWER_COMMAND_DESCRIPTION,             "Power Command Description" },
1450
  { ETC_PARAM_ID_THRESHOLD_COMMAND,                     "Threshold Command" },
1451
  { ETC_PARAM_ID_TURNON_DELAY_COMMAND,                  "Turn On Delay Command" },
1452
  { ETC_PARAM_ID_SET_DALI_SHORTADDRESS,                 "Set DALI Short Address" },
1453
  { ETC_PARAM_ID_DALI_GROUP_MEMBERSHIP,                 "DALI Group Membership" },
1454
  { ETC_PARAM_ID_AUTOBIND,                              "Auto Bind" },
1455
  { ETC_PARAM_ID_DELETE_SUBDEVICE,                      "Delete Subdevice" },
1456
  { ETC_PARAM_ID_PACKET_DELAY,                          "Packet Delay" },
1457
  { ETC_PARAM_ID_HAS_ENUM_TEXT,                         "Has Enum Text" },
1458
  { ETC_PARAM_ID_GET_ENUM_TEXT,                         "Get Enum Text" },
1459
  { ETC_PARAM_ID_PREPAREFORSOFTWAREDOWNLOAD,            "Prepare For Software Load" },
1460
  { 0, NULL },
1461
};
1462
1463
static value_string_ext etc_param_id_vals_ext = VALUE_STRING_EXT_INIT(etc_param_id_vals);
1464
1465
#define ETC_LED_CURVE_STANDARD      0x00
1466
#define ETC_LED_CURVE_INCANDESCENT  0x01
1467
#define ETC_LED_CURVE_LINEAR        0x02
1468
#define ETC_LED_CURVE_QUICK         0x03
1469
1470
static const value_string etc_led_curve_vals[] = {
1471
  { ETC_LED_CURVE_STANDARD,      "Standard" },
1472
  { ETC_LED_CURVE_INCANDESCENT,  "Incandescent" },
1473
  { ETC_LED_CURVE_LINEAR,        "Linear" },
1474
  { ETC_LED_CURVE_QUICK,         "Quick" },
1475
  { 0, NULL },
1476
};
1477
1478
#define ETC_LED_OUTPUT_MODE_REGULATED  0x00
1479
#define ETC_LED_OUTPUT_MODE_BOOST      0x01
1480
#define ETC_LED_OUTPUT_MODE_PROTECTED  0x02
1481
1482
static const value_string etc_led_output_mode_vals[] = {
1483
  { ETC_LED_OUTPUT_MODE_REGULATED,  "Regulated" },
1484
  { ETC_LED_OUTPUT_MODE_BOOST,      "Boost" },
1485
  { ETC_LED_OUTPUT_MODE_PROTECTED,  "Protected" },
1486
  { 0, NULL },
1487
};
1488
1489
#define ETC_LED_WHITE_POINT_2950K    0x00
1490
#define ETC_LED_WHITE_POINT_3200K    0x01
1491
#define ETC_LED_WHITE_POINT_5600K    0x02
1492
#define ETC_LED_WHITE_POINT_6500K    0x03
1493
1494
static const value_string etc_led_white_point_vals[] = {
1495
  { ETC_LED_WHITE_POINT_2950K,    "2950 K" },
1496
  { ETC_LED_WHITE_POINT_3200K,    "3200 K" },
1497
  { ETC_LED_WHITE_POINT_5600K,    "5600 K" },
1498
  { ETC_LED_WHITE_POINT_6500K,    "6500 K" },
1499
  { 0, NULL },
1500
};
1501
1502
#define ETC_DMX_LOSS_BEHAVIOR_INSTANT   0x00
1503
#define ETC_DMX_LOSS_BEHAVIOR_WAIT2MIN  0x01
1504
#define ETC_DMX_LOSS_BEHAVIOR_HLL       0x02
1505
1506
static const value_string etc_dmx_data_loss_vals[] = {
1507
  { ETC_DMX_LOSS_BEHAVIOR_INSTANT,   "Instant" },
1508
  { ETC_DMX_LOSS_BEHAVIOR_WAIT2MIN,  "Hold Last Look 2 Minutes" },
1509
  { ETC_DMX_LOSS_BEHAVIOR_HLL,       "Hold Last Look Forever" },
1510
  { 0, NULL },
1511
};
1512
1513
#define ETC_DMX_BACKLIGHT_TIMEOUT_NEVER  0x00
1514
#define ETC_DMX_BACKLIGHT_TIMEOUT_30SEC  0x01
1515
#define ETC_DMX_BACKLIGHT_TIMEOUT_1MIN   0x02
1516
#define ETC_DMX_BACKLIGHT_TIMEOUT_5MIN   0x03
1517
#define ETC_DMX_BACKLIGHT_TIMEOUT_15MIN  0x04
1518
1519
static const value_string etc_backlight_timeout_vals[] = {
1520
  { ETC_DMX_BACKLIGHT_TIMEOUT_NEVER,  "Never" },
1521
  { ETC_DMX_BACKLIGHT_TIMEOUT_30SEC,  "30 Seconds" },
1522
  { ETC_DMX_BACKLIGHT_TIMEOUT_1MIN,   "1 Minute" },
1523
  { ETC_DMX_BACKLIGHT_TIMEOUT_5MIN,   "5 Minute" },
1524
  { ETC_DMX_BACKLIGHT_TIMEOUT_15MIN,  "15 Minute" },
1525
  { 0, NULL },
1526
};
1527
1528
#define ETC_OVERTEMP_MODE_DARK     0x00
1529
#define ETC_OVERTEMP_MODE_VISIBLE  0x01
1530
1531
static const value_string etc_overtemp_mode_vals[] = {
1532
  { ETC_OVERTEMP_MODE_DARK,     "Dark When Overtemp" },
1533
  { ETC_OVERTEMP_MODE_VISIBLE,  "Red When Overtemp" },
1534
  { 0, NULL },
1535
};
1536
1537
#define ETC_EASY_MODE_GENERAL   0x00
1538
#define ETC_EASY_MODE_STAGE     0x01
1539
#define ETC_EASY_MODE_ARCH      0x02
1540
#define ETC_EASY_MODE_EFFECTS   0x03
1541
#define ETC_EASY_MODE_STUDIO    0x04
1542
#define ETC_EASY_MODE_ADVANCED  0x05
1543
1544
static const value_string etc_simple_setup_mode_vals[] = {
1545
  { ETC_EASY_MODE_GENERAL,   "General Use" },
1546
  { ETC_EASY_MODE_STAGE,     "Stage Setup" },
1547
  { ETC_EASY_MODE_ARCH,      "Arch Setup" },
1548
  { ETC_EASY_MODE_EFFECTS,   "Effects Setup" },
1549
  { ETC_EASY_MODE_STUDIO,    "Studio Setup" },
1550
  { ETC_EASY_MODE_ADVANCED,  "Advanced Setup" },
1551
  { 0, NULL },
1552
};
1553
1554
#define ETC_LOW_POWER_TIMEOUT_NEVER   0x00
1555
#define ETC_LOW_POWER_TIMEOUT_15MIN   0x01
1556
#define ETC_LOW_POWER_TIMEOUT_30MIN   0x02
1557
#define ETC_LOW_POWER_TIMEOUT_1HOUR   0x03
1558
#define ETC_LOW_POWER_TIMEOUT_4HOURS  0x04
1559
#define ETC_LOW_POWER_TIMEOUT_8HOURS  0x05
1560
1561
static const value_string etc_low_power_timeout_vals[] = {
1562
  { ETC_LOW_POWER_TIMEOUT_NEVER,   "Never" },
1563
  { ETC_LOW_POWER_TIMEOUT_15MIN,   "15 Minutes" },
1564
  { ETC_LOW_POWER_TIMEOUT_30MIN,   "30 Minutes" },
1565
  { ETC_LOW_POWER_TIMEOUT_1HOUR,   "1 Hour" },
1566
  { ETC_LOW_POWER_TIMEOUT_4HOURS,  "4 Hours" },
1567
  { ETC_LOW_POWER_TIMEOUT_8HOURS,  "8 Hours" },
1568
  { 0, NULL },
1569
};
1570
1571
#define ETC_LED_FREQ_ENUM_1200HZ   0x00
1572
#define ETC_LED_FREQ_ENUM_25000HZ  0x01
1573
1574
static const value_string etc_led_frequency_enum_vals[] = {
1575
  { ETC_LED_FREQ_ENUM_1200HZ,   "1.2 kHz" },
1576
  { ETC_LED_FREQ_ENUM_25000HZ,  "25 kHz" },
1577
  { 0, NULL },
1578
};
1579
1580
#define ETC_MODEL_ID_SMARTBAR                           0x0001
1581
#define ETC_MODEL_ID_SOURCE_4_LED_LUSTR_PLUS            0x0101
1582
#define ETC_MODEL_ID_DESIRE_ICE_40_LED                  0x0102
1583
#define ETC_MODEL_ID_DESIRE_FIRE_40_LED                 0x0103
1584
#define ETC_MODEL_ID_SOURCE_4_LED_TUNGSTEN              0x0107
1585
#define ETC_MODEL_ID_SOURCE_4_LED_DAYLIGHT              0x0108
1586
#define ETC_MODEL_ID_DESIRE_VIVID_40_LED                0x0109
1587
#define ETC_MODEL_ID_DESIRE_LUSTR_60_LED_OBS            0x0111
1588
#define ETC_MODEL_ID_DESIRE_ICE_60_LED                  0x0112
1589
#define ETC_MODEL_ID_DESIRE_FIRE_60_LED                 0x0113
1590
#define ETC_MODEL_ID_DESIRE_VIVID_60_LED                0x0119
1591
#define ETC_MODEL_ID_DESIRE_STUDIO_40_LED               0x0121
1592
#define ETC_MODEL_ID_DESIRE_STUDIO_60_LED               0x0129
1593
#define ETC_MODEL_ID_DESIRE_LUSTR_40_LED                0x0131
1594
#define ETC_MODEL_ID_DESIRE_LUSTR_60_LED                0x0139
1595
#define ETC_MODEL_ID_DESIRE_DAYLIGHT_40_LED             0x0141
1596
#define ETC_MODEL_ID_DESIRE_TUNGSTEN_40_LED             0x0142
1597
#define ETC_MODEL_ID_DESIRE_DAYLIGHT_60_LED             0x0149
1598
#define ETC_MODEL_ID_DESIRE_TUNGSTEN_60_LED             0x014A
1599
#define ETC_MODEL_ID_DESIRE_D22_LUSTR_PLUS_LED          0x0151
1600
#define ETC_MODEL_ID_DESIRE_D22_DAYLIGHT_LED            0x0159
1601
#define ETC_MODEL_ID_DESIRE_D22_TUNGSTEN_LED            0x015A
1602
#define ETC_MODEL_ID_SOURCE_4_LED_STUDIO_HD             0x0179
1603
#define ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_LUSTR        0x0181
1604
#define ETC_MODEL_ID_DESIRE_D22_STUDIO_HD               0x0189
1605
#define ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_TUNGSTEN_HD  0x0191
1606
#define ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_DAYLIGHT_HD  0x0199
1607
#define ETC_MODEL_ID_COLORSOURCE_BOOTLOADER             0x0200
1608
#define ETC_MODEL_ID_COLORSOURCE_PAR                    0x0201
1609
#define ETC_MODEL_ID_COLORSOURCE_PAR_DEEP_BLUE          0x0202
1610
#define ETC_MODEL_ID_COLORSOURCE_PAR_PEARL              0x0203
1611
#define ETC_MODEL_ID_COLORSOURCE_SPOT                   0x0205
1612
#define ETC_MODEL_ID_COLORSOURCE_SPOT_DEEP_BLUE         0x0206
1613
#define ETC_MODEL_ID_COLORSOURCE_SPOT_PEARL             0x0207
1614
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_1               0x0209
1615
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_1_DEEP_BLUE     0x020A
1616
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_1_PEARL         0x020B
1617
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_2               0x020D
1618
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_2_DEEP_BLUE     0x020E
1619
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_2_PEARL         0x020F
1620
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_4               0x0211
1621
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_4_DEEP_BLUE     0x0212
1622
#define ETC_MODEL_ID_COLORSOURCE_LINEAR_4_PEARL         0x0213
1623
#define ETC_MODEL_ID_COLORSOURCE_CYC                    0x0215
1624
#define ETC_MODEL_ID_SOURCE_FORWARD_120V                0x0800
1625
#define ETC_MODEL_ID_SOURCE_FORWARD_230V                0x0801
1626
#define ETC_MODEL_ID_IRIDEON_FPZ                        0x0900
1627
#define ETC_MODEL_ID_SOURCE_FOUR_DIMMER                 0x1001
1628
#define ETC_MODEL_ID_KILLSWITCH_WIRELESS                0x1002
1629
#define ETC_MODEL_ID_KILLSWITCH_DMX                     0x1003
1630
#define ETC_MODEL_ID_KILLSWITCH_ETHERNET                0x1004
1631
#define ETC_MODEL_ID_KILLSWITCH_TRANSMITTER             0x1005
1632
#define ETC_MODEL_ID_DMX_ZONE_CONTROLLER_SINGLE_DIMMER  0x1006
1633
#define ETC_MODEL_ID_DMX_ZONE_CONTROLLER_RELAY          0x1007
1634
#define ETC_MODEL_ID_DMX_ZONE_CONTROLLER__4_8_CH        0x1008
1635
#define ETC_MODEL_ID_COLORSOURCE_THRUPOWER_DIMMER       0x1101
1636
#define ETC_MODEL_ID_DMX_DALI_GATEWAY_DIN_RAIL          0x1110
1637
1638
static const value_string etc_model_id_vals[] = {
1639
  { ETC_MODEL_ID_SMARTBAR,                           "Smartbar" },
1640
  { ETC_MODEL_ID_SOURCE_4_LED_LUSTR_PLUS,            "Source 4 LED Lustr+" },
1641
  { ETC_MODEL_ID_DESIRE_ICE_40_LED,                  "Desire Ice 40 LED" },
1642
  { ETC_MODEL_ID_DESIRE_FIRE_40_LED,                 "Desire Fire 40 LED" },
1643
  { ETC_MODEL_ID_SOURCE_4_LED_TUNGSTEN,              "Source 4 LED Tungsten" },
1644
  { ETC_MODEL_ID_SOURCE_4_LED_DAYLIGHT,              "Source 4 LED Daylight" },
1645
  { ETC_MODEL_ID_DESIRE_VIVID_40_LED,                "Desire Vivid 40 LED" },
1646
  { ETC_MODEL_ID_DESIRE_LUSTR_60_LED_OBS,            "Desire Lustr 60 LED (obsolete)" },
1647
  { ETC_MODEL_ID_DESIRE_ICE_60_LED,                  "Desire Ice 60 LED" },
1648
  { ETC_MODEL_ID_DESIRE_FIRE_60_LED,                 "Desire Fire 60 LED" },
1649
  { ETC_MODEL_ID_DESIRE_VIVID_60_LED,                "Desire Vivid 60 LED" },
1650
  { ETC_MODEL_ID_DESIRE_STUDIO_40_LED,               "Desire Studio 40 LED" },
1651
  { ETC_MODEL_ID_DESIRE_STUDIO_60_LED,               "Desire Studio 60 LED" },
1652
  { ETC_MODEL_ID_DESIRE_LUSTR_40_LED,                "Desire Lustr 40 LED" },
1653
  { ETC_MODEL_ID_DESIRE_LUSTR_60_LED,                "Desire Lustr 60 LED" },
1654
  { ETC_MODEL_ID_DESIRE_DAYLIGHT_40_LED,             "Desire Daylight 40 LED" },
1655
  { ETC_MODEL_ID_DESIRE_TUNGSTEN_40_LED,             "Desire Tungsten 40 LED" },
1656
  { ETC_MODEL_ID_DESIRE_DAYLIGHT_60_LED,             "Desire Daylight 60 LED" },
1657
  { ETC_MODEL_ID_DESIRE_TUNGSTEN_60_LED,             "Desire Tungsten 60 LED" },
1658
  { ETC_MODEL_ID_DESIRE_D22_LUSTR_PLUS_LED,          "Desire D22 Lustr+ LED" },
1659
  { ETC_MODEL_ID_DESIRE_D22_DAYLIGHT_LED,            "Desire D22 Daylight LED" },
1660
  { ETC_MODEL_ID_DESIRE_D22_TUNGSTEN_LED,            "Desire D22 Tungsten LED" },
1661
  { ETC_MODEL_ID_SOURCE_4_LED_STUDIO_HD,             "Source 4 LED Studio HD" },
1662
  { ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_LUSTR,        "Source 4 LED Series 2 Lustr" },
1663
  { ETC_MODEL_ID_DESIRE_D22_STUDIO_HD,               "Desire D22 Studio HD" },
1664
  { ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_TUNGSTEN_HD,  "Source 4 LED Series 2 Tungsten HD" },
1665
  { ETC_MODEL_ID_SOURCE_4_LED_SERIES_2_DAYLIGHT_HD,  "Source 4 LED Series 2 Daylight HD" },
1666
  { ETC_MODEL_ID_COLORSOURCE_BOOTLOADER,             "ColorSource Bootloader" },
1667
  { ETC_MODEL_ID_COLORSOURCE_PAR,                    "ColorSource Par" },
1668
  { ETC_MODEL_ID_COLORSOURCE_PAR_DEEP_BLUE,          "ColorSource Par DeepBlue" },
1669
  { ETC_MODEL_ID_COLORSOURCE_PAR_PEARL,              "ColorSource Par Pearl" },
1670
  { ETC_MODEL_ID_COLORSOURCE_SPOT,                   "ColorSource Spot" },
1671
  { ETC_MODEL_ID_COLORSOURCE_SPOT_DEEP_BLUE,         "ColorSource Spot DeepBlue" },
1672
  { ETC_MODEL_ID_COLORSOURCE_SPOT_PEARL,             "ColorSource Spot Pearl" },
1673
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_1,               "ColorSource Linear 1" },
1674
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_1_DEEP_BLUE,     "ColorSource Linear 1 DeepBlue" },
1675
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_1_PEARL,         "ColorSource Linear 1 Pearl" },
1676
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_2,               "ColorSource Linear 2" },
1677
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_2_DEEP_BLUE,     "ColorSource Linear 2 DeepBlue" },
1678
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_2_PEARL,         "ColorSource Linear 2 Pearl" },
1679
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_4,               "ColorSource Linear 4" },
1680
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_4_DEEP_BLUE,     "ColorSource Linear 4 DeepBlue" },
1681
  { ETC_MODEL_ID_COLORSOURCE_LINEAR_4_PEARL,         "ColorSource Linear 4 Pearl" },
1682
  { ETC_MODEL_ID_COLORSOURCE_CYC,                    "ColorSource Cyc" },
1683
  { ETC_MODEL_ID_SOURCE_FORWARD_120V,                "Source Forward 120v" },
1684
  { ETC_MODEL_ID_SOURCE_FORWARD_230V,                "Source Forward 230v" },
1685
  { ETC_MODEL_ID_IRIDEON_FPZ,                        "Irideon FPZ" },
1686
  { ETC_MODEL_ID_SOURCE_FOUR_DIMMER,                 "Source Four Dimmer" },
1687
  { ETC_MODEL_ID_KILLSWITCH_WIRELESS,                "Killswitch Wireless" },
1688
  { ETC_MODEL_ID_KILLSWITCH_DMX,                     "Killswitch DMX" },
1689
  { ETC_MODEL_ID_KILLSWITCH_ETHERNET,                "Killswitch Ethernet" },
1690
  { ETC_MODEL_ID_KILLSWITCH_TRANSMITTER,             "Killswitch Transmitter" },
1691
  { ETC_MODEL_ID_DMX_ZONE_CONTROLLER_SINGLE_DIMMER,  "DMX Zone Controller, Single Dimmer" },
1692
  { ETC_MODEL_ID_DMX_ZONE_CONTROLLER_RELAY,          "DMX Zone Controller, Relay" },
1693
  { ETC_MODEL_ID_DMX_ZONE_CONTROLLER__4_8_CH,        "DMX Zone Controller, 4-8 Channel Room Controller" },
1694
  { ETC_MODEL_ID_COLORSOURCE_THRUPOWER_DIMMER,       "ColorSource Thrupower Dimmer" },
1695
  { ETC_MODEL_ID_DMX_DALI_GATEWAY_DIN_RAIL,          "DMX-DALI Gateway, DIN Rail" },
1696
  { 0, NULL },
1697
};
1698
1699
static int hf_etc_parameter_id;       /* every manufacturer needs one of these */
1700
static int hf_etc_pd_parameter_id;    /* every manufacturer needs one of these */
1701
static int hf_etc_pd_device_model_id;
1702
static int hf_etc_pd_led_curve;
1703
static int hf_etc_pd_led_curve_description_curve;
1704
static int hf_etc_pd_led_curve_description_text;
1705
static int hf_etc_pd_led_strobe;
1706
static int hf_etc_pd_led_output_mode;
1707
static int hf_etc_pd_led_output_mode_description_mode;
1708
static int hf_etc_pd_led_output_mode_description_text;
1709
static int hf_etc_pd_led_red_shift;
1710
static int hf_etc_pd_led_white_point;
1711
static int hf_etc_pd_led_white_point_description_white_point;
1712
static int hf_etc_pd_led_white_point_description_text;
1713
static int hf_etc_pd_led_frequency;
1714
static int hf_etc_pd_dmx_data_loss_behavior;
1715
static int hf_etc_pd_dmx_data_loss_behavior_description_behavior;
1716
static int hf_etc_pd_dmx_data_loss_behavior_description_text;
1717
static int hf_etc_pd_led_plus_seven;
1718
static int hf_etc_pd_backlight_brightness;
1719
static int hf_etc_pd_backlight_timeout;
1720
static int hf_etc_pd_status_indicators;
1721
static int hf_etc_pd_overtemp_mode;
1722
static int hf_etc_pd_simple_setup_mode;
1723
static int hf_etc_pd_led_strobe_description_strobe;
1724
static int hf_etc_pd_led_strobe_description_text;
1725
static int hf_etc_pd_red_shift_description_red_shift;
1726
static int hf_etc_pd_red_shift_description_text;
1727
static int hf_etc_pd_plus_seven_description_plus_seven;
1728
static int hf_etc_pd_plus_seven_description_text;
1729
static int hf_etc_pd_backlight_timeout_description_timeout;
1730
static int hf_etc_pd_backlight_timeout_description_text;
1731
static int hf_etc_pd_simple_setup_mode_description_mode;
1732
static int hf_etc_pd_simple_setup_mode_description_text;
1733
static int hf_etc_pd_overtemp_mode_description_mode;
1734
static int hf_etc_pd_overtemp_mode_description_text;
1735
static int hf_etc_pd_led_requested_xy_x;
1736
static int hf_etc_pd_led_requested_xy_y;
1737
static int hf_etc_pd_led_current_xy_x;
1738
static int hf_etc_pd_led_current_xy_y;
1739
static int hf_etc_pd_current_pwm_led_number;
1740
static int hf_etc_pd_current_pwm_channel_duty_cycle;
1741
static int hf_etc_pd_tristimulus_led_number;
1742
static int hf_etc_pd_tristimulus_x;
1743
static int hf_etc_pd_tristimulus_y;
1744
static int hf_etc_pd_tristimulus_z;
1745
static int hf_etc_pd_led_information_led_number;
1746
static int hf_etc_pd_led_information_type;
1747
static int hf_etc_pd_led_information_dmx_control_channel;
1748
static int hf_etc_pd_led_information_drive_current;
1749
static int hf_etc_pd_led_information_gamut_polygon_order;
1750
static int hf_etc_pd_led_information_quantity;
1751
static int hf_etc_pd_preset_config_preset_number;
1752
static int hf_etc_pd_preset_config_fade_time;
1753
static int hf_etc_pd_preset_config_delay_time;
1754
static int hf_etc_pd_preset_config_hue;
1755
static int hf_etc_pd_preset_config_saturation;
1756
static int hf_etc_pd_preset_config_intensity;
1757
static int hf_etc_pd_preset_config_strobe;
1758
static int hf_etc_pd_sequence_playback_sequence_number;
1759
static int hf_etc_pd_sequence_config_sequence_number;
1760
static int hf_etc_pd_sequence_config_preset_steps;
1761
static int hf_etc_pd_sequence_config_preset_step;
1762
static int hf_etc_pd_sequence_config_step_link_times;
1763
static int hf_etc_pd_sequence_config_step_link_time;
1764
static int hf_etc_pd_sequence_config_rate;
1765
static int hf_etc_pd_sequence_config_end_state;
1766
static int hf_etc_pd_low_power_timeout;
1767
static int hf_etc_pd_low_power_timeout_description_timeout;
1768
static int hf_etc_pd_low_power_timeout_description_text;
1769
static int hf_etc_pd_led_enum_frequency;
1770
static int hf_etc_pd_led_enum_frequency_description_frequency;
1771
static int hf_etc_pd_led_enum_frequency_description_text;
1772
static int hf_etc_pd_rgbi_preset_config_preset_number;
1773
static int hf_etc_pd_rgbi_preset_config_fade_time;
1774
static int hf_etc_pd_rgbi_preset_config_delay_time;
1775
static int hf_etc_pd_rgbi_preset_config_red;
1776
static int hf_etc_pd_rgbi_preset_config_green;
1777
static int hf_etc_pd_rgbi_preset_config_blue;
1778
static int hf_etc_pd_rgbi_preset_config_intensity;
1779
static int hf_etc_pd_rgbi_preset_config_strobe;
1780
static int hf_etc_pd_cct_preset_config_preset_number;
1781
static int hf_etc_pd_cct_preset_config_fade_time;
1782
static int hf_etc_pd_cct_preset_config_delay_time;
1783
static int hf_etc_pd_cct_preset_config_white_point;
1784
static int hf_etc_pd_cct_preset_config_tint;
1785
static int hf_etc_pd_cct_preset_config_strobe;
1786
static int hf_etc_pd_cct_preset_config_intensity;
1787
static int hf_etc_pd_cct_preset_config_tone;
1788
static int hf_etc_pd_cct_preset_config_reserved;
1789
static int hf_etc_pd_supplementary_device_version_param_index;
1790
static int hf_etc_pd_supplementary_device_version_param_description;
1791
static int hf_etc_pd_power_command;
1792
static int hf_etc_pd_power_command_description_state;
1793
static int hf_etc_pd_power_command_description_text;
1794
static int hf_etc_pd_dali_short_address;
1795
static int hf_etc_pd_dali_group_membership;
1796
static int hf_etc_pd_auto_bind;
1797
static int hf_etc_pd_packet_delay;
1798
static int hf_etc_pd_has_enum_text_pid;
1799
static int hf_etc_pd_has_enum_text_true_false;
1800
static int hf_etc_pd_get_enum_text_pid;
1801
static int hf_etc_pd_get_enum_text_enum;
1802
static int hf_etc_pd_get_enum_text_description;
1803
1804
static int ett_etc_sequence_config_steps;
1805
static int ett_etc_sequence_config_times;
1806
1807
/* end ETC */
1808
/* end manufacturer-specific constants and variables */
1809
1810
static uint16_t
1811
rdm_checksum(tvbuff_t *tvb, unsigned length)
1812
0
{
1813
0
  uint16_t sum = RDM_SC_RDM;
1814
0
  unsigned  i;
1815
0
  for (i = 0; i < length; i++)
1816
0
    sum += tvb_get_uint8(tvb, i);
1817
0
  return sum;
1818
0
}
1819
1820
static void
1821
rdm_proto_tree_add_numeric_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, unsigned *offset_ptr, uint8_t len)
1822
0
{
1823
0
  unsigned offset = *offset_ptr;
1824
0
  proto_tree_add_item(tree, hfindex, tvb, offset, len, ENC_BIG_ENDIAN);
1825
0
  *offset_ptr += len;
1826
0
}
1827
1828
static void
1829
rdm_proto_tree_add_ascii_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, unsigned *offset_ptr, int len)
1830
0
{
1831
0
  unsigned offset = *offset_ptr;
1832
0
  proto_tree_add_item(tree, hfindex, tvb, offset, len, ENC_ASCII|ENC_NA);
1833
0
  *offset_ptr += len;
1834
0
}
1835
1836
static void
1837
rdm_proto_tree_add_bytes_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, unsigned *offset_ptr, int len)
1838
0
{
1839
0
  unsigned offset = *offset_ptr;
1840
0
  proto_tree_add_item(tree, hfindex, tvb, offset, len, ENC_NA);
1841
0
  *offset_ptr += len;
1842
0
}
1843
1844
static void
1845
rdm_proto_tree_add_uid_item(proto_tree *tree, int hfindex, tvbuff_t *tvb, unsigned *offset_ptr, int hfindex_manf, int hfindex_dev)
1846
0
{
1847
0
  unsigned offset = *offset_ptr;
1848
0
  proto_item* uid_item = proto_tree_add_item(tree, hfindex, tvb, offset, 6, ENC_NA);
1849
0
  proto_tree* uid_tree = proto_item_add_subtree(uid_item, ett_rdm_uid);
1850
0
  proto_tree_add_item(uid_tree, hfindex_manf, tvb, offset, 2, ENC_BIG_ENDIAN);
1851
0
  proto_tree_add_item(uid_tree, hfindex_dev, tvb, offset+2, 4, ENC_BIG_ENDIAN);
1852
0
  *offset_ptr += 6;
1853
0
}
1854
1855
static unsigned
1856
dissect_rdm_pd_queued_message(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
1857
0
{
1858
0
  switch(cc) {
1859
0
  case RDM_CC_GET_COMMAND:
1860
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_queued_message_status, tvb, &offset, 1);
1861
0
    break;
1862
0
  }
1863
1864
0
  return offset;
1865
0
}
1866
1867
static unsigned
1868
dissect_rdm_pd_dmx_start_address(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
1869
0
{
1870
0
  switch(cc) {
1871
0
  case RDM_CC_SET_COMMAND:
1872
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1873
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_start_address, tvb, &offset, 2);
1874
0
    break;
1875
0
  }
1876
1877
0
  return offset;
1878
0
}
1879
1880
static unsigned
1881
dissect_rdm_pd_device_info(tvbuff_t *tvb _U_, unsigned offset, proto_tree *tree _U_, uint8_t cc, uint8_t len _U_, uint16_t device_manufacturer_id)
1882
0
{
1883
0
  switch(cc) {
1884
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1885
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_proto_vers, tvb, &offset, 2);
1886
0
    switch(device_manufacturer_id) {
1887
0
    case RDM_MANUFACTURER_ID_ETC:
1888
0
      rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_device_model_id, tvb, &offset, 2);
1889
0
      break;
1890
0
    default:
1891
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_device_model_id, tvb, &offset, 2);
1892
0
      break;
1893
0
    }
1894
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_product_cat, tvb, &offset, 2);
1895
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_software_vers_id, tvb, &offset, 4);
1896
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_footprint, tvb, &offset, 2);
1897
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_current, tvb, &offset, 1);
1898
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_total, tvb, &offset, 1);
1899
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_start_address, tvb, &offset, 2);
1900
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sub_device_count, tvb, &offset, 2);
1901
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_count, tvb, &offset, 1);
1902
0
    break;
1903
0
  }
1904
1905
0
  return offset;
1906
0
}
1907
1908
1909
static unsigned
1910
dissect_rdm_pd_device_model_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
1911
0
{
1912
0
  switch(cc) {
1913
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1914
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_device_model_description, tvb, &offset, len);
1915
0
    break;
1916
0
  }
1917
1918
0
  return offset;
1919
0
}
1920
1921
1922
static unsigned
1923
dissect_rdm_pd_device_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
1924
0
{
1925
0
  switch(cc) {
1926
0
  case RDM_CC_SET_COMMAND:
1927
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1928
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_device_label, tvb, &offset, len);
1929
0
    break;
1930
0
  }
1931
1932
0
  return offset;
1933
0
}
1934
1935
1936
static unsigned
1937
dissect_rdm_pd_device_hours(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
1938
0
{
1939
0
  switch(cc) {
1940
0
  case RDM_CC_SET_COMMAND:
1941
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1942
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_device_hours, tvb, &offset, 4);
1943
0
    break;
1944
0
  }
1945
1946
0
  return offset;
1947
0
}
1948
1949
1950
static unsigned
1951
dissect_rdm_pd_lamp_hours(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
1952
0
{
1953
0
  switch(cc) {
1954
0
  case RDM_CC_SET_COMMAND:
1955
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1956
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lamp_hours, tvb, &offset, 4);
1957
0
    break;
1958
0
  }
1959
1960
0
  return offset;
1961
0
}
1962
1963
1964
static unsigned
1965
dissect_rdm_pd_lamp_strikes(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
1966
0
{
1967
0
  switch(cc) {
1968
0
  case RDM_CC_SET_COMMAND:
1969
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1970
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lamp_strikes, tvb, &offset, 4);
1971
0
    break;
1972
0
  }
1973
1974
0
  return offset;
1975
0
}
1976
1977
1978
static unsigned
1979
dissect_rdm_pd_sensor_definition(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
1980
0
{
1981
0
  switch(cc) {
1982
0
  case RDM_CC_GET_COMMAND:
1983
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
1984
0
    break;
1985
1986
0
  case RDM_CC_GET_COMMAND_RESPONSE:
1987
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
1988
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_type, tvb, &offset, 1);
1989
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_unit, tvb, &offset, 1);
1990
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_prefix, tvb, &offset, 1);
1991
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_range_min_value, tvb, &offset, 2);
1992
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_range_max_value, tvb, &offset, 2);
1993
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_normal_min_value, tvb, &offset, 2);
1994
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_normal_max_value, tvb, &offset, 2);
1995
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_recorded_value_support, tvb, &offset, 1);
1996
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_sensor_description, tvb, &offset, len-13);
1997
0
    break;
1998
0
  }
1999
2000
0
  return offset;
2001
0
}
2002
2003
static unsigned
2004
dissect_rdm_pd_sensor_value(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2005
0
{
2006
0
  uint8_t original_len = len;
2007
2008
0
  switch(cc) {
2009
0
  case RDM_CC_GET_COMMAND:
2010
0
  case RDM_CC_SET_COMMAND:
2011
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
2012
0
    break;
2013
2014
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2015
0
  case RDM_CC_SET_COMMAND_RESPONSE:
2016
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
2017
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_value_pres, tvb, &offset, 2);
2018
2019
0
    if (original_len == 7 || original_len == 9) {
2020
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_value_low, tvb, &offset, 2);
2021
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_value_high, tvb, &offset, 2);
2022
0
    }
2023
2024
0
    if (original_len == 5 || original_len == 9) {
2025
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_value_rec, tvb, &offset, 2);
2026
0
    }
2027
2028
0
    break;
2029
0
  }
2030
2031
0
  return offset;
2032
0
}
2033
2034
static unsigned
2035
dissect_rdm_pd_manufacturer_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2036
0
{
2037
0
  switch(cc) {
2038
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2039
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_manu_label, tvb, &offset, len);
2040
0
    break;
2041
0
  }
2042
2043
0
  return offset;
2044
0
}
2045
2046
static unsigned
2047
dissect_rdm_pd_disc_unique_branch(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2048
0
{
2049
0
  switch(cc) {
2050
0
  case RDM_CC_DISCOVERY_COMMAND:
2051
0
    rdm_proto_tree_add_bytes_item(tree, hf_rdm_pd_disc_unique_branch_lb_uid, tvb, &offset, 6);
2052
0
    rdm_proto_tree_add_bytes_item(tree, hf_rdm_pd_disc_unique_branch_ub_uid, tvb, &offset, 6);
2053
0
    break;
2054
0
  }
2055
2056
0
  return offset;
2057
0
}
2058
2059
static unsigned
2060
dissect_rdm_pd_disc_mute(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2061
0
{
2062
0
  switch(cc) {
2063
0
  case RDM_CC_DISCOVERY_COMMAND_RESPONSE:
2064
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_disc_mute_control_field, tvb, &offset, 2);
2065
0
    if (len > 2) {
2066
0
      rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_disc_mute_binding_uid, tvb, &offset,
2067
0
        hf_rdm_pd_disc_mute_binding_uid_manf, hf_rdm_pd_disc_mute_binding_uid_dev);
2068
0
    }
2069
0
    break;
2070
0
  }
2071
2072
0
  return offset;
2073
0
}
2074
2075
static unsigned
2076
dissect_rdm_pd_disc_un_mute(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2077
0
{
2078
0
  switch(cc) {
2079
0
  case RDM_CC_DISCOVERY_COMMAND_RESPONSE:
2080
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_disc_unmute_control_field, tvb, &offset, 2);
2081
0
    if (len > 2) {
2082
0
      rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_disc_unmute_binding_uid, tvb, &offset,
2083
0
        hf_rdm_pd_disc_unmute_binding_uid_manf, hf_rdm_pd_disc_unmute_binding_uid_dev);
2084
0
    }
2085
0
    break;
2086
0
  }
2087
2088
0
  return offset;
2089
0
}
2090
2091
static unsigned
2092
dissect_rdm_pd_proxied_devices(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2093
0
{
2094
0
  switch(cc) {
2095
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2096
0
    while (len >= 6) {
2097
0
      rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_proxied_devices_uid, tvb, &offset,
2098
0
        hf_rdm_pd_proxied_devices_uid_manf, hf_rdm_pd_proxied_devices_uid_dev);
2099
0
      len -= 6;
2100
0
    }
2101
0
    break;
2102
0
  }
2103
2104
0
  return offset;
2105
0
}
2106
2107
static unsigned
2108
dissect_rdm_pd_proxied_device_count(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2109
0
{
2110
0
  switch(cc) {
2111
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2112
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_proxied_device_count, tvb, &offset, 2);
2113
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_proxied_device_list_change, tvb, &offset, 1);
2114
0
    break;
2115
0
  }
2116
2117
0
  return offset;
2118
0
}
2119
2120
static unsigned
2121
dissect_rdm_pd_comms_status(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2122
0
{
2123
0
  switch(cc) {
2124
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2125
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_comms_status_short_msg, tvb, &offset, 2);
2126
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_comms_status_len_mismatch, tvb, &offset, 2);
2127
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_comms_status_csum_fail, tvb, &offset, 2);
2128
0
    break;
2129
0
  }
2130
2131
0
  return offset;
2132
0
}
2133
2134
static unsigned
2135
dissect_rdm_pd_status_messages(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2136
0
{
2137
0
  switch(cc) {
2138
0
  case RDM_CC_GET_COMMAND:
2139
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_type, tvb, &offset, 1);
2140
0
    break;
2141
2142
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2143
0
    while (len >= 9) {
2144
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_sub_device_id, tvb, &offset, 2);
2145
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_type, tvb, &offset, 1);
2146
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_id, tvb, &offset, 2);
2147
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_data_value_1, tvb, &offset, 2);
2148
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_messages_data_value_2, tvb, &offset, 2);
2149
0
      len -= 9;
2150
0
    }
2151
0
    break;
2152
0
  }
2153
2154
0
  return offset;
2155
0
}
2156
2157
static unsigned
2158
dissect_rdm_pd_status_id_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2159
0
{
2160
0
  switch(cc) {
2161
0
  case RDM_CC_GET_COMMAND:
2162
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_status_id, tvb, &offset, 2);
2163
0
    break;
2164
2165
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2166
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_status_id_description, tvb, &offset, len);
2167
0
    break;
2168
0
  }
2169
2170
0
  return offset;
2171
0
}
2172
2173
static unsigned
2174
dissect_rdm_pd_clear_status_id(tvbuff_t *tvb _U_, unsigned offset, proto_tree *tree _U_, uint8_t cc _U_, uint8_t len _U_)
2175
0
{
2176
0
  return offset;
2177
0
}
2178
2179
static unsigned
2180
dissect_rdm_pd_sub_device_status_report_threshold(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2181
0
{
2182
0
  switch(cc) {
2183
0
  case RDM_CC_SET_COMMAND:
2184
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2185
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sub_device_status_report_threshold_status_type, tvb, &offset, 1);
2186
0
    break;
2187
0
  }
2188
2189
0
  return offset;
2190
0
}
2191
2192
static void
2193
add_param_id_to_tree(uint16_t param_id, proto_tree *tree, tvbuff_t *tvb, unsigned *offset, uint16_t device_manufacturer_id)
2194
0
{
2195
0
  if (param_id < 0x8000) {
2196
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_id, tvb, offset, 2);
2197
0
  } else {
2198
0
    switch(device_manufacturer_id) {
2199
0
    case RDM_MANUFACTURER_ID_ETC:
2200
0
      rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_parameter_id, tvb, offset, 2);
2201
0
      break;
2202
0
    default:
2203
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_id, tvb, offset, 2);
2204
0
      break;
2205
0
    }
2206
0
  }
2207
0
}
2208
2209
static unsigned
2210
dissect_rdm_pd_supported_parameters(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len, uint16_t device_manufacturer_id)
2211
0
{
2212
0
  uint16_t     param_id;
2213
2214
0
  switch(cc) {
2215
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2216
0
    while (len >= 2) {
2217
0
      param_id = tvb_get_ntohs(tvb, offset);
2218
0
      add_param_id_to_tree(param_id, tree, tvb, &offset, device_manufacturer_id);
2219
0
      len -= 2;
2220
0
    }
2221
0
    break;
2222
0
  }
2223
2224
0
  return offset;
2225
0
}
2226
2227
static unsigned
2228
dissect_rdm_pd_parameter_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len, uint16_t device_manufacturer_id)
2229
0
{
2230
0
  uint16_t     param_id;
2231
2232
0
  switch(cc) {
2233
0
  case RDM_CC_GET_COMMAND:
2234
0
    param_id = tvb_get_ntohs(tvb, offset);
2235
0
    add_param_id_to_tree(param_id, tree, tvb, &offset, device_manufacturer_id);
2236
0
    break;
2237
2238
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2239
0
    param_id = tvb_get_ntohs(tvb, offset);
2240
0
    add_param_id_to_tree(param_id, tree, tvb, &offset, device_manufacturer_id);
2241
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_pdl_size, tvb, &offset, 1);
2242
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_data_type, tvb, &offset, 1);
2243
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_cmd_class, tvb, &offset, 1);
2244
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_type, tvb, &offset, 1);
2245
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_unit, tvb, &offset, 1);
2246
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_prefix, tvb, &offset, 1);
2247
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_min_value, tvb, &offset, 4);
2248
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_max_value, tvb, &offset, 4);
2249
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_parameter_default_value, tvb, &offset, 4);
2250
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_parameter_description, tvb, &offset, len-20);
2251
0
    break;
2252
0
  }
2253
2254
0
  return offset;
2255
0
}
2256
2257
static unsigned
2258
dissect_rdm_pd_product_detail_id_list(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2259
0
{
2260
0
  switch(cc) {
2261
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2262
0
    while (len >= 2) {
2263
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_product_detail_id, tvb, &offset, 2);
2264
0
      len -= 2;
2265
0
    }
2266
0
    break;
2267
0
  }
2268
2269
0
  return offset;
2270
0
}
2271
2272
static unsigned
2273
dissect_rdm_pd_factory_defaults(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2274
0
{
2275
0
  switch(cc) {
2276
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2277
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_factory_defaults, tvb, &offset, 1);
2278
0
    break;
2279
0
  }
2280
2281
0
  return offset;
2282
0
}
2283
2284
static unsigned
2285
dissect_rdm_pd_language_capabilities(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2286
0
{
2287
0
  switch(cc) {
2288
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2289
0
    while (len >= 2) {
2290
0
      rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_language_code, tvb, &offset, 2);
2291
0
      len -= 2;
2292
0
    }
2293
0
    break;
2294
0
  }
2295
2296
0
  return offset;
2297
0
}
2298
2299
static unsigned
2300
dissect_rdm_pd_language(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2301
0
{
2302
0
  switch(cc) {
2303
0
  case RDM_CC_SET_COMMAND:
2304
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2305
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_language_code, tvb, &offset, 2);
2306
0
    break;
2307
0
  }
2308
2309
0
  return offset;
2310
0
}
2311
2312
static unsigned
2313
dissect_rdm_pd_software_version_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2314
0
{
2315
0
  switch(cc) {
2316
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2317
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_software_version_label, tvb, &offset, len);
2318
0
    break;
2319
0
  }
2320
2321
0
  return offset;
2322
0
}
2323
2324
static unsigned
2325
dissect_rdm_pd_boot_software_version_id(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2326
0
{
2327
0
  switch(cc) {
2328
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2329
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_boot_software_version_id, tvb, &offset, 4);
2330
0
    break;
2331
0
  }
2332
2333
0
  return offset;
2334
0
}
2335
2336
static unsigned
2337
dissect_rdm_pd_boot_software_version_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2338
0
{
2339
0
  switch(cc) {
2340
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2341
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_boot_software_version_label, tvb, &offset, len);
2342
0
    break;
2343
0
  }
2344
2345
0
  return offset;
2346
0
}
2347
2348
static unsigned
2349
dissect_rdm_pd_dmx_personality(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2350
0
{
2351
0
  switch(cc) {
2352
0
  case RDM_CC_SET_COMMAND:
2353
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_nr, tvb, &offset, 1);
2354
0
    break;
2355
2356
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2357
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_current, tvb, &offset, 1);
2358
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_count, tvb, &offset, 1);
2359
0
    break;
2360
0
  }
2361
2362
0
  return offset;
2363
0
}
2364
2365
static unsigned
2366
dissect_rdm_pd_dmx_personality_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2367
0
{
2368
0
  switch(cc) {
2369
0
  case RDM_CC_GET_COMMAND:
2370
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_requested, tvb, &offset, 1);
2371
0
    break;
2372
2373
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2374
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_requested, tvb, &offset, 1);
2375
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_pers_slots, tvb, &offset, 2);
2376
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_dmx_pers_text, tvb, &offset, len-3);
2377
0
    break;
2378
0
  }
2379
2380
0
  return offset;
2381
0
}
2382
2383
static unsigned
2384
dissect_rdm_pd_slot_info(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2385
0
{
2386
0
  switch(cc) {
2387
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2388
0
    while (len >= 5) {
2389
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_offset, tvb, &offset, 2);
2390
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_type, tvb, &offset, 1);
2391
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_label_id, tvb, &offset, 2);
2392
0
      len -= 5;
2393
0
    }
2394
0
    break;
2395
0
  }
2396
2397
0
  return offset;
2398
0
}
2399
2400
static unsigned
2401
dissect_rdm_pd_slot_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2402
0
{
2403
0
  switch(cc) {
2404
0
  case RDM_CC_GET_COMMAND:
2405
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_nr, tvb, &offset, 2);
2406
0
    break;
2407
2408
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2409
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_nr, tvb, &offset, 2);
2410
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_slot_description, tvb, &offset, len-2);
2411
0
    break;
2412
0
  }
2413
2414
0
  return offset;
2415
0
}
2416
2417
static unsigned
2418
dissect_rdm_pd_slot_value(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2419
0
{
2420
0
  switch(cc) {
2421
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2422
0
    while (len >= 3) {
2423
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_offset, tvb, &offset, 2);
2424
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_slot_value, tvb, &offset, 1);
2425
0
      len -= 3;
2426
0
    }
2427
0
    break;
2428
0
  }
2429
2430
0
  return offset;
2431
0
}
2432
2433
static unsigned
2434
dissect_rdm_pd_dmx_block_address(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2435
0
{
2436
0
  switch(cc) {
2437
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2438
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_block_address_subdevice_footprint, tvb, &offset, 2);
2439
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_block_address_base_dmx_address, tvb, &offset, 2);
2440
0
    break;
2441
2442
0
  case RDM_CC_SET_COMMAND:
2443
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_block_address_base_dmx_address, tvb, &offset, 2);
2444
0
    break;
2445
0
  }
2446
2447
0
  return offset;
2448
0
}
2449
2450
static unsigned
2451
dissect_rdm_pd_dmx_fail_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2452
0
{
2453
0
  switch(cc) {
2454
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2455
0
  case RDM_CC_SET_COMMAND:
2456
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_fail_mode_scene_number, tvb, &offset, 2);
2457
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_fail_mode_loss_of_signal_delay, tvb, &offset, 2);
2458
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_fail_mode_hold_time, tvb, &offset, 2);
2459
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_fail_mode_level, tvb, &offset, 1);
2460
0
    break;
2461
0
  }
2462
2463
0
  return offset;
2464
0
}
2465
2466
static unsigned
2467
dissect_rdm_pd_dmx_startup_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2468
0
{
2469
0
  switch(cc) {
2470
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2471
0
  case RDM_CC_SET_COMMAND:
2472
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_startup_mode_scene_number, tvb, &offset, 2);
2473
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_startup_mode_loss_of_signal_delay, tvb, &offset, 2);
2474
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_startup_mode_hold_time, tvb, &offset, 2);
2475
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dmx_startup_mode_level, tvb, &offset, 1);
2476
0
    break;
2477
0
  }
2478
2479
0
  return offset;
2480
0
}
2481
2482
static unsigned
2483
dissect_rdm_pd_record_sensors(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2484
0
{
2485
0
  switch(cc) {
2486
0
  case RDM_CC_GET_COMMAND:
2487
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
2488
0
    break;
2489
2490
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2491
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_nr, tvb, &offset, 1);
2492
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_type, tvb, &offset, 1);
2493
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_unit, tvb, &offset, 1);
2494
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_prefix, tvb, &offset, 1);
2495
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_range_min_value, tvb, &offset, 2);
2496
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_range_max_value, tvb, &offset, 2);
2497
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_normal_min_value, tvb, &offset, 2);
2498
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_sensor_normal_max_value, tvb, &offset, 2);
2499
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_rec_value_support, tvb, &offset, 1);
2500
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_sensor_description, tvb, &offset, len-13);
2501
0
    break;
2502
0
  }
2503
2504
0
  return offset;
2505
0
}
2506
2507
static unsigned
2508
dissect_rdm_pd_dimmer_info(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2509
0
{
2510
0
  switch(cc) {
2511
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2512
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_minimum_level_lower_limit, tvb, &offset, 2);
2513
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_minimum_level_upper_limit, tvb, &offset, 2);
2514
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_maximum_level_lower_limit, tvb, &offset, 2);
2515
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_maximum_level_upper_limit, tvb, &offset, 2);
2516
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_number_of_supported_curves, tvb, &offset, 1);
2517
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_levels_resolution, tvb, &offset, 1);
2518
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dimmer_info_minimum_level_split_levels_supported, tvb, &offset, 1);
2519
0
    break;
2520
0
  }
2521
2522
0
  return offset;
2523
0
}
2524
2525
static unsigned
2526
dissect_rdm_pd_minimum_level(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2527
0
{
2528
0
  switch(cc) {
2529
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2530
0
  case RDM_CC_SET_COMMAND:
2531
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_minimum_level_increasing, tvb, &offset, 2);
2532
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_minimum_level_decreasing, tvb, &offset, 2);
2533
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_minimum_level_on_below_minimum, tvb, &offset, 1);
2534
0
    break;
2535
0
  }
2536
2537
0
  return offset;
2538
0
}
2539
2540
static unsigned
2541
dissect_rdm_pd_maximum_level(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2542
0
{
2543
0
  switch(cc) {
2544
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2545
0
  case RDM_CC_SET_COMMAND:
2546
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_maximum_level_level, tvb, &offset, 2);
2547
0
    break;
2548
0
  }
2549
2550
0
  return offset;
2551
0
}
2552
2553
static unsigned
2554
dissect_rdm_pd_curve(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2555
0
{
2556
0
  switch(cc) {
2557
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2558
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_curve_curve, tvb, &offset, 1);
2559
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_curve_number_of_curves, tvb, &offset, 1);
2560
0
    break;
2561
2562
0
  case RDM_CC_SET_COMMAND:
2563
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_curve_curve, tvb, &offset, 1);
2564
0
    break;
2565
0
  }
2566
2567
0
  return offset;
2568
0
}
2569
2570
static unsigned
2571
dissect_rdm_pd_curve_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2572
0
{
2573
0
  switch(cc) {
2574
0
  case RDM_CC_GET_COMMAND:
2575
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_curve_description_curve, tvb, &offset, 1);
2576
0
    break;
2577
2578
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2579
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_curve_description_curve, tvb, &offset, 1);
2580
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_curve_description_text, tvb, &offset, len-1);
2581
0
    break;
2582
0
  }
2583
2584
0
  return offset;
2585
0
}
2586
2587
static unsigned
2588
dissect_rdm_pd_output_response_time(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2589
0
{
2590
0
  switch(cc) {
2591
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2592
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_output_response_time_response_time, tvb, &offset, 1);
2593
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_output_response_time_number_of_response_times, tvb, &offset, 1);
2594
0
    break;
2595
2596
0
  case RDM_CC_SET_COMMAND:
2597
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_output_response_time_response_time, tvb, &offset, 1);
2598
0
    break;
2599
0
  }
2600
2601
0
  return offset;
2602
0
}
2603
2604
static unsigned
2605
dissect_rdm_pd_output_response_time_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2606
0
{
2607
0
  switch(cc) {
2608
0
  case RDM_CC_GET_COMMAND:
2609
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_output_response_time_description_output_response_time, tvb, &offset, 1);
2610
0
    break;
2611
2612
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2613
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_output_response_time_description_output_response_time, tvb, &offset, 1);
2614
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_output_response_time_description_text, tvb, &offset, len-1);
2615
0
    break;
2616
0
  }
2617
2618
0
  return offset;
2619
0
}
2620
2621
static unsigned
2622
dissect_rdm_pd_modulation_frequency(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2623
0
{
2624
0
  switch(cc) {
2625
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2626
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_modulation_frequency_modulation_frequency, tvb, &offset, 1);
2627
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_modulation_frequency_number_of_modulation_frequencies, tvb, &offset, 1);
2628
0
    break;
2629
2630
0
  case RDM_CC_SET_COMMAND:
2631
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_modulation_frequency_modulation_frequency, tvb, &offset, 1);
2632
0
    break;
2633
0
  }
2634
2635
0
  return offset;
2636
0
}
2637
2638
static unsigned
2639
dissect_rdm_pd_modulation_frequency_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2640
0
{
2641
0
  switch(cc) {
2642
0
  case RDM_CC_GET_COMMAND:
2643
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_modulation_frequency_description_modulation_frequency, tvb, &offset, 1);
2644
0
    break;
2645
2646
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2647
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_modulation_frequency_description_modulation_frequency, tvb, &offset, 1);
2648
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_modulation_frequency_description_text, tvb, &offset, len-1);
2649
0
    break;
2650
0
  }
2651
2652
0
  return offset;
2653
0
}
2654
2655
static unsigned
2656
dissect_rdm_pd_lamp_state(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2657
0
{
2658
0
  switch(cc) {
2659
0
  case RDM_CC_SET_COMMAND:
2660
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2661
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lamp_state, tvb, &offset, 1);
2662
0
    break;
2663
0
  }
2664
2665
0
  return offset;
2666
0
}
2667
2668
static unsigned
2669
dissect_rdm_pd_lamp_on_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2670
0
{
2671
0
  switch(cc) {
2672
0
  case RDM_CC_SET_COMMAND:
2673
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2674
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lamp_on_mode, tvb, &offset, 1);
2675
0
    break;
2676
0
  }
2677
2678
0
  return offset;
2679
0
}
2680
2681
static unsigned
2682
dissect_rdm_pd_device_power_cycles(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2683
0
{
2684
0
  switch(cc) {
2685
0
  case RDM_CC_SET_COMMAND:
2686
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2687
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_device_power_cycles, tvb, &offset, 4);
2688
0
    break;
2689
0
  }
2690
2691
0
  return offset;
2692
0
}
2693
2694
static unsigned
2695
dissect_rdm_pd_burn_in(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2696
0
{
2697
0
  switch(cc) {
2698
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2699
0
  case RDM_CC_SET_COMMAND:
2700
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_burn_in, tvb, &offset, 1);
2701
0
    break;
2702
0
  }
2703
2704
0
  return offset;
2705
0
}
2706
2707
static unsigned
2708
dissect_rdm_pd_display_invert(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2709
0
{
2710
0
  switch(cc) {
2711
0
  case RDM_CC_SET_COMMAND:
2712
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2713
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_display_invert, tvb, &offset, 1);
2714
0
    break;
2715
0
  }
2716
2717
0
  return offset;
2718
0
}
2719
2720
static unsigned
2721
dissect_rdm_pd_display_level(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2722
0
{
2723
0
  switch(cc) {
2724
0
  case RDM_CC_SET_COMMAND:
2725
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2726
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_display_level, tvb, &offset, 1);
2727
0
    break;
2728
0
  }
2729
2730
0
  return offset;
2731
0
}
2732
2733
static unsigned
2734
dissect_rdm_pd_pan_invert(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2735
0
{
2736
0
  switch(cc) {
2737
0
  case RDM_CC_SET_COMMAND:
2738
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2739
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_pan_invert, tvb, &offset, 1);
2740
0
    break;
2741
0
  }
2742
2743
0
  return offset;
2744
0
}
2745
2746
static unsigned
2747
dissect_rdm_pd_tilt_invert(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2748
0
{
2749
0
  switch(cc) {
2750
0
  case RDM_CC_SET_COMMAND:
2751
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2752
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tilt_invert, tvb, &offset, 1);
2753
0
    break;
2754
0
  }
2755
2756
0
  return offset;
2757
0
}
2758
2759
static unsigned
2760
dissect_rdm_pd_pan_tilt_swap(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2761
0
{
2762
0
  switch(cc) {
2763
0
  case RDM_CC_SET_COMMAND:
2764
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2765
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tilt_swap, tvb, &offset, 1);
2766
0
    break;
2767
0
  }
2768
2769
0
  return offset;
2770
0
}
2771
2772
static unsigned
2773
dissect_rdm_pd_real_time_clock(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
2774
0
{
2775
0
  switch(cc) {
2776
0
  case RDM_CC_SET_COMMAND:
2777
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2778
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_year, tvb, &offset, 2);
2779
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_month, tvb, &offset, 1);
2780
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_day, tvb, &offset, 1);
2781
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_hour, tvb, &offset, 1);
2782
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_minute, tvb, &offset, 1);
2783
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_real_time_clock_second, tvb, &offset, 1);
2784
0
    break;
2785
0
  }
2786
2787
0
  return offset;
2788
0
}
2789
2790
static unsigned
2791
dissect_rdm_pd_lock_pin(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2792
0
{
2793
0
  switch(cc) {
2794
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2795
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_pin_pin_code, tvb, &offset, 2);
2796
0
    break;
2797
2798
0
  case RDM_CC_SET_COMMAND:
2799
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_pin_new_pin_code, tvb, &offset, 2);
2800
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_pin_pin_code, tvb, &offset, 2);
2801
0
    break;
2802
0
  }
2803
2804
0
  return offset;
2805
0
}
2806
2807
static unsigned
2808
dissect_rdm_pd_lock_state(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2809
0
{
2810
0
  switch(cc) {
2811
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2812
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_lock_state, tvb, &offset, 1);
2813
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_number_of_lock_states, tvb, &offset, 1);
2814
0
    break;
2815
2816
0
  case RDM_CC_SET_COMMAND:
2817
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_pin_code, tvb, &offset, 2);
2818
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_lock_state, tvb, &offset, 1);
2819
0
    break;
2820
0
  }
2821
2822
0
  return offset;
2823
0
}
2824
2825
static unsigned
2826
dissect_rdm_pd_lock_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2827
0
{
2828
0
  switch(cc) {
2829
0
  case RDM_CC_GET_COMMAND:
2830
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_description_lock_state, tvb, &offset, 1);
2831
0
    break;
2832
2833
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2834
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_lock_state_description_lock_state, tvb, &offset, 1);
2835
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_lock_state_description_text, tvb, &offset, len-1);
2836
0
    break;
2837
0
  }
2838
2839
0
  return offset;
2840
0
}
2841
2842
static unsigned
2843
dissect_rdm_pd_list_interfaces(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2844
0
{
2845
0
  switch(cc) {
2846
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2847
0
    while (len >= 6) {
2848
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_list_interfaces_interface_identifier, tvb, &offset, 4);
2849
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_list_interfaces_interface_hardware_type, tvb, &offset, 2);
2850
0
      len -= 6;
2851
0
    }
2852
0
    break;
2853
0
  }
2854
2855
0
  return offset;
2856
0
}
2857
2858
static unsigned
2859
dissect_rdm_pd_interface_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
2860
0
{
2861
0
  switch(cc) {
2862
0
  case RDM_CC_GET_COMMAND:
2863
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_interface_label_interface_identifier, tvb, &offset, 4);
2864
0
    break;
2865
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2866
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_interface_label_interface_identifier, tvb, &offset, 4);
2867
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_interface_label_label, tvb, &offset, len-4);
2868
0
    break;
2869
0
  }
2870
2871
0
  return offset;
2872
0
}
2873
2874
static unsigned
2875
dissect_rdm_pd_hardware_address_type1(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2876
0
{
2877
0
  switch(cc) {
2878
0
  case RDM_CC_GET_COMMAND:
2879
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_hardware_address_type1_interface_identifier, tvb, &offset, 4);
2880
0
    break;
2881
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2882
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_hardware_address_type1_interface_identifier, tvb, &offset, 4);
2883
0
    rdm_proto_tree_add_bytes_item(tree, hf_rdm_pd_hardware_address_type1_hardware_address, tvb, &offset, 6);
2884
0
    break;
2885
0
  }
2886
2887
0
  return offset;
2888
0
}
2889
2890
static unsigned
2891
dissect_rdm_pd_dhcp_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2892
0
{
2893
0
  switch(cc) {
2894
0
  case RDM_CC_GET_COMMAND:
2895
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dhcp_mode_interface_identifier, tvb, &offset, 4);
2896
0
    break;
2897
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2898
0
  case RDM_CC_SET_COMMAND:
2899
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dhcp_mode_interface_identifier, tvb, &offset, 4);
2900
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dhcp_mode_enabled, tvb, &offset, 1);
2901
0
    break;
2902
0
  }
2903
2904
0
  return offset;
2905
0
}
2906
2907
static unsigned
2908
dissect_rdm_pd_zeroconf_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2909
0
{
2910
0
  switch(cc) {
2911
0
  case RDM_CC_GET_COMMAND:
2912
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_zeroconf_mode_interface_identifier, tvb, &offset, 4);
2913
0
    break;
2914
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2915
0
  case RDM_CC_SET_COMMAND:
2916
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_zeroconf_mode_interface_identifier, tvb, &offset, 4);
2917
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_zeroconf_mode_enabled, tvb, &offset, 1);
2918
0
    break;
2919
0
  }
2920
2921
0
  return offset;
2922
0
}
2923
2924
static unsigned
2925
dissect_rdm_pd_current_address(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2926
0
{
2927
0
  switch(cc) {
2928
0
  case RDM_CC_GET_COMMAND:
2929
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_current_address_interface_identifier, tvb, &offset, 4);
2930
0
    break;
2931
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2932
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_current_address_interface_identifier, tvb, &offset, 4);
2933
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_current_address_ipv4_address, tvb, &offset, 4);
2934
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_current_address_netmask, tvb, &offset, 1);
2935
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_current_address_dhcp_status, tvb, &offset, 1);
2936
0
    break;
2937
0
  }
2938
2939
0
  return offset;
2940
0
}
2941
2942
static unsigned
2943
dissect_rdm_pd_static_address(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2944
0
{
2945
0
  switch(cc) {
2946
0
  case RDM_CC_GET_COMMAND:
2947
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_static_address_interface_identifier, tvb, &offset, 4);
2948
0
    break;
2949
0
  case RDM_CC_GET_COMMAND_RESPONSE:
2950
0
  case RDM_CC_SET_COMMAND:
2951
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_static_address_interface_identifier, tvb, &offset, 4);
2952
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_static_address_ipv4_address, tvb, &offset, 4);
2953
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_static_address_netmask, tvb, &offset, 1);
2954
0
    break;
2955
0
  }
2956
2957
0
  return offset;
2958
0
}
2959
2960
static unsigned
2961
dissect_rdm_pd_interface_renew_dhcp(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2962
0
{
2963
0
  switch(cc) {
2964
0
  case RDM_CC_SET_COMMAND:
2965
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_interface_renew_dhcp_interface_identifier, tvb, &offset, 4);
2966
0
    break;
2967
0
  }
2968
2969
0
  return offset;
2970
0
}
2971
2972
static unsigned
2973
dissect_rdm_pd_interface_release_dhcp(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2974
0
{
2975
0
  switch(cc) {
2976
0
  case RDM_CC_SET_COMMAND:
2977
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_interface_release_dhcp_interface_identifier, tvb, &offset, 4);
2978
0
    break;
2979
0
  }
2980
2981
0
  return offset;
2982
0
}
2983
2984
static unsigned
2985
dissect_rdm_pd_interface_apply_configuration(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2986
0
{
2987
0
  switch(cc) {
2988
0
  case RDM_CC_SET_COMMAND:
2989
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_interface_apply_configuration_interface_identifier, tvb, &offset, 4);
2990
0
    break;
2991
0
  }
2992
2993
0
  return offset;
2994
0
}
2995
2996
static unsigned
2997
dissect_rdm_pd_ipv4_default_route(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
2998
0
{
2999
0
  switch(cc) {
3000
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3001
0
  case RDM_CC_SET_COMMAND:
3002
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_ipv4_default_route_interface_identifier, tvb, &offset, 4);
3003
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_ipv4_default_route_ipv4_default_route, tvb, &offset, 4);
3004
0
    break;
3005
0
  }
3006
3007
0
  return offset;
3008
0
}
3009
3010
static unsigned
3011
dissect_rdm_pd_dns_ipv4_name_server(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3012
0
{
3013
0
  switch(cc) {
3014
0
  case RDM_CC_GET_COMMAND:
3015
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dns_ipv4_name_server_index, tvb, &offset, 1);
3016
0
    break;
3017
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3018
0
  case RDM_CC_SET_COMMAND:
3019
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dns_ipv4_name_server_index, tvb, &offset, 1);
3020
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_dns_ipv4_name_server_address, tvb, &offset, 4);
3021
0
    break;
3022
0
  }
3023
3024
0
  return offset;
3025
0
}
3026
3027
static unsigned
3028
dissect_rdm_pd_dns_hostname(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3029
0
{
3030
0
  switch(cc) {
3031
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3032
0
  case RDM_CC_SET_COMMAND:
3033
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_dns_hostname, tvb, &offset, len);
3034
0
    break;
3035
0
  }
3036
3037
0
  return offset;
3038
0
}
3039
3040
static unsigned
3041
dissect_rdm_pd_dns_domain_name(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3042
0
{
3043
0
  switch(cc) {
3044
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3045
0
  case RDM_CC_SET_COMMAND:
3046
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_dns_domain_name, tvb, &offset, len);
3047
0
    break;
3048
0
  }
3049
3050
0
  return offset;
3051
0
}
3052
3053
static unsigned
3054
dissect_rdm_pd_identify_device(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3055
0
{
3056
0
  switch(cc) {
3057
0
  case RDM_CC_SET_COMMAND:
3058
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_device, tvb, &offset, 1);
3059
0
    break;
3060
3061
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3062
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_device_state, tvb, &offset, 1);
3063
0
    break;
3064
0
  }
3065
3066
0
  return offset;
3067
0
}
3068
3069
static unsigned
3070
dissect_rdm_pd_reset_device(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3071
0
{
3072
0
  switch(cc) {
3073
0
  case RDM_CC_SET_COMMAND:
3074
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_reset_device, tvb, &offset, 1);
3075
0
    break;
3076
0
  }
3077
3078
0
  return offset;
3079
0
}
3080
3081
static unsigned
3082
dissect_rdm_pd_power_state(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3083
0
{
3084
0
  switch(cc) {
3085
0
  case RDM_CC_SET_COMMAND:
3086
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3087
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_power_state, tvb, &offset, 1);
3088
0
    break;
3089
0
  }
3090
3091
0
  return offset;
3092
0
}
3093
3094
static unsigned
3095
dissect_rdm_pd_perform_selftest(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3096
0
{
3097
0
  switch(cc) {
3098
0
  case RDM_CC_SET_COMMAND:
3099
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_selftest_nr, tvb, &offset, 1);
3100
0
    break;
3101
3102
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3103
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_selftest_state, tvb, &offset, 1);
3104
0
    break;
3105
0
  }
3106
3107
0
  return offset;
3108
0
}
3109
3110
static unsigned
3111
dissect_rdm_pd_self_test_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3112
0
{
3113
0
  switch(cc) {
3114
0
  case RDM_CC_GET_COMMAND:
3115
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_selftest_nr, tvb, &offset, 1);
3116
0
    break;
3117
3118
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3119
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_selftest_nr, tvb, &offset, 1);
3120
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_selftest_description, tvb, &offset, len-1);
3121
0
    break;
3122
0
  }
3123
3124
0
  return offset;
3125
0
}
3126
3127
static unsigned
3128
dissect_rdm_pd_capture_preset(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3129
0
{
3130
0
  switch(cc) {
3131
0
  case RDM_CC_SET_COMMAND:
3132
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_capture_preset_scene_nr, tvb, &offset, 2);
3133
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_capture_preset_up_fade_time, tvb, &offset, 2);
3134
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_capture_preset_down_fade_time, tvb, &offset, 2);
3135
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_capture_preset_wait_time, tvb, &offset, 2);
3136
0
    break;
3137
0
  }
3138
3139
0
  return offset;
3140
0
}
3141
3142
static unsigned
3143
dissect_rdm_pd_preset_playback(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len _U_)
3144
0
{
3145
0
  switch(cc) {
3146
0
  case RDM_CC_SET_COMMAND:
3147
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3148
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_playback_mode, tvb, &offset, 2);
3149
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_playback_level, tvb, &offset, 1);
3150
0
    break;
3151
0
  }
3152
3153
0
  return offset;
3154
0
}
3155
3156
static unsigned
3157
dissect_rdm_pd_identify_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3158
0
{
3159
0
  switch(cc) {
3160
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3161
0
  case RDM_CC_SET_COMMAND:
3162
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_mode, tvb, &offset, 1);
3163
0
    break;
3164
0
  }
3165
3166
0
  return offset;
3167
0
}
3168
3169
static unsigned
3170
dissect_rdm_pd_preset_info(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3171
0
{
3172
0
  switch(cc) {
3173
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3174
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_level_field_supported, tvb, &offset, 1);
3175
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_preset_sequence_supported, tvb, &offset, 1);
3176
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_split_times_supported, tvb, &offset, 1);
3177
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_dmx_fail_infinite_delay_time_supported, tvb, &offset, 1);
3178
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_dmx_fail_infinite_hold_time_supported, tvb, &offset, 1);
3179
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_start_up_infinite_hold_time_supported, tvb, &offset, 1);
3180
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_scene_number, tvb, &offset, 2);
3181
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_preset_fade_time_supported, tvb, &offset, 2);
3182
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_preset_fade_time_supported, tvb, &offset, 2);
3183
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_preset_wait_time_supported, tvb, &offset, 2);
3184
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_preset_wait_time_supported, tvb, &offset, 2);
3185
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_dmx_fail_delay_time_supported, tvb, &offset, 2);
3186
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_dmx_fail_delay_time_supported, tvb, &offset, 2);
3187
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_dmx_fail_hold_time_supported, tvb, &offset, 2);
3188
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_dmx_fail_hold_time_supported, tvb, &offset, 2);
3189
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_start_up_delay_time_supported, tvb, &offset, 2);
3190
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_start_up_delay_time_supported, tvb, &offset, 2);
3191
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_minimum_start_up_hold_time_supported, tvb, &offset, 2);
3192
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_info_maximum_start_up_hold_time_supported, tvb, &offset, 2);
3193
0
    break;
3194
0
  }
3195
3196
0
  return offset;
3197
0
}
3198
3199
static unsigned
3200
dissect_rdm_pd_preset_status(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3201
0
{
3202
0
  switch(cc) {
3203
0
  case RDM_CC_GET_COMMAND:
3204
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_scene_number, tvb, &offset, 2);
3205
0
    break;
3206
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3207
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_scene_number, tvb, &offset, 2);
3208
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_up_fade_time, tvb, &offset, 2);
3209
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_down_fade_time, tvb, &offset, 2);
3210
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_wait_time, tvb, &offset, 2);
3211
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_programmed, tvb, &offset, 1);
3212
0
    break;
3213
0
  case RDM_CC_SET_COMMAND:
3214
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_scene_number, tvb, &offset, 2);
3215
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_up_fade_time, tvb, &offset, 2);
3216
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_down_fade_time, tvb, &offset, 2);
3217
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_wait_time, tvb, &offset, 2);
3218
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_status_clear_preset, tvb, &offset, 1);
3219
0
    break;
3220
0
  }
3221
3222
0
  return offset;
3223
0
}
3224
3225
static unsigned
3226
dissect_rdm_pd_preset_mergemode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3227
0
{
3228
0
  switch(cc) {
3229
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3230
0
  case RDM_CC_SET_COMMAND:
3231
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_preset_mergemode, tvb, &offset, 1);
3232
0
    break;
3233
0
  }
3234
3235
0
  return offset;
3236
0
}
3237
3238
static unsigned
3239
dissect_rdm_pd_power_on_self_test(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3240
0
{
3241
0
  switch(cc) {
3242
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3243
0
  case RDM_CC_SET_COMMAND:
3244
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_power_on_self_test, tvb, &offset, 1);
3245
0
    break;
3246
0
  }
3247
3248
0
  return offset;
3249
0
}
3250
3251
static unsigned
3252
dissect_rdm_pd_background_queued_status_policy(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3253
0
{
3254
0
  switch(cc) {
3255
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3256
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_queued_status_policy_current_policy, tvb, &offset, 1);
3257
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_queued_status_policy_number_of_policies, tvb, &offset, 1);
3258
0
    break;
3259
0
  case RDM_CC_SET_COMMAND:
3260
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_queued_status_policy_current_policy, tvb, &offset, 1);
3261
0
    break;
3262
0
  }
3263
3264
0
  return offset;
3265
0
}
3266
3267
static unsigned
3268
dissect_rdm_pd_background_queued_status_policy_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3269
0
{
3270
0
  switch(cc) {
3271
0
  case RDM_CC_GET_COMMAND:
3272
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_queued_status_policy_description_policy, tvb, &offset, 1);
3273
0
    break;
3274
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3275
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_queued_status_policy_description_policy, tvb, &offset, 1);
3276
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_background_queued_status_policy_description_description, tvb, &offset, len-1);
3277
0
    break;
3278
0
  }
3279
3280
0
  return offset;
3281
0
}
3282
3283
static unsigned
3284
dissect_rdm_pd_endpoint_list(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3285
0
{
3286
0
  switch(cc) {
3287
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3288
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_list_change_number, tvb, &offset, 4);
3289
0
    len -= 4;
3290
0
    while (len >= 3) {
3291
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_list_endpoint_id, tvb, &offset, 2);
3292
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_list_endpoint_type, tvb, &offset, 1);
3293
0
      len -= 3;
3294
0
    }
3295
0
    break;
3296
0
  }
3297
3298
0
  return offset;
3299
0
}
3300
3301
static unsigned
3302
dissect_rdm_pd_search_domain(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3303
0
{
3304
0
  switch(cc) {
3305
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3306
0
  case RDM_CC_SET_COMMAND:
3307
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_search_domain_dns_domain_name, tvb, &offset, len);
3308
0
    break;
3309
0
  }
3310
0
  return offset;
3311
0
}
3312
3313
static unsigned
3314
dissect_rdm_pd_endpoint_to_universe(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3315
0
{
3316
0
  switch(cc) {
3317
0
  case RDM_CC_GET_COMMAND:
3318
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3319
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_to_universe_endpoint_id, tvb, &offset, 2);
3320
0
    break;
3321
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3322
0
  case RDM_CC_SET_COMMAND:
3323
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_to_universe_endpoint_id, tvb, &offset, 2);
3324
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_to_universe_universe_number, tvb, &offset, 2);
3325
0
    break;
3326
0
  }
3327
3328
0
  return offset;
3329
0
}
3330
3331
static unsigned
3332
dissect_rdm_pd_rdm_traffic_enable(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3333
0
{
3334
0
  switch(cc) {
3335
0
  case RDM_CC_GET_COMMAND:
3336
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_rdm_traffic_enable_endpoint_id, tvb, &offset, 2);
3337
0
    break;
3338
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3339
0
  case RDM_CC_SET_COMMAND:
3340
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_rdm_traffic_enable_endpoint_id, tvb, &offset, 2);
3341
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_rdm_traffic_enable_rdm_enabled, tvb, &offset, 1);
3342
0
    break;
3343
0
  }
3344
3345
0
  return offset;
3346
0
}
3347
3348
static unsigned
3349
dissect_rdm_pd_endpoint_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3350
0
{
3351
0
  switch(cc) {
3352
0
  case RDM_CC_GET_COMMAND:
3353
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3354
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_mode_endpoint_id, tvb, &offset, 2);
3355
0
    break;
3356
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3357
0
  case RDM_CC_SET_COMMAND:
3358
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_mode_endpoint_id, tvb, &offset, 2);
3359
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_mode_endpoint_mode, tvb, &offset, 1);
3360
0
    break;
3361
0
  }
3362
3363
0
  return offset;
3364
0
}
3365
3366
static unsigned
3367
dissect_rdm_pd_endpoint_label(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3368
0
{
3369
0
  switch(cc) {
3370
0
  case RDM_CC_GET_COMMAND:
3371
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3372
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_label_endpoint_id, tvb, &offset, 2);
3373
0
    break;
3374
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3375
0
  case RDM_CC_SET_COMMAND:
3376
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_label_endpoint_id, tvb, &offset, 2);
3377
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_endpoint_label_label, tvb, &offset, len-2);
3378
0
    break;
3379
0
  }
3380
3381
0
  return offset;
3382
0
}
3383
3384
static unsigned
3385
dissect_rdm_pd_discovery_state(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3386
0
{
3387
0
  switch(cc) {
3388
0
  case RDM_CC_GET_COMMAND:
3389
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3390
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_endpoint_id, tvb, &offset, 2);
3391
0
    break;
3392
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3393
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_endpoint_id, tvb, &offset, 2);
3394
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_device_count, tvb, &offset, 2);
3395
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_discovery_state, tvb, &offset, 1);
3396
0
    break;
3397
0
  case RDM_CC_SET_COMMAND:
3398
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_endpoint_id, tvb, &offset, 2);
3399
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_discovery_state_discovery_state, tvb, &offset, 1);
3400
0
    break;
3401
0
  }
3402
3403
0
  return offset;
3404
0
}
3405
3406
static unsigned
3407
dissect_rdm_pd_endpoint_timing(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3408
0
{
3409
0
  switch(cc) {
3410
0
  case RDM_CC_GET_COMMAND:
3411
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3412
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_endpoint_id, tvb, &offset, 2);
3413
0
    break;
3414
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3415
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_endpoint_id, tvb, &offset, 2);
3416
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_setting, tvb, &offset, 1);
3417
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_number_of_settings, tvb, &offset, 1);
3418
0
    break;
3419
0
  case RDM_CC_SET_COMMAND:
3420
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_endpoint_id, tvb, &offset, 2);
3421
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_setting, tvb, &offset, 1);
3422
0
    break;
3423
0
  }
3424
3425
0
  return offset;
3426
0
}
3427
3428
static unsigned
3429
dissect_rdm_pd_endpoint_timing_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3430
0
{
3431
0
  switch(cc) {
3432
0
  case RDM_CC_GET_COMMAND:
3433
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_description_setting, tvb, &offset, 1);
3434
0
    break;
3435
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3436
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_timing_description_setting, tvb, &offset, 1);
3437
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_endpoint_timing_description_description, tvb, &offset, len-1);
3438
0
    break;
3439
0
  }
3440
3441
0
  return offset;
3442
0
}
3443
3444
static unsigned
3445
dissect_rdm_pd_binding_control_fields(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3446
0
{
3447
0
  switch(cc) {
3448
0
  case RDM_CC_GET_COMMAND:
3449
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_binding_control_fields_endpoint_id, tvb, &offset, 2);
3450
0
    rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_binding_control_fields_uid, tvb, &offset,
3451
0
      hf_rdm_pd_binding_control_fields_uid_manf, hf_rdm_pd_binding_control_fields_uid_dev);
3452
0
    break;
3453
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3454
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_binding_control_fields_endpoint_id, tvb, &offset, 2);
3455
0
    rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_binding_control_fields_uid, tvb, &offset,
3456
0
      hf_rdm_pd_binding_control_fields_uid_manf, hf_rdm_pd_binding_control_fields_uid_dev);
3457
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_binding_control_fields_control_field, tvb, &offset, 2);
3458
0
    rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_binding_control_fields_binding_uid, tvb, &offset,
3459
0
      hf_rdm_pd_binding_control_fields_binding_uid_manf, hf_rdm_pd_binding_control_fields_binding_uid_dev);
3460
0
    break;
3461
0
  }
3462
3463
0
  return offset;
3464
0
}
3465
3466
static unsigned
3467
dissect_rdm_pd_identify_endpoint(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3468
0
{
3469
0
  switch(cc) {
3470
0
  case RDM_CC_GET_COMMAND:
3471
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3472
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_endpoint_endpoint_id, tvb, &offset, 2);
3473
0
    break;
3474
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3475
0
  case RDM_CC_SET_COMMAND:
3476
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_endpoint_endpoint_id, tvb, &offset, 2);
3477
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_identify_endpoint_identify_state, tvb, &offset, 1);
3478
0
    break;
3479
0
  }
3480
3481
0
  return offset;
3482
0
}
3483
3484
static unsigned
3485
dissect_rdm_pd_background_discovery(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3486
0
{
3487
0
  switch(cc) {
3488
0
  case RDM_CC_GET_COMMAND:
3489
0
  case RDM_CC_SET_COMMAND_RESPONSE:
3490
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_discovery_endpoint_id, tvb, &offset, 2);
3491
0
    break;
3492
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3493
0
  case RDM_CC_SET_COMMAND:
3494
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_discovery_endpoint_id, tvb, &offset, 2);
3495
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_background_discovery_enabled, tvb, &offset, 1);
3496
0
    break;
3497
0
  }
3498
3499
0
  return offset;
3500
0
}
3501
3502
static unsigned
3503
dissect_rdm_pd_endpoint_responder_list_change(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3504
0
{
3505
0
  switch(cc) {
3506
0
  case RDM_CC_GET_COMMAND:
3507
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responder_list_change_endpoint_id, tvb, &offset, 2);
3508
0
    break;
3509
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3510
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responder_list_change_endpoint_id, tvb, &offset, 2);
3511
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responder_list_change_change_number, tvb, &offset, 4);
3512
0
    break;
3513
0
  }
3514
3515
0
  return offset;
3516
0
}
3517
3518
static unsigned
3519
dissect_rdm_pd_endpoint_responders(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3520
0
{
3521
0
  switch(cc) {
3522
0
  case RDM_CC_GET_COMMAND:
3523
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responders_endpoint_id, tvb, &offset, 2);
3524
0
    break;
3525
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3526
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responders_endpoint_id, tvb, &offset, 2);
3527
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_responders_change_number, tvb, &offset, 4);
3528
0
    len -= 6;
3529
0
    while (len >= 6) {
3530
0
      rdm_proto_tree_add_uid_item(tree, hf_rdm_pd_endpoint_responders_uid, tvb, &offset,
3531
0
        hf_rdm_pd_endpoint_responders_uid_manf, hf_rdm_pd_endpoint_responders_uid_dev);
3532
0
      len -= 6;
3533
0
    }
3534
0
    break;
3535
0
  }
3536
3537
0
  return offset;
3538
0
}
3539
3540
static unsigned
3541
dissect_rdm_pd_tcp_comms_status(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3542
0
{
3543
0
  switch(cc) {
3544
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3545
0
    while (len >= 87) {
3546
0
      rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_tcp_comms_status_scope_string, tvb, &offset, 63);
3547
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tcp_comms_status_broker_ipv4_address, tvb, &offset, 4);
3548
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tcp_comms_status_broker_ipv6_address, tvb, &offset, 16);
3549
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tcp_comms_status_broker_port, tvb, &offset, 2);
3550
0
      rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_tcp_comms_status_unhealthy_tcp_events, tvb, &offset, 2);
3551
0
      len -= 87;
3552
0
    }
3553
0
    break;
3554
0
  case RDM_CC_SET_COMMAND:
3555
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_tcp_comms_status_scope_string, tvb, &offset, 63);
3556
0
    break;
3557
0
  }
3558
3559
0
  return offset;
3560
0
}
3561
3562
static unsigned
3563
dissect_rdm_pd_endpoint_list_change(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3564
0
{
3565
0
  switch(cc) {
3566
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3567
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_endpoint_list_change_change_number, tvb, &offset, 4);
3568
0
    break;
3569
0
  }
3570
3571
0
  return offset;
3572
0
}
3573
3574
static unsigned
3575
dissect_rdm_pd_component_scope(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3576
0
{
3577
0
  switch(cc) {
3578
0
  case RDM_CC_GET_COMMAND:
3579
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_slot, tvb, &offset, 2);
3580
0
    break;
3581
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3582
0
  case RDM_CC_SET_COMMAND:
3583
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_slot, tvb, &offset, 2);
3584
0
    rdm_proto_tree_add_ascii_item(tree, hf_rdm_pd_component_scope_scope_string, tvb, &offset, 63);
3585
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_static_config_type, tvb, &offset, 1);
3586
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_static_ipv4_address, tvb, &offset, 4);
3587
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_static_ipv6_address, tvb, &offset, 16);
3588
0
    rdm_proto_tree_add_numeric_item(tree, hf_rdm_pd_component_scope_scope_static_port, tvb, &offset, 2);
3589
0
    break;
3590
0
  }
3591
3592
0
  return offset;
3593
0
}
3594
3595
static unsigned
3596
dissect_rdm_pd_broker_status(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3597
0
{
3598
0
  switch(cc) {
3599
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3600
0
    rdm_proto_tree_add_numeric_item(tree, hf_rem_pd_broker_status_set_allowed, tvb, &offset, 1);
3601
0
    rdm_proto_tree_add_numeric_item(tree, hf_rem_pd_broker_status_state, tvb, &offset, 1);
3602
0
    break;
3603
0
  case RDM_CC_SET_COMMAND:
3604
0
    rdm_proto_tree_add_numeric_item(tree, hf_rem_pd_broker_status_state, tvb, &offset, 1);
3605
0
    break;
3606
0
  }
3607
3608
0
  return offset;
3609
0
}
3610
3611
static unsigned
3612
dissect_etc_pd_led_curve(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3613
0
{
3614
0
  switch(cc) {
3615
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3616
0
  case RDM_CC_SET_COMMAND:
3617
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_curve, tvb, &offset, 1);
3618
0
    break;
3619
0
  }
3620
3621
0
  return offset;
3622
0
}
3623
3624
static unsigned
3625
dissect_etc_pd_led_curve_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3626
0
{
3627
0
  switch(cc) {
3628
0
  case RDM_CC_GET_COMMAND:
3629
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_curve_description_curve, tvb, &offset, 1);
3630
0
    break;
3631
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3632
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_curve_description_curve, tvb, &offset, 1);
3633
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_led_curve_description_text, tvb, &offset, len-1);
3634
0
    break;
3635
0
  }
3636
3637
0
  return offset;
3638
0
}
3639
3640
static unsigned
3641
dissect_etc_pd_led_strobe(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3642
0
{
3643
0
  switch(cc) {
3644
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3645
0
  case RDM_CC_SET_COMMAND:
3646
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_strobe, tvb, &offset, 1);
3647
0
    break;
3648
0
  }
3649
3650
0
  return offset;
3651
0
}
3652
3653
static unsigned
3654
dissect_etc_pd_led_output_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3655
0
{
3656
0
  switch(cc) {
3657
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3658
0
  case RDM_CC_SET_COMMAND:
3659
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_output_mode, tvb, &offset, 1);
3660
0
    break;
3661
0
  }
3662
3663
0
  return offset;
3664
0
}
3665
3666
static unsigned
3667
dissect_etc_pd_led_output_mode_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3668
0
{
3669
0
  switch(cc) {
3670
0
  case RDM_CC_GET_COMMAND:
3671
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_output_mode_description_mode, tvb, &offset, 1);
3672
0
    break;
3673
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3674
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_output_mode_description_mode, tvb, &offset, 1);
3675
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_led_output_mode_description_text, tvb, &offset, len-1);
3676
0
    break;
3677
0
  }
3678
3679
0
  return offset;
3680
0
}
3681
3682
static unsigned
3683
dissect_etc_pd_led_red_shift(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3684
0
{
3685
0
  switch(cc) {
3686
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3687
0
  case RDM_CC_SET_COMMAND:
3688
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_red_shift, tvb, &offset, 1);
3689
0
    break;
3690
0
  }
3691
3692
0
  return offset;
3693
0
}
3694
3695
static unsigned
3696
dissect_etc_pd_led_white_point(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3697
0
{
3698
0
  switch(cc) {
3699
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3700
0
  case RDM_CC_SET_COMMAND:
3701
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_white_point, tvb, &offset, 1);
3702
0
    break;
3703
0
  }
3704
3705
0
  return offset;
3706
0
}
3707
3708
static unsigned
3709
dissect_etc_pd_led_white_point_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3710
0
{
3711
0
  switch(cc) {
3712
0
  case RDM_CC_GET_COMMAND:
3713
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_white_point_description_white_point, tvb, &offset, 1);
3714
0
    break;
3715
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3716
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_white_point_description_white_point, tvb, &offset, 1);
3717
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_led_white_point_description_text, tvb, &offset, len-1);
3718
0
    break;
3719
0
  }
3720
3721
0
  return offset;
3722
0
}
3723
3724
static unsigned
3725
dissect_etc_pd_led_frequency(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3726
0
{
3727
0
  switch(cc) {
3728
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3729
0
  case RDM_CC_SET_COMMAND:
3730
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_frequency, tvb, &offset, 2);
3731
0
    break;
3732
0
  }
3733
3734
0
  return offset;
3735
0
}
3736
3737
static unsigned
3738
dissect_etc_pd_dmx_data_loss_behavior(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3739
0
{
3740
0
  switch(cc) {
3741
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3742
0
  case RDM_CC_SET_COMMAND:
3743
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_dmx_data_loss_behavior, tvb, &offset, 1);
3744
0
    break;
3745
0
  }
3746
3747
0
  return offset;
3748
0
}
3749
3750
static unsigned
3751
dissect_etc_pd_dmx_data_loss_behavior_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3752
0
{
3753
0
  switch(cc) {
3754
0
  case RDM_CC_GET_COMMAND:
3755
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_dmx_data_loss_behavior_description_behavior, tvb, &offset, 1);
3756
0
    break;
3757
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3758
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_dmx_data_loss_behavior_description_behavior, tvb, &offset, 1);
3759
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_dmx_data_loss_behavior_description_text, tvb, &offset, len-1);
3760
0
    break;
3761
0
  }
3762
3763
0
  return offset;
3764
0
}
3765
3766
static unsigned
3767
dissect_etc_pd_led_plus_seven(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3768
0
{
3769
0
  switch(cc) {
3770
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3771
0
  case RDM_CC_SET_COMMAND:
3772
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_plus_seven, tvb, &offset, 1);
3773
0
    break;
3774
0
  }
3775
3776
0
  return offset;
3777
0
}
3778
3779
static unsigned
3780
dissect_etc_pd_backlight_brightness(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3781
0
{
3782
0
  switch(cc) {
3783
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3784
0
  case RDM_CC_SET_COMMAND:
3785
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_backlight_brightness, tvb, &offset, 1);
3786
0
    break;
3787
0
  }
3788
3789
0
  return offset;
3790
0
}
3791
3792
static unsigned
3793
dissect_etc_pd_backlight_timeout(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3794
0
{
3795
0
  switch(cc) {
3796
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3797
0
  case RDM_CC_SET_COMMAND:
3798
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_backlight_timeout, tvb, &offset, 1);
3799
0
    break;
3800
0
  }
3801
3802
0
  return offset;
3803
0
}
3804
3805
static unsigned
3806
dissect_etc_pd_status_indicators(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3807
0
{
3808
0
  switch(cc) {
3809
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3810
0
  case RDM_CC_SET_COMMAND:
3811
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_status_indicators, tvb, &offset, 1);
3812
0
    break;
3813
0
  }
3814
3815
0
  return offset;
3816
0
}
3817
3818
static unsigned
3819
dissect_etc_pd_recalibrate_fixture(unsigned offset)
3820
0
{
3821
  /* set-only, no data */
3822
0
  return offset;
3823
0
}
3824
3825
static unsigned
3826
dissect_etc_pd_overtemp_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3827
0
{
3828
0
  switch(cc) {
3829
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3830
0
  case RDM_CC_SET_COMMAND:
3831
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_overtemp_mode, tvb, &offset, 1);
3832
0
    break;
3833
0
  }
3834
3835
0
  return offset;
3836
0
}
3837
3838
static unsigned
3839
dissect_etc_pd_simple_setup_mode(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3840
0
{
3841
0
  switch(cc) {
3842
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3843
0
  case RDM_CC_SET_COMMAND:
3844
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_simple_setup_mode, tvb, &offset, 1);
3845
0
    break;
3846
0
  }
3847
3848
0
  return offset;
3849
0
}
3850
3851
static unsigned
3852
dissect_etc_pd_led_strobe_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3853
0
{
3854
0
  switch(cc) {
3855
0
  case RDM_CC_GET_COMMAND:
3856
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_strobe_description_strobe, tvb, &offset, 1);
3857
0
    break;
3858
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3859
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_strobe_description_strobe, tvb, &offset, 1);
3860
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_led_strobe_description_text, tvb, &offset, len-1);
3861
0
    break;
3862
0
  }
3863
3864
0
  return offset;
3865
0
}
3866
3867
static unsigned
3868
dissect_etc_pd_red_shift_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3869
0
{
3870
0
  switch(cc) {
3871
0
  case RDM_CC_GET_COMMAND:
3872
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_red_shift_description_red_shift, tvb, &offset, 1);
3873
0
    break;
3874
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3875
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_red_shift_description_red_shift, tvb, &offset, 1);
3876
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_red_shift_description_text, tvb, &offset, len-1);
3877
0
    break;
3878
0
  }
3879
3880
0
  return offset;
3881
0
}
3882
3883
static unsigned
3884
dissect_etc_pd_plus_seven_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3885
0
{
3886
0
  switch(cc) {
3887
0
  case RDM_CC_GET_COMMAND:
3888
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_plus_seven_description_plus_seven, tvb, &offset, 1);
3889
0
    break;
3890
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3891
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_plus_seven_description_plus_seven, tvb, &offset, 1);
3892
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_plus_seven_description_text, tvb, &offset, len-1);
3893
0
    break;
3894
0
  }
3895
3896
0
  return offset;
3897
0
}
3898
3899
static unsigned
3900
dissect_etc_pd_backlight_timeout_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3901
0
{
3902
0
  switch(cc) {
3903
0
  case RDM_CC_GET_COMMAND:
3904
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_backlight_timeout_description_timeout, tvb, &offset, 1);
3905
0
    break;
3906
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3907
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_backlight_timeout_description_timeout, tvb, &offset, 1);
3908
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_backlight_timeout_description_text, tvb, &offset, len-1);
3909
0
    break;
3910
0
  }
3911
3912
0
  return offset;
3913
0
}
3914
3915
static unsigned
3916
dissect_etc_pd_simple_setup_mode_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3917
0
{
3918
0
  switch(cc) {
3919
0
  case RDM_CC_GET_COMMAND:
3920
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_simple_setup_mode_description_mode, tvb, &offset, 1);
3921
0
    break;
3922
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3923
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_simple_setup_mode_description_mode, tvb, &offset, 1);
3924
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_simple_setup_mode_description_text, tvb, &offset, len-1);
3925
0
    break;
3926
0
  }
3927
3928
0
  return offset;
3929
0
}
3930
3931
static unsigned
3932
dissect_etc_pd_overtemp_mode_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
3933
0
{
3934
0
  switch(cc) {
3935
0
  case RDM_CC_GET_COMMAND:
3936
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_overtemp_mode_description_mode, tvb, &offset, 1);
3937
0
    break;
3938
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3939
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_overtemp_mode_description_mode, tvb, &offset, 1);
3940
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_overtemp_mode_description_text, tvb, &offset, len-1);
3941
0
    break;
3942
0
  }
3943
3944
0
  return offset;
3945
0
}
3946
3947
static unsigned
3948
dissect_etc_pd_led_requested_xy(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3949
0
{
3950
0
  switch(cc) {
3951
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3952
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_requested_xy_x, tvb, &offset, 2);
3953
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_requested_xy_y, tvb, &offset, 2);
3954
0
    break;
3955
0
  }
3956
3957
0
  return offset;
3958
0
}
3959
3960
static unsigned
3961
dissect_etc_pd_led_current_xy(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3962
0
{
3963
0
  switch(cc) {
3964
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3965
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_current_xy_x, tvb, &offset, 2);
3966
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_current_xy_y, tvb, &offset, 2);
3967
0
    break;
3968
0
  }
3969
3970
0
  return offset;
3971
0
}
3972
3973
static unsigned
3974
dissect_etc_pd_current_pwm(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3975
0
{
3976
0
  switch(cc) {
3977
0
  case RDM_CC_GET_COMMAND:
3978
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_current_pwm_led_number, tvb, &offset, 1);
3979
0
    break;
3980
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3981
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_current_pwm_led_number, tvb, &offset, 1);
3982
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_current_pwm_channel_duty_cycle, tvb, &offset, 2);
3983
0
    break;
3984
0
  }
3985
3986
0
  return offset;
3987
0
}
3988
3989
static unsigned
3990
dissect_etc_pd_tristimulus(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
3991
0
{
3992
0
  switch(cc) {
3993
0
  case RDM_CC_GET_COMMAND:
3994
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_tristimulus_led_number, tvb, &offset, 1);
3995
0
    break;
3996
0
  case RDM_CC_GET_COMMAND_RESPONSE:
3997
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_tristimulus_led_number, tvb, &offset, 1);
3998
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_tristimulus_x, tvb, &offset, 4);
3999
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_tristimulus_y, tvb, &offset, 4);
4000
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_tristimulus_z, tvb, &offset, 4);
4001
0
    break;
4002
0
  }
4003
4004
0
  return offset;
4005
0
}
4006
4007
static unsigned
4008
dissect_etc_pd_led_information(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4009
0
{
4010
0
  switch(cc) {
4011
0
  case RDM_CC_GET_COMMAND:
4012
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_led_number, tvb, &offset, 1);
4013
0
    break;
4014
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4015
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_led_number, tvb, &offset, 1);
4016
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_type, tvb, &offset, 1);
4017
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_dmx_control_channel, tvb, &offset, 1);
4018
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_drive_current, tvb, &offset, 2);
4019
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_gamut_polygon_order, tvb, &offset, 1);
4020
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_information_quantity, tvb, &offset, 1);
4021
0
    break;
4022
0
  }
4023
4024
0
  return offset;
4025
0
}
4026
4027
static unsigned
4028
dissect_etc_pd_preset_config(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4029
0
{
4030
0
  switch(cc) {
4031
0
  case RDM_CC_GET_COMMAND:
4032
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_preset_number, tvb, &offset, 2);
4033
0
    break;
4034
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4035
0
  case RDM_CC_SET_COMMAND:
4036
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_preset_number, tvb, &offset, 2);
4037
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_fade_time, tvb, &offset, 2);
4038
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_delay_time, tvb, &offset, 2);
4039
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_hue, tvb, &offset, 2);
4040
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_saturation, tvb, &offset, 1);
4041
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_intensity, tvb, &offset, 1);
4042
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_preset_config_strobe, tvb, &offset, 1);
4043
0
    break;
4044
0
  }
4045
4046
0
  return offset;
4047
0
}
4048
4049
static unsigned
4050
dissect_etc_pd_sequence_playback(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4051
0
{
4052
0
  switch(cc) {
4053
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4054
0
  case RDM_CC_SET_COMMAND:
4055
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_sequence_playback_sequence_number, tvb, &offset, 2);
4056
0
    break;
4057
0
  }
4058
4059
0
  return offset;
4060
0
}
4061
4062
static unsigned
4063
dissect_etc_pd_sequence_config(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4064
0
{
4065
0
  unsigned    i;
4066
0
  proto_tree *preset_steps_tree, *preset_steps_sub_item;
4067
0
  proto_tree *step_link_times_tree, *step_link_times_sub_item;
4068
4069
0
  switch(cc) {
4070
0
  case RDM_CC_GET_COMMAND:
4071
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_sequence_config_sequence_number, tvb, &offset, 2);
4072
0
    break;
4073
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4074
0
  case RDM_CC_SET_COMMAND:
4075
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_sequence_config_sequence_number, tvb, &offset, 2);
4076
4077
0
    preset_steps_tree = proto_tree_add_item(tree, hf_etc_pd_sequence_config_preset_steps, tvb, offset, 24, ENC_NA);
4078
0
    preset_steps_sub_item = proto_item_add_subtree(preset_steps_tree, ett_etc_sequence_config_steps);
4079
0
    for (i = 0; i < 24; i++) {
4080
0
      rdm_proto_tree_add_numeric_item(preset_steps_sub_item, hf_etc_pd_sequence_config_preset_step, tvb, &offset, 1);
4081
0
    }
4082
4083
0
    step_link_times_tree = proto_tree_add_item(tree, hf_etc_pd_sequence_config_step_link_times, tvb, offset, 48, ENC_NA);
4084
0
    step_link_times_sub_item = proto_item_add_subtree(step_link_times_tree, ett_etc_sequence_config_times);
4085
0
    for (i = 0; i < 24; i++) {
4086
0
      rdm_proto_tree_add_numeric_item(step_link_times_sub_item, hf_etc_pd_sequence_config_step_link_time, tvb, &offset, 2);
4087
0
    }
4088
4089
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_sequence_config_rate, tvb, &offset, 2);
4090
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_sequence_config_end_state, tvb, &offset, 1);
4091
0
    break;
4092
0
  }
4093
4094
0
  return offset;
4095
0
}
4096
4097
4098
static unsigned
4099
dissect_etc_pd_low_power_timeout(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4100
0
{
4101
0
  switch(cc) {
4102
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4103
0
  case RDM_CC_SET_COMMAND:
4104
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_low_power_timeout, tvb, &offset, 1);
4105
0
    break;
4106
0
  }
4107
4108
0
  return offset;
4109
0
}
4110
4111
static unsigned
4112
dissect_etc_pd_low_power_timeout_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
4113
0
{
4114
0
  switch(cc) {
4115
0
  case RDM_CC_GET_COMMAND:
4116
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_low_power_timeout_description_timeout, tvb, &offset, 1);
4117
0
    break;
4118
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4119
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_low_power_timeout_description_timeout, tvb, &offset, 1);
4120
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_low_power_timeout_description_text, tvb, &offset, len-1);
4121
0
    break;
4122
0
  }
4123
4124
0
  return offset;
4125
0
}
4126
4127
static unsigned
4128
dissect_etc_pd_led_enum_frequency(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4129
0
{
4130
0
  switch(cc) {
4131
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4132
0
  case RDM_CC_SET_COMMAND:
4133
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_enum_frequency, tvb, &offset, 1);
4134
0
    break;
4135
0
  }
4136
4137
0
  return offset;
4138
0
}
4139
4140
static unsigned
4141
dissect_etc_pd_led_enum_frequency_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
4142
0
{
4143
0
  switch(cc) {
4144
0
  case RDM_CC_GET_COMMAND:
4145
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_enum_frequency_description_frequency, tvb, &offset, 1);
4146
0
    break;
4147
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4148
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_led_enum_frequency_description_frequency, tvb, &offset, 1);
4149
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_led_enum_frequency_description_text, tvb, &offset, len-1);
4150
0
    break;
4151
0
  }
4152
4153
0
  return offset;
4154
0
}
4155
4156
static unsigned
4157
dissect_etc_pd_rgbi_preset_config(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4158
0
{
4159
0
  switch(cc) {
4160
0
  case RDM_CC_GET_COMMAND:
4161
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_preset_number, tvb, &offset, 2);
4162
0
    break;
4163
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4164
0
  case RDM_CC_SET_COMMAND:
4165
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_preset_number, tvb, &offset, 2);
4166
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_fade_time, tvb, &offset, 2);
4167
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_delay_time, tvb, &offset, 2);
4168
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_red, tvb, &offset, 1);
4169
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_green, tvb, &offset, 1);
4170
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_blue, tvb, &offset, 1);
4171
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_intensity, tvb, &offset, 1);
4172
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_rgbi_preset_config_strobe, tvb, &offset, 1);
4173
0
    break;
4174
0
  }
4175
4176
0
  return offset;
4177
0
}
4178
4179
static unsigned
4180
dissect_etc_pd_cct_preset_config(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4181
0
{
4182
0
  switch(cc) {
4183
0
  case RDM_CC_GET_COMMAND:
4184
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_preset_number, tvb, &offset, 2);
4185
0
    break;
4186
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4187
0
  case RDM_CC_SET_COMMAND:
4188
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_preset_number, tvb, &offset, 2);
4189
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_fade_time, tvb, &offset, 2);
4190
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_delay_time, tvb, &offset, 2);
4191
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_white_point, tvb, &offset, 2);
4192
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_tint, tvb, &offset, 2);
4193
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_strobe, tvb, &offset, 1);
4194
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_intensity, tvb, &offset, 2);
4195
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_tone, tvb, &offset, 1);
4196
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_cct_preset_config_reserved, tvb, &offset, 4);
4197
0
    break;
4198
0
  }
4199
4200
0
  return offset;
4201
0
}
4202
4203
static unsigned
4204
dissect_etc_pd_supplementary_device_version(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
4205
0
{
4206
0
  switch(cc) {
4207
0
  case RDM_CC_GET_COMMAND:
4208
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_supplementary_device_version_param_index, tvb, &offset, 1);
4209
0
    break;
4210
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4211
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_supplementary_device_version_param_index, tvb, &offset, 1);
4212
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_supplementary_device_version_param_description, tvb, &offset, len-1);
4213
0
    break;
4214
0
  }
4215
4216
0
  return offset;
4217
0
}
4218
4219
static unsigned
4220
dissect_etc_pd_power_command(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4221
0
{
4222
0
  switch(cc) {
4223
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4224
0
  case RDM_CC_SET_COMMAND:
4225
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_power_command, tvb, &offset, 1);
4226
0
    break;
4227
0
  }
4228
4229
0
  return offset;
4230
0
}
4231
4232
static unsigned
4233
dissect_etc_pd_power_command_description(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
4234
0
{
4235
0
  switch(cc) {
4236
0
  case RDM_CC_GET_COMMAND:
4237
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_power_command_description_state, tvb, &offset, 1);
4238
0
    break;
4239
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4240
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_power_command_description_state, tvb, &offset, 1);
4241
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_power_command_description_text, tvb, &offset, len-1);
4242
0
    break;
4243
0
  }
4244
4245
0
  return offset;
4246
0
}
4247
4248
static unsigned
4249
dissect_etc_pd_dali_short_address(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4250
0
{
4251
0
  switch(cc) {
4252
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4253
0
  case RDM_CC_SET_COMMAND:
4254
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_dali_short_address, tvb, &offset, 1);
4255
0
    break;
4256
0
  }
4257
4258
0
  return offset;
4259
0
}
4260
4261
static unsigned
4262
dissect_etc_pd_dali_group_membership(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4263
0
{
4264
0
  switch(cc) {
4265
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4266
0
  case RDM_CC_SET_COMMAND:
4267
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_dali_group_membership, tvb, &offset, 2);
4268
0
    break;
4269
0
  }
4270
4271
0
  return offset;
4272
0
}
4273
4274
static unsigned
4275
dissect_etc_pd_auto_bind(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4276
0
{
4277
0
  switch(cc) {
4278
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4279
0
  case RDM_CC_SET_COMMAND:
4280
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_auto_bind, tvb, &offset, 1);
4281
0
    break;
4282
0
  }
4283
4284
0
  return offset;
4285
0
}
4286
4287
static unsigned
4288
dissect_etc_pd_delete_subdevice(unsigned offset)
4289
0
{
4290
  /* set-only, no data */
4291
0
  return offset;
4292
0
}
4293
4294
static unsigned
4295
dissect_etc_pd_packet_delay(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4296
0
{
4297
0
  switch(cc) {
4298
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4299
0
  case RDM_CC_SET_COMMAND:
4300
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_packet_delay, tvb, &offset, 1);
4301
0
    break;
4302
0
  }
4303
4304
0
  return offset;
4305
0
}
4306
4307
static unsigned
4308
dissect_etc_pd_has_enum_text(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc)
4309
0
{
4310
0
  switch(cc) {
4311
0
  case RDM_CC_GET_COMMAND:
4312
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_has_enum_text_pid, tvb, &offset, 2);
4313
0
    break;
4314
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4315
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_has_enum_text_pid, tvb, &offset, 2);
4316
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_has_enum_text_true_false, tvb, &offset, 1);
4317
0
    break;
4318
0
  }
4319
4320
0
  return offset;
4321
0
}
4322
4323
static unsigned
4324
dissect_etc_pd_get_enum_text(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint8_t len)
4325
0
{
4326
0
  switch(cc) {
4327
0
  case RDM_CC_GET_COMMAND:
4328
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_get_enum_text_pid, tvb, &offset, 2);
4329
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_get_enum_text_enum, tvb, &offset, 4);
4330
0
    break;
4331
0
  case RDM_CC_GET_COMMAND_RESPONSE:
4332
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_get_enum_text_pid, tvb, &offset, 2);
4333
0
    rdm_proto_tree_add_numeric_item(tree, hf_etc_pd_get_enum_text_enum, tvb, &offset, 4);
4334
0
    rdm_proto_tree_add_ascii_item(tree, hf_etc_pd_get_enum_text_description, tvb, &offset, len-6);
4335
0
    break;
4336
0
  }
4337
4338
0
  return offset;
4339
0
}
4340
4341
static unsigned
4342
dissect_etc_pd_prepare_for_software_download(unsigned offset)
4343
0
{
4344
  /* set-only, no data */
4345
0
  return offset;
4346
0
}
4347
4348
static unsigned
4349
dissect_etc_pid(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id, uint8_t pdl)
4350
0
{
4351
0
  switch(param_id) {
4352
0
  case ETC_PARAM_ID_LED_CURVE:
4353
0
    offset = dissect_etc_pd_led_curve(tvb, offset, tree, cc);
4354
0
    break;
4355
0
  case ETC_PARAM_ID_LED_CURVE_DESCRIPTION:
4356
0
    offset = dissect_etc_pd_led_curve_description(tvb, offset, tree, cc, pdl);
4357
0
    break;
4358
0
  case ETC_PARAM_ID_LED_STROBE:
4359
0
    offset = dissect_etc_pd_led_strobe(tvb, offset, tree, cc);
4360
0
    break;
4361
0
  case ETC_PARAM_ID_LED_OUTPUT_MODE:
4362
0
    offset = dissect_etc_pd_led_output_mode(tvb, offset, tree, cc);
4363
0
    break;
4364
0
  case ETC_PARAM_ID_LED_OUTPUT_MODE_DESCRIPTION:
4365
0
    offset = dissect_etc_pd_led_output_mode_description(tvb, offset, tree, cc, pdl);
4366
0
    break;
4367
0
  case ETC_PARAM_ID_LED_RED_SHIFT:
4368
0
    offset = dissect_etc_pd_led_red_shift(tvb, offset, tree, cc);
4369
0
    break;
4370
0
  case ETC_PARAM_ID_LED_WHITE_POINT:
4371
0
    offset = dissect_etc_pd_led_white_point(tvb, offset, tree, cc);
4372
0
    break;
4373
0
  case ETC_PARAM_ID_LED_WHITE_POINT_DESCRIPTION:
4374
0
    offset = dissect_etc_pd_led_white_point_description(tvb, offset, tree, cc, pdl);
4375
0
    break;
4376
0
  case ETC_PARAM_ID_LED_FREQUENCY:
4377
0
    offset = dissect_etc_pd_led_frequency(tvb, offset, tree, cc);
4378
0
    break;
4379
0
  case ETC_PARAM_ID_DMX_LOSS_BEHAVIOR:
4380
0
    offset = dissect_etc_pd_dmx_data_loss_behavior(tvb, offset, tree, cc);
4381
0
    break;
4382
0
  case ETC_PARAM_ID_DMX_LOSS_BEHAVIOR_DESCRIPTION:
4383
0
    offset = dissect_etc_pd_dmx_data_loss_behavior_description(tvb, offset, tree, cc, pdl);
4384
0
    break;
4385
0
  case ETC_PARAM_ID_LED_PLUS_SEVEN:
4386
0
    offset = dissect_etc_pd_led_plus_seven(tvb, offset, tree, cc);
4387
0
    break;
4388
0
  case ETC_PARAM_ID_BACKLIGHT_BRIGHTNESS:
4389
0
    offset = dissect_etc_pd_backlight_brightness(tvb, offset, tree, cc);
4390
0
    break;
4391
0
  case ETC_PARAM_ID_BACKLIGHT_TIMEOUT:
4392
0
    offset = dissect_etc_pd_backlight_timeout(tvb, offset, tree, cc);
4393
0
    break;
4394
0
  case ETC_PARAM_ID_STATUS_INDICATORS:
4395
0
    offset = dissect_etc_pd_status_indicators(tvb, offset, tree, cc);
4396
0
    break;
4397
0
  case ETC_PARAM_ID_RECALIBRATE_FIXTURE:
4398
0
    offset = dissect_etc_pd_recalibrate_fixture(offset);
4399
0
    break;
4400
0
  case ETC_PARAM_ID_OVERTEMPMODE:
4401
0
    offset = dissect_etc_pd_overtemp_mode(tvb, offset, tree, cc);
4402
0
    break;
4403
0
  case ETC_PARAM_ID_SIMPLESETUPMODE:
4404
0
    offset = dissect_etc_pd_simple_setup_mode(tvb, offset, tree, cc);
4405
0
    break;
4406
0
  case ETC_PARAM_ID_LED_STROBE_DESCRIPTION:
4407
0
    offset = dissect_etc_pd_led_strobe_description(tvb, offset, tree, cc, pdl);
4408
0
    break;
4409
0
  case ETC_PARAM_ID_LED_RED_SHIFT_DESCRIPTION:
4410
0
    offset = dissect_etc_pd_red_shift_description(tvb, offset, tree, cc, pdl);
4411
0
    break;
4412
0
  case ETC_PARAM_ID_LED_PLUS_SEVEN_DESCRIPTION:
4413
0
    offset = dissect_etc_pd_plus_seven_description(tvb, offset, tree, cc, pdl);
4414
0
    break;
4415
0
  case ETC_PARAM_ID_BACKLIGHT_TIMEOUT_DESCRIPTION:
4416
0
    offset = dissect_etc_pd_backlight_timeout_description(tvb, offset, tree, cc, pdl);
4417
0
    break;
4418
0
  case ETC_PARAM_ID_SIMPLESETUPMODE_DESCRIPTION:
4419
0
    offset = dissect_etc_pd_simple_setup_mode_description(tvb, offset, tree, cc, pdl);
4420
0
    break;
4421
0
  case ETC_PARAM_ID_OVERTEMPMODE_DESCRIPTION:
4422
0
    offset = dissect_etc_pd_overtemp_mode_description(tvb, offset, tree, cc, pdl);
4423
0
    break;
4424
0
  case ETC_PARAM_ID_LED_REQUESTED_XY:
4425
0
    offset = dissect_etc_pd_led_requested_xy(tvb, offset, tree, cc);
4426
0
    break;
4427
0
  case ETC_PARAM_ID_LED_CURRENT_XY:
4428
0
    offset = dissect_etc_pd_led_current_xy(tvb, offset, tree, cc);
4429
0
    break;
4430
0
  case ETC_PARAM_ID_LED_CURRENT_PWM:
4431
0
    offset = dissect_etc_pd_current_pwm(tvb, offset, tree, cc);
4432
0
    break;
4433
0
  case ETC_PARAM_ID_LED_TRISTIMULUS:
4434
0
    offset = dissect_etc_pd_tristimulus(tvb, offset, tree, cc);
4435
0
    break;
4436
0
  case ETC_PARAM_ID_LED_INFORMATION:
4437
0
    offset = dissect_etc_pd_led_information(tvb, offset, tree, cc);
4438
0
    break;
4439
0
  case ETC_PARAM_ID_PRESETCONFIG:
4440
0
    offset = dissect_etc_pd_preset_config(tvb, offset, tree, cc);
4441
0
    break;
4442
0
  case ETC_PARAM_ID_SEQUENCE_PLAYBACK:
4443
0
    offset = dissect_etc_pd_sequence_playback(tvb, offset, tree, cc);
4444
0
    break;
4445
0
  case ETC_PARAM_ID_SEQUENCE_CONFIG:
4446
0
    offset = dissect_etc_pd_sequence_config(tvb, offset, tree, cc);
4447
0
    break;
4448
0
  case ETC_PARAM_ID_LOW_POWER_TIMEOUT:
4449
0
    offset = dissect_etc_pd_low_power_timeout(tvb, offset, tree, cc);
4450
0
    break;
4451
0
  case ETC_PARAM_ID_LOW_POWER_TIMEOUT_DESCRIPTION:
4452
0
    offset = dissect_etc_pd_low_power_timeout_description(tvb, offset, tree, cc, pdl);
4453
0
    break;
4454
0
  case ETC_PARAM_ID_LED_ENUM_FREQUENCY:
4455
0
    offset = dissect_etc_pd_led_enum_frequency(tvb, offset, tree, cc);
4456
0
    break;
4457
0
  case ETC_PARAM_ID_LED_ENUM_FREQUENCY_DESCRIPTION:
4458
0
    offset = dissect_etc_pd_led_enum_frequency_description(tvb, offset, tree, cc, pdl);
4459
0
    break;
4460
0
  case ETC_PARAM_ID_RGBI_PRESETCONFIG:
4461
0
    offset = dissect_etc_pd_rgbi_preset_config(tvb, offset, tree, cc);
4462
0
    break;
4463
0
  case ETC_PARAM_ID_CCT_PRESETCONFIG:
4464
0
    offset = dissect_etc_pd_cct_preset_config(tvb, offset, tree, cc);
4465
0
    break;
4466
0
  case ETC_PARAM_ID_SUPPLEMENTARY_DEVICE_VERSION:
4467
0
    offset = dissect_etc_pd_supplementary_device_version(tvb, offset, tree, cc, pdl);
4468
0
    break;
4469
/* do not display
4470
  case ETC_PARAM_ID_START_UWB_DISCOVER:
4471
    break;
4472
  case ETC_PARAM_ID_START_UWB_MEASURE:
4473
    break;
4474
  case ETC_PARAM_ID_POSITION:
4475
    break;
4476
*/
4477
/* TODO: begin need descriptions */
4478
0
  case ETC_PARAM_ID_S4DIM_CALIBRATE:
4479
0
    break;
4480
0
  case ETC_PARAM_ID_S4DIM_CALIBRATE_DESCRIPTION:
4481
0
    break;
4482
0
  case ETC_PARAM_ID_S4DIM_TEST_MODE:
4483
0
    break;
4484
0
  case ETC_PARAM_ID_S4DIM_TEST_MODE_DESCRIPTION:
4485
0
    break;
4486
0
  case ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE:
4487
0
    break;
4488
0
  case ETC_PARAM_ID_S4DIM_MAX_OUTPUT_VOLTAGE_DESCRIPTION:
4489
0
    break;
4490
/* TODO: end need descriptions */
4491
0
  case ETC_PARAM_ID_POWER_COMMAND:
4492
0
    offset = dissect_etc_pd_power_command(tvb, offset, tree, cc);
4493
0
    break;
4494
0
  case ETC_PARAM_ID_POWER_COMMAND_DESCRIPTION:
4495
0
    offset = dissect_etc_pd_power_command_description(tvb, offset, tree, cc, pdl);
4496
0
    break;
4497
/* TODO: begin need descriptions */
4498
0
  case ETC_PARAM_ID_THRESHOLD_COMMAND:
4499
0
    break;
4500
0
  case ETC_PARAM_ID_TURNON_DELAY_COMMAND:
4501
0
    break;
4502
/* TODO: end need descriptions */
4503
0
  case ETC_PARAM_ID_SET_DALI_SHORTADDRESS:
4504
0
    offset = dissect_etc_pd_dali_short_address(tvb, offset, tree, cc);
4505
0
    break;
4506
0
  case ETC_PARAM_ID_DALI_GROUP_MEMBERSHIP:
4507
0
    offset = dissect_etc_pd_dali_group_membership(tvb, offset, tree, cc);
4508
0
    break;
4509
0
  case ETC_PARAM_ID_AUTOBIND:
4510
0
    offset = dissect_etc_pd_auto_bind(tvb, offset, tree, cc);
4511
0
    break;
4512
0
  case ETC_PARAM_ID_DELETE_SUBDEVICE:
4513
0
    offset = dissect_etc_pd_delete_subdevice(offset);
4514
0
    break;
4515
0
  case ETC_PARAM_ID_PACKET_DELAY:
4516
0
    offset = dissect_etc_pd_packet_delay(tvb, offset, tree, cc);
4517
0
    break;
4518
0
  case ETC_PARAM_ID_HAS_ENUM_TEXT:
4519
0
    offset = dissect_etc_pd_has_enum_text(tvb, offset, tree, cc);
4520
0
    break;
4521
0
  case ETC_PARAM_ID_GET_ENUM_TEXT:
4522
0
    offset = dissect_etc_pd_get_enum_text(tvb, offset, tree, cc, pdl);
4523
0
    break;
4524
0
  case ETC_PARAM_ID_PREPAREFORSOFTWAREDOWNLOAD:
4525
0
    offset = dissect_etc_pd_prepare_for_software_download(offset);
4526
0
    break;
4527
0
  default:
4528
0
    proto_tree_add_item(tree, hf_rdm_parameter_data_raw, tvb, offset, pdl, ENC_NA);
4529
0
    offset += pdl;
4530
0
  }
4531
4532
0
  return offset;
4533
0
}
4534
4535
static unsigned
4536
dissect_manufacturer_specific_pid(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id, uint8_t pdl, uint16_t device_manufacturer_id)
4537
0
{
4538
0
  switch(device_manufacturer_id) {
4539
0
  case RDM_MANUFACTURER_ID_ETC:
4540
0
    offset = dissect_etc_pid(tvb, offset, tree, cc, param_id, pdl);
4541
0
    break;
4542
0
  default:
4543
0
    proto_tree_add_item(tree, hf_rdm_parameter_data_raw, tvb, offset, pdl, ENC_NA);
4544
0
    offset += pdl;
4545
0
    break;
4546
0
  }
4547
4548
0
  return offset;
4549
0
}
4550
4551
static unsigned
4552
dissect_rdm_mdb_param_data(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id, uint8_t pdl, uint16_t device_manufacturer_id)
4553
0
{
4554
0
  if (param_id >= 0x8000) {
4555
0
    offset = dissect_manufacturer_specific_pid(tvb, offset, tree, cc, param_id, pdl, device_manufacturer_id);
4556
0
  } else {
4557
0
    switch(param_id) {
4558
0
    case RDM_PARAM_ID_SENSOR_VALUE:
4559
0
      offset = dissect_rdm_pd_sensor_value(tvb, offset, tree, cc, pdl);
4560
0
      break;
4561
4562
0
    case RDM_PARAM_ID_QUEUED_MESSAGE:
4563
0
      offset = dissect_rdm_pd_queued_message(tvb, offset, tree, cc, pdl);
4564
0
      break;
4565
4566
0
    case RDM_PARAM_ID_DMX_START_ADDRESS:
4567
0
      offset = dissect_rdm_pd_dmx_start_address(tvb, offset, tree, cc, pdl);
4568
0
      break;
4569
4570
0
    case RDM_PARAM_ID_DEVICE_INFO:
4571
0
      offset = dissect_rdm_pd_device_info(tvb, offset, tree, cc, pdl, device_manufacturer_id);
4572
0
      break;
4573
4574
0
    case RDM_PARAM_ID_DEVICE_MODEL_DESCRIPTION:
4575
0
      offset = dissect_rdm_pd_device_model_description(tvb, offset, tree, cc, pdl);
4576
0
      break;
4577
4578
0
    case RDM_PARAM_ID_DEVICE_LABEL:
4579
0
      offset = dissect_rdm_pd_device_label(tvb, offset, tree, cc, pdl);
4580
0
      break;
4581
4582
0
    case RDM_PARAM_ID_DEVICE_HOURS:
4583
0
      offset = dissect_rdm_pd_device_hours(tvb, offset, tree, cc, pdl);
4584
0
      break;
4585
4586
0
    case RDM_PARAM_ID_LAMP_HOURS:
4587
0
      offset = dissect_rdm_pd_lamp_hours(tvb, offset, tree, cc, pdl);
4588
0
      break;
4589
4590
0
    case RDM_PARAM_ID_LAMP_STRIKES:
4591
0
      offset = dissect_rdm_pd_lamp_strikes(tvb, offset, tree, cc, pdl);
4592
0
      break;
4593
4594
0
    case RDM_PARAM_ID_SENSOR_DEFINITION:
4595
0
      offset = dissect_rdm_pd_sensor_definition(tvb, offset, tree, cc, pdl);
4596
0
      break;
4597
4598
0
    case RDM_PARAM_ID_MANUFACTURER_LABEL:
4599
0
      offset = dissect_rdm_pd_manufacturer_label(tvb, offset, tree, cc, pdl);
4600
0
      break;
4601
4602
0
    case RDM_PARAM_ID_DISC_UNIQUE_BRANCH:
4603
0
      offset = dissect_rdm_pd_disc_unique_branch(tvb, offset, tree, cc, pdl);
4604
0
      break;
4605
4606
0
    case RDM_PARAM_ID_DISC_MUTE:
4607
0
      offset = dissect_rdm_pd_disc_mute(tvb, offset, tree, cc, pdl);
4608
0
      break;
4609
4610
0
    case RDM_PARAM_ID_DISC_UN_MUTE:
4611
0
      offset = dissect_rdm_pd_disc_un_mute(tvb, offset, tree, cc, pdl);
4612
0
      break;
4613
4614
0
    case RDM_PARAM_ID_PROXIED_DEVICES:
4615
0
      offset = dissect_rdm_pd_proxied_devices(tvb, offset, tree, cc, pdl);
4616
0
      break;
4617
4618
0
    case RDM_PARAM_ID_PROXIED_DEVICE_COUNT:
4619
0
      offset = dissect_rdm_pd_proxied_device_count(tvb, offset, tree, cc, pdl);
4620
0
      break;
4621
4622
0
    case RDM_PARAM_ID_COMMS_STATUS:
4623
0
      offset = dissect_rdm_pd_comms_status(tvb, offset, tree, cc, pdl);
4624
0
      break;
4625
4626
0
    case RDM_PARAM_ID_STATUS_MESSAGES:
4627
0
      offset = dissect_rdm_pd_status_messages(tvb, offset, tree, cc, pdl);
4628
0
      break;
4629
4630
0
    case RDM_PARAM_ID_STATUS_ID_DESCRIPTION:
4631
0
      offset = dissect_rdm_pd_status_id_description(tvb, offset, tree, cc, pdl);
4632
0
      break;
4633
4634
0
    case RDM_PARAM_ID_CLEAR_STATUS_ID:
4635
0
      offset = dissect_rdm_pd_clear_status_id(tvb, offset, tree, cc, pdl);
4636
0
      break;
4637
4638
0
    case RDM_PARAM_ID_SUB_DEVICE_STATUS_REPORT_THRESHOLD:
4639
0
      offset = dissect_rdm_pd_sub_device_status_report_threshold(tvb, offset, tree, cc, pdl);
4640
0
      break;
4641
4642
0
    case RDM_PARAM_ID_SUPPORTED_PARAMETERS:
4643
0
      offset = dissect_rdm_pd_supported_parameters(tvb, offset, tree, cc, pdl, device_manufacturer_id);
4644
0
      break;
4645
4646
0
    case RDM_PARAM_ID_PARAMETER_DESCRIPTION:
4647
0
      offset = dissect_rdm_pd_parameter_description(tvb, offset, tree, cc, pdl, device_manufacturer_id);
4648
0
      break;
4649
4650
0
    case RDM_PARAM_ID_PRODUCT_DETAIL_ID_LIST:
4651
0
      offset = dissect_rdm_pd_product_detail_id_list(tvb, offset, tree, cc, pdl);
4652
0
      break;
4653
4654
0
    case RDM_PARAM_ID_FACTORY_DEFAULTS:
4655
0
      offset = dissect_rdm_pd_factory_defaults(tvb, offset, tree, cc, pdl);
4656
0
      break;
4657
4658
0
    case RDM_PARAM_ID_LANGUAGE_CAPABILITIES:
4659
0
      offset = dissect_rdm_pd_language_capabilities(tvb, offset, tree, cc, pdl);
4660
0
      break;
4661
4662
0
    case RDM_PARAM_ID_LANGUAGE:
4663
0
      offset = dissect_rdm_pd_language(tvb, offset, tree, cc, pdl);
4664
0
      break;
4665
4666
0
    case RDM_PARAM_ID_SOFTWARE_VERSION_LABEL:
4667
0
      offset = dissect_rdm_pd_software_version_label(tvb, offset, tree, cc, pdl);
4668
0
      break;
4669
4670
0
    case RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_ID:
4671
0
      offset = dissect_rdm_pd_boot_software_version_id(tvb, offset, tree, cc, pdl);
4672
0
      break;
4673
4674
0
    case RDM_PARAM_ID_BOOT_SOFTWARE_VERSION_LABEL:
4675
0
      offset = dissect_rdm_pd_boot_software_version_label(tvb, offset, tree, cc, pdl);
4676
0
      break;
4677
4678
0
    case RDM_PARAM_ID_DMX_PERSONALITY:
4679
0
      offset = dissect_rdm_pd_dmx_personality(tvb, offset, tree, cc, pdl);
4680
0
      break;
4681
4682
0
    case RDM_PARAM_ID_DMX_PERSONALITY_DESCRIPTION:
4683
0
      offset = dissect_rdm_pd_dmx_personality_description(tvb, offset, tree, cc, pdl);
4684
0
      break;
4685
4686
0
    case RDM_PARAM_ID_SLOT_INFO:
4687
0
      offset = dissect_rdm_pd_slot_info(tvb, offset, tree, cc, pdl);
4688
0
      break;
4689
4690
0
    case RDM_PARAM_ID_SLOT_DESCRIPTION:
4691
0
      offset = dissect_rdm_pd_slot_description(tvb, offset, tree, cc, pdl);
4692
0
      break;
4693
4694
0
    case RDM_PARAM_ID_DEFAULT_SLOT_VALUE:
4695
0
      offset = dissect_rdm_pd_slot_value(tvb, offset, tree, cc, pdl);
4696
0
      break;
4697
4698
0
    case RDM_PARAM_ID_DMX_BLOCK_ADDRESS:
4699
0
      offset = dissect_rdm_pd_dmx_block_address(tvb, offset, tree, cc);
4700
0
      break;
4701
4702
0
    case RDM_PARAM_ID_DMX_FAIL_MODE:
4703
0
      offset = dissect_rdm_pd_dmx_fail_mode(tvb, offset, tree, cc);
4704
0
      break;
4705
4706
0
    case RDM_PARAM_ID_DMX_STARTUP_MODE:
4707
0
      offset = dissect_rdm_pd_dmx_startup_mode(tvb, offset, tree, cc);
4708
0
      break;
4709
4710
0
    case RDM_PARAM_ID_RECORD_SENSORS:
4711
0
      offset = dissect_rdm_pd_record_sensors(tvb, offset, tree, cc, pdl);
4712
0
      break;
4713
4714
0
    case RDM_PARAM_ID_DIMMER_INFO:
4715
0
      offset = dissect_rdm_pd_dimmer_info(tvb, offset, tree, cc);
4716
0
      break;
4717
4718
0
    case RDM_PARAM_ID_MINIMUM_LEVEL:
4719
0
      offset = dissect_rdm_pd_minimum_level(tvb, offset, tree, cc);
4720
0
      break;
4721
4722
0
    case RDM_PARAM_ID_MAXIMUM_LEVEL:
4723
0
      offset = dissect_rdm_pd_maximum_level(tvb, offset, tree, cc);
4724
0
      break;
4725
4726
0
    case RDM_PARAM_ID_CURVE:
4727
0
      offset = dissect_rdm_pd_curve(tvb, offset, tree, cc);
4728
0
      break;
4729
4730
0
    case RDM_PARAM_ID_CURVE_DESCRIPTION:
4731
0
      offset = dissect_rdm_pd_curve_description(tvb, offset, tree, cc, pdl);
4732
0
      break;
4733
4734
0
    case RDM_PARAM_ID_OUTPUT_RESPONSE_TIME:
4735
0
      offset = dissect_rdm_pd_output_response_time(tvb, offset, tree, cc);
4736
0
      break;
4737
4738
0
    case RDM_PARAM_ID_OUTPUT_RESPONSE_TIME_DESCRIPTION:
4739
0
      offset = dissect_rdm_pd_output_response_time_description(tvb, offset, tree, cc, pdl);
4740
0
      break;
4741
4742
0
    case RDM_PARAM_ID_MODULATION_FREQUENCY:
4743
0
      offset = dissect_rdm_pd_modulation_frequency(tvb, offset, tree, cc);
4744
0
      break;
4745
4746
0
    case RDM_PARAM_ID_MODULATION_FREQUENCY_DESCRIPTION:
4747
0
      offset = dissect_rdm_pd_modulation_frequency_description(tvb, offset, tree, cc, pdl);
4748
0
      break;
4749
4750
0
    case RDM_PARAM_ID_LAMP_STATE:
4751
0
      offset = dissect_rdm_pd_lamp_state(tvb, offset, tree, cc, pdl);
4752
0
      break;
4753
4754
0
    case RDM_PARAM_ID_LAMP_ON_MODE:
4755
0
      offset = dissect_rdm_pd_lamp_on_mode(tvb, offset, tree, cc, pdl);
4756
0
      break;
4757
4758
0
    case RDM_PARAM_ID_DEVICE_POWER_CYCLES:
4759
0
      offset = dissect_rdm_pd_device_power_cycles(tvb, offset, tree, cc, pdl);
4760
0
      break;
4761
4762
0
    case RDM_PARAM_ID_BURN_IN:
4763
0
      offset = dissect_rdm_pd_burn_in(tvb, offset, tree, cc);
4764
0
      break;
4765
4766
0
    case RDM_PARAM_ID_DISPLAY_INVERT:
4767
0
      offset = dissect_rdm_pd_display_invert(tvb, offset, tree, cc, pdl);
4768
0
      break;
4769
4770
0
    case RDM_PARAM_ID_DISPLAY_LEVEL:
4771
0
      offset = dissect_rdm_pd_display_level(tvb, offset, tree, cc, pdl);
4772
0
      break;
4773
4774
0
    case RDM_PARAM_ID_PAN_INVERT:
4775
0
      offset = dissect_rdm_pd_pan_invert(tvb, offset, tree, cc, pdl);
4776
0
      break;
4777
4778
0
    case RDM_PARAM_ID_TILT_INVERT:
4779
0
      offset = dissect_rdm_pd_tilt_invert(tvb, offset, tree, cc, pdl);
4780
0
      break;
4781
4782
0
    case RDM_PARAM_ID_PAN_TILT_SWAP:
4783
0
      offset = dissect_rdm_pd_pan_tilt_swap(tvb, offset, tree, cc, pdl);
4784
0
      break;
4785
4786
0
    case RDM_PARAM_ID_REAL_TIME_CLOCK:
4787
0
      offset = dissect_rdm_pd_real_time_clock(tvb, offset, tree, cc, pdl);
4788
0
      break;
4789
4790
0
    case RDM_PARAM_ID_LOCK_PIN:
4791
0
      offset = dissect_rdm_pd_lock_pin(tvb, offset, tree, cc);
4792
0
      break;
4793
4794
0
    case RDM_PARAM_ID_LOCK_STATE:
4795
0
      offset = dissect_rdm_pd_lock_state(tvb, offset, tree, cc);
4796
0
      break;
4797
4798
0
    case RDM_PARAM_ID_LOCK_STATE_DESCRIPTION:
4799
0
      offset = dissect_rdm_pd_lock_description(tvb, offset, tree, cc, pdl);
4800
0
      break;
4801
4802
0
    case RDM_PARAM_ID_LIST_INTERFACES:
4803
0
      offset = dissect_rdm_pd_list_interfaces(tvb, offset, tree, cc, pdl);
4804
0
      break;
4805
4806
0
    case RDM_PARAM_ID_INTERFACE_LABEL:
4807
0
      offset = dissect_rdm_pd_interface_label(tvb, offset, tree, cc, pdl);
4808
0
      break;
4809
4810
0
    case RDM_PARAM_ID_INTERFACE_HARDWARE_ADDRESS_TYPE1:
4811
0
      offset = dissect_rdm_pd_hardware_address_type1(tvb, offset, tree, cc);
4812
0
      break;
4813
4814
0
    case RDM_PARAM_ID_IPV4_DHCP_MODE:
4815
0
      offset = dissect_rdm_pd_dhcp_mode(tvb, offset, tree, cc);
4816
0
      break;
4817
4818
0
    case RDM_PARAM_ID_IPV4_ZEROCONF_MODE:
4819
0
      offset = dissect_rdm_pd_zeroconf_mode(tvb, offset, tree, cc);
4820
0
      break;
4821
4822
0
    case RDM_PARAM_ID_IPV4_CURRENT_ADDRESS:
4823
0
      offset = dissect_rdm_pd_current_address(tvb, offset, tree, cc);
4824
0
      break;
4825
4826
0
    case RDM_PARAM_ID_IPV4_STATIC_ADDRESS:
4827
0
      offset = dissect_rdm_pd_static_address(tvb, offset, tree, cc);
4828
0
      break;
4829
4830
0
    case RDM_PARAM_ID_INTERFACE_RENEW_DHCP:
4831
0
      offset = dissect_rdm_pd_interface_renew_dhcp(tvb, offset, tree, cc);
4832
0
      break;
4833
4834
0
    case RDM_PARAM_ID_INTERFACE_RELEASE_DHCP:
4835
0
      offset = dissect_rdm_pd_interface_release_dhcp(tvb, offset, tree, cc);
4836
0
      break;
4837
4838
0
    case RDM_PARAM_ID_INTERFACE_APPLY_CONFIGURATION:
4839
0
      offset = dissect_rdm_pd_interface_apply_configuration(tvb, offset, tree, cc);
4840
0
      break;
4841
4842
0
    case RDM_PARAM_ID_IPV4_DEFAULT_ROUTE:
4843
0
      offset = dissect_rdm_pd_ipv4_default_route(tvb, offset, tree, cc);
4844
0
      break;
4845
4846
0
    case RDM_PARAM_ID_DNS_IPV4_NAME_SERVER:
4847
0
      offset = dissect_rdm_pd_dns_ipv4_name_server(tvb, offset, tree, cc);
4848
0
      break;
4849
4850
0
    case RDM_PARAM_ID_DNS_HOSTNAME:
4851
0
      offset = dissect_rdm_pd_dns_hostname(tvb, offset, tree, cc, pdl);
4852
0
      break;
4853
4854
0
    case RDM_PARAM_ID_DNS_DOMAIN_NAME:
4855
0
      offset = dissect_rdm_pd_dns_domain_name(tvb, offset, tree, cc, pdl);
4856
0
      break;
4857
4858
0
    case RDM_PARAM_ID_IDENTIFY_DEVICE:
4859
0
      offset = dissect_rdm_pd_identify_device(tvb, offset, tree, cc, pdl);
4860
0
      break;
4861
4862
0
    case RDM_PARAM_ID_RESET_DEVICE:
4863
0
      offset = dissect_rdm_pd_reset_device(tvb, offset, tree, cc, pdl);
4864
0
      break;
4865
4866
0
    case RDM_PARAM_ID_POWER_STATE:
4867
0
      offset = dissect_rdm_pd_power_state(tvb, offset, tree, cc, pdl);
4868
0
      break;
4869
4870
0
    case RDM_PARAM_ID_PERFORM_SELFTEST:
4871
0
      offset = dissect_rdm_pd_perform_selftest(tvb, offset, tree, cc, pdl);
4872
0
      break;
4873
4874
0
    case RDM_PARAM_ID_SELF_TEST_DESCRIPTION:
4875
0
      offset = dissect_rdm_pd_self_test_description(tvb, offset, tree, cc, pdl);
4876
0
      break;
4877
4878
0
    case RDM_PARAM_ID_CAPTURE_PRESET:
4879
0
      offset = dissect_rdm_pd_capture_preset(tvb, offset, tree, cc, pdl);
4880
0
      break;
4881
4882
0
    case RDM_PARAM_ID_PRESET_PLAYBACK:
4883
0
      offset = dissect_rdm_pd_preset_playback(tvb, offset, tree, cc, pdl);
4884
0
      break;
4885
4886
0
    case RDM_PARAM_ID_IDENTIFY_MODE:
4887
0
      offset = dissect_rdm_pd_identify_mode(tvb, offset, tree, cc);
4888
0
      break;
4889
4890
0
    case RDM_PARAM_ID_PRESET_INFO:
4891
0
      offset = dissect_rdm_pd_preset_info(tvb, offset, tree, cc);
4892
0
      break;
4893
4894
0
    case RDM_PARAM_ID_PRESET_STATUS:
4895
0
      offset = dissect_rdm_pd_preset_status(tvb, offset, tree, cc);
4896
0
      break;
4897
4898
0
    case RDM_PARAM_ID_PRESET_MERGEMODE:
4899
0
      offset = dissect_rdm_pd_preset_mergemode(tvb, offset, tree, cc);
4900
0
      break;
4901
4902
0
    case RDM_PARAM_ID_POWER_ON_SELF_TEST:
4903
0
      offset = dissect_rdm_pd_power_on_self_test(tvb, offset, tree, cc);
4904
0
      break;
4905
4906
0
    case RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY:
4907
0
      offset = dissect_rdm_pd_background_queued_status_policy(tvb, offset, tree, cc);
4908
0
      break;
4909
4910
0
    case RDM_PARAM_ID_BACKGROUND_QUEUED_STATUS_POLICY_DESCRIPTION:
4911
0
      offset = dissect_rdm_pd_background_queued_status_policy_description(tvb, offset, tree, cc, pdl);
4912
0
      break;
4913
4914
0
    case RDM_PARAM_ID_ENDPOINT_LIST:
4915
0
      offset = dissect_rdm_pd_endpoint_list(tvb, offset, tree, cc, pdl);
4916
0
      break;
4917
4918
0
    case RDM_PARAM_ID_SEARCH_DOMAIN:
4919
0
      offset = dissect_rdm_pd_search_domain(tvb, offset, tree, cc, pdl);
4920
0
      break;
4921
4922
0
    case RDM_PARAM_ID_ENDPOINT_TO_UNIVERSE:
4923
0
      offset = dissect_rdm_pd_endpoint_to_universe(tvb, offset, tree, cc);
4924
0
      break;
4925
4926
0
    case RDM_PARAM_ID_RDM_TRAFFIC_ENABLE:
4927
0
      offset = dissect_rdm_pd_rdm_traffic_enable(tvb, offset, tree, cc);
4928
0
      break;
4929
4930
0
    case RDM_PARAM_ID_ENDPOINT_MODE:
4931
0
      offset = dissect_rdm_pd_endpoint_mode(tvb, offset, tree, cc);
4932
0
      break;
4933
4934
0
    case RDM_PARAM_ID_ENDPOINT_LABEL:
4935
0
      offset = dissect_rdm_pd_endpoint_label(tvb, offset, tree, cc, pdl);
4936
0
      break;
4937
4938
0
    case RDM_PARAM_ID_DISCOVERY_STATE:
4939
0
      offset = dissect_rdm_pd_discovery_state(tvb, offset, tree, cc);
4940
0
      break;
4941
4942
0
    case RDM_PARAM_ID_ENDPOINT_TIMING:
4943
0
      offset = dissect_rdm_pd_endpoint_timing(tvb, offset, tree, cc);
4944
0
      break;
4945
4946
0
    case RDM_PARAM_ID_ENDPOINT_TIMING_DESCRIPTION:
4947
0
      offset = dissect_rdm_pd_endpoint_timing_description(tvb, offset, tree, cc, pdl);
4948
0
      break;
4949
4950
0
    case RDM_PARAM_ID_BINDING_CONTROL_FIELDS:
4951
0
      offset = dissect_rdm_pd_binding_control_fields(tvb, offset, tree, cc);
4952
0
      break;
4953
4954
0
    case RDM_PARAM_ID_IDENTIFY_ENDPOINT:
4955
0
      offset = dissect_rdm_pd_identify_endpoint(tvb, offset, tree, cc);
4956
0
      break;
4957
4958
0
    case RDM_PARAM_ID_BACKGROUND_DISCOVERY:
4959
0
      offset = dissect_rdm_pd_background_discovery(tvb, offset, tree, cc);
4960
0
      break;
4961
4962
0
    case RDM_PARAM_ID_ENDPOINT_RESPONDER_LIST_CHANGE:
4963
0
      offset = dissect_rdm_pd_endpoint_responder_list_change(tvb, offset, tree, cc);
4964
0
      break;
4965
4966
0
    case RDM_PARAM_ID_ENDPOINT_RESPONDERS:
4967
0
      offset = dissect_rdm_pd_endpoint_responders(tvb, offset, tree, cc, pdl);
4968
0
      break;
4969
4970
0
    case RDM_PARAM_ID_TCP_COMMS_STATUS:
4971
0
      offset = dissect_rdm_pd_tcp_comms_status(tvb, offset, tree, cc, pdl);
4972
0
      break;
4973
4974
0
    case RDM_PARAM_ID_ENDPOINT_LIST_CHANGE:
4975
0
      offset = dissect_rdm_pd_endpoint_list_change(tvb, offset, tree, cc);
4976
0
      break;
4977
4978
0
    case RDM_PARAM_ID_COMPONENT_SCOPE:
4979
0
      offset = dissect_rdm_pd_component_scope(tvb, offset, tree, cc);
4980
0
      break;
4981
4982
0
    case RDM_PARAM_ID_BROKER_STATUS:
4983
0
      offset = dissect_rdm_pd_broker_status(tvb, offset, tree, cc);
4984
0
      break;
4985
4986
0
    default:
4987
0
      proto_tree_add_item(tree, hf_rdm_parameter_data_raw, tvb,
4988
0
        offset, pdl, ENC_NA);
4989
0
      offset += pdl;
4990
0
      break;
4991
0
    }
4992
0
  }
4993
4994
0
  return offset;
4995
0
}
4996
4997
static unsigned
4998
dissect_rdm_pd_ack_overflow(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id _U_, uint8_t pdl)
4999
0
{
5000
0
  if (pdl > 0) {
5001
0
    switch(cc) {
5002
0
    case RDM_CC_GET_COMMAND_RESPONSE:
5003
0
    case RDM_CC_SET_COMMAND_RESPONSE:
5004
0
      proto_tree_add_item(tree, hf_rdm_pd_ack_overflow_raw_data, tvb, offset, pdl, ENC_NA);
5005
0
      offset += pdl;
5006
0
      break;
5007
0
    }
5008
0
  }
5009
5010
0
  return offset;
5011
0
}
5012
5013
static unsigned
5014
dissect_rdm_pd_ack_timer(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id _U_, uint8_t pdl)
5015
0
{
5016
0
  if (pdl == 2) {
5017
0
    switch(cc) {
5018
0
    case RDM_CC_GET_COMMAND_RESPONSE:
5019
0
    case RDM_CC_SET_COMMAND_RESPONSE:
5020
0
      proto_tree_add_item(tree, hf_rdm_pd_ack_timer_estimated_response_time, tvb,
5021
0
        offset, 2, ENC_BIG_ENDIAN);
5022
0
      offset += 2;
5023
0
      break;
5024
0
    }
5025
0
  }
5026
0
  return offset;
5027
0
}
5028
5029
static unsigned
5030
dissect_rdm_pd_nack_reason(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint8_t cc, uint16_t param_id _U_, uint8_t pdl _U_)
5031
0
{
5032
0
  if (pdl == 2) {
5033
0
    switch(cc) {
5034
0
    case RDM_CC_GET_COMMAND_RESPONSE:
5035
0
    case RDM_CC_SET_COMMAND_RESPONSE:
5036
0
      proto_tree_add_item(tree, hf_rdm_pd_nack_reason_code, tvb,
5037
0
        offset, 2, ENC_BIG_ENDIAN);
5038
0
      offset += 2;
5039
0
      break;
5040
0
    }
5041
0
  }
5042
5043
0
  return offset;
5044
0
}
5045
5046
static uint8_t
5047
is_response(uint8_t command_class)
5048
0
{
5049
0
  if ((command_class & RDM_CC_COMMAND_RESPONSE_FLAG) == RDM_CC_COMMAND_RESPONSE_FLAG) {
5050
0
    return 1;
5051
0
  }
5052
0
  return 0;
5053
0
}
5054
5055
static void
5056
add_pid_to_tree(uint16_t param_id, proto_tree *mdb_tree, tvbuff_t *tvb, unsigned offset, uint16_t device_manufacturer_id)
5057
0
{
5058
0
  if (param_id < 0x8000) {
5059
0
    proto_tree_add_item(mdb_tree, hf_rdm_parameter_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5060
0
  } else {
5061
0
    switch(device_manufacturer_id) {
5062
0
    case RDM_MANUFACTURER_ID_ETC:
5063
0
      proto_tree_add_item(mdb_tree, hf_etc_parameter_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5064
0
      break;
5065
0
    default:
5066
0
      proto_tree_add_item(mdb_tree, hf_rdm_parameter_id, tvb, offset, 2, ENC_BIG_ENDIAN);
5067
0
      break;
5068
0
    }
5069
0
  }
5070
0
}
5071
5072
static unsigned
5073
dissect_rdm_mdb(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint16_t device_manufacturer_id)
5074
0
{
5075
0
  uint8_t     cc;
5076
0
  uint8_t     rt;
5077
0
  uint16_t     param_id;
5078
0
  uint8_t     parameter_data_length;
5079
0
  proto_tree *hi,*si, *mdb_tree;
5080
5081
0
  rt = tvb_get_uint8(tvb, offset);
5082
0
  cc = tvb_get_uint8(tvb, offset + 4);
5083
5084
0
  if (is_response(cc)) {
5085
0
    proto_tree_add_item(tree, hf_rdm_response_type, tvb,
5086
0
        offset, 1, ENC_BIG_ENDIAN);
5087
0
          offset += 1;
5088
5089
0
  } else {
5090
0
    proto_tree_add_item(tree, hf_rdm_port_id, tvb,
5091
0
                    offset, 1, ENC_BIG_ENDIAN);
5092
0
          offset += 1;
5093
0
  }
5094
5095
0
  proto_tree_add_item(tree, hf_rdm_message_count, tvb,
5096
0
      offset, 1, ENC_BIG_ENDIAN);
5097
0
  offset += 1;
5098
5099
0
  proto_tree_add_item(tree, hf_rdm_sub_device, tvb,
5100
0
      offset, 2, ENC_BIG_ENDIAN);
5101
0
  offset += 2;
5102
5103
0
  hi = proto_tree_add_item(tree, hf_rdm_mdb, tvb,
5104
0
      offset, -1, ENC_NA);
5105
0
  mdb_tree = proto_item_add_subtree(hi,ett_rdm);
5106
5107
0
  proto_tree_add_item(mdb_tree, hf_rdm_command_class, tvb,
5108
0
      offset, 1, ENC_BIG_ENDIAN);
5109
0
  offset += 1;
5110
5111
0
  param_id = tvb_get_ntohs(tvb, offset);
5112
0
  add_pid_to_tree(param_id, mdb_tree, tvb, offset, device_manufacturer_id);
5113
0
  offset += 2;
5114
5115
0
  parameter_data_length = tvb_get_uint8(tvb, offset);
5116
0
  proto_tree_add_item(mdb_tree, hf_rdm_parameter_data_length, tvb,
5117
0
      offset, 1, ENC_BIG_ENDIAN);
5118
0
  offset += 1;
5119
0
  proto_item_set_len( mdb_tree,  parameter_data_length + 4);
5120
5121
0
  if (parameter_data_length > 0) {
5122
5123
0
    hi = proto_tree_add_item(mdb_tree, hf_rdm_parameter_data, tvb,
5124
0
        offset, parameter_data_length, ENC_NA);
5125
0
    si = proto_item_add_subtree(hi,ett_rdm);
5126
5127
0
    if (is_response(cc)) {
5128
5129
0
      switch(rt) {
5130
0
      case RDM_RESPONSE_TYPE_ACK:
5131
0
        offset = dissect_rdm_mdb_param_data(tvb, offset, si, cc, param_id, parameter_data_length, device_manufacturer_id);
5132
0
        break;
5133
0
      case RDM_RESPONSE_TYPE_ACK_TIMER:
5134
0
        offset = dissect_rdm_pd_ack_timer(tvb, offset, si, cc, param_id, parameter_data_length);
5135
0
        break;
5136
0
      case RDM_RESPONSE_TYPE_NACK_REASON:
5137
0
        offset = dissect_rdm_pd_nack_reason(tvb, offset, si, cc, param_id, parameter_data_length);
5138
0
        break;
5139
0
      case RDM_RESPONSE_TYPE_ACK_OVERFLOW:
5140
0
        offset = dissect_rdm_pd_ack_overflow(tvb, offset, si, cc, param_id, parameter_data_length);
5141
0
        break;
5142
0
      }
5143
5144
0
    } else {
5145
0
      offset = dissect_rdm_mdb_param_data(tvb, offset, si, cc, param_id, parameter_data_length, device_manufacturer_id);
5146
0
    }
5147
0
  }
5148
5149
0
  return offset;
5150
0
}
5151
5152
static uint16_t
5153
get_device_manufacturer_id(uint8_t command_class, uint16_t source_manufacturer_id, uint16_t destination_manufacturer_id)
5154
0
{
5155
0
  if ((command_class == RDM_CC_GET_COMMAND) ||
5156
0
      (command_class == RDM_CC_SET_COMMAND)) {
5157
0
    return destination_manufacturer_id;
5158
0
  }
5159
0
  if ((command_class == RDM_CC_GET_COMMAND_RESPONSE) ||
5160
0
      (command_class == RDM_CC_SET_COMMAND_RESPONSE)) {
5161
0
    return source_manufacturer_id;
5162
0
  }
5163
0
  return 0;
5164
0
}
5165
5166
static int
5167
dissect_rdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
5168
0
{
5169
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "RDM");
5170
0
  col_clear(pinfo->cinfo, COL_INFO);
5171
5172
0
  if (tree) {
5173
0
    int       padding_size;
5174
0
    uint8_t   command_class;
5175
0
    uint16_t  destination_manufacturer_id;
5176
0
    uint16_t  source_manufacturer_id;
5177
0
    uint16_t  device_manufacturer_id;
5178
0
    uint32_t  destination_device_id;
5179
0
    uint32_t  source_device_id;
5180
0
    proto_item* uid_item;
5181
0
    proto_tree* uid_tree;
5182
0
    unsigned  message_length, offset = 0;
5183
5184
0
    proto_tree *ti = proto_tree_add_item(tree, proto_rdm, tvb,
5185
0
        offset, -1, ENC_NA);
5186
0
    proto_tree *rdm_tree = proto_item_add_subtree(ti, ett_rdm);
5187
5188
0
    proto_tree_add_item(rdm_tree, hf_rdm_sub_start_code, tvb,
5189
0
        offset, 1, ENC_BIG_ENDIAN);
5190
0
    offset += 1;
5191
5192
0
    message_length = tvb_get_uint8(tvb, offset);
5193
0
    proto_tree_add_item(rdm_tree, hf_rdm_message_length, tvb,
5194
0
        offset, 1, ENC_BIG_ENDIAN);
5195
0
    offset += 1;
5196
5197
0
    destination_manufacturer_id = tvb_get_ntohs(tvb, offset);
5198
0
    destination_device_id = tvb_get_ntohl(tvb, offset + 2);
5199
0
    proto_item_append_text(ti, ", Dst UID: %04x:%08x",
5200
0
        destination_manufacturer_id, destination_device_id);
5201
0
    uid_item = proto_tree_add_item(rdm_tree, hf_rdm_dest_uid, tvb,
5202
0
        offset, 6, ENC_NA);
5203
0
    uid_tree = proto_item_add_subtree(uid_item, ett_rdm_uid);
5204
0
    proto_tree_add_item(uid_tree, hf_rdm_dest_uid_manf, tvb,
5205
0
        offset, 2, ENC_BIG_ENDIAN);
5206
0
    proto_tree_add_item(uid_tree, hf_rdm_dest_uid_dev, tvb,
5207
0
        offset+2, 4, ENC_BIG_ENDIAN);
5208
0
    offset += 6;
5209
5210
0
    source_manufacturer_id = tvb_get_ntohs(tvb, offset);
5211
0
    source_device_id = tvb_get_ntohl(tvb, offset + 2);
5212
0
    proto_item_append_text(ti, ", Src UID: %04x:%08x",
5213
0
        source_manufacturer_id, source_device_id);
5214
0
    uid_item = proto_tree_add_item(rdm_tree, hf_rdm_src_uid, tvb,
5215
0
        offset, 6, ENC_NA);
5216
0
    uid_tree = proto_item_add_subtree(uid_item, ett_rdm_uid);
5217
0
    proto_tree_add_item(uid_tree, hf_rdm_src_uid_manf, tvb,
5218
0
        offset, 2, ENC_BIG_ENDIAN);
5219
0
    proto_tree_add_item(uid_tree, hf_rdm_src_uid_dev, tvb,
5220
0
        offset+2, 4, ENC_BIG_ENDIAN);
5221
0
    offset += 6;
5222
5223
0
    proto_tree_add_item(rdm_tree, hf_rdm_transaction_number, tvb,
5224
0
        offset, 1, ENC_BIG_ENDIAN);
5225
0
    offset += 1;
5226
5227
0
    command_class = tvb_get_uint8(tvb, offset + 4);
5228
0
    device_manufacturer_id = get_device_manufacturer_id(command_class, source_manufacturer_id, destination_manufacturer_id);
5229
0
    offset = dissect_rdm_mdb(tvb, offset, rdm_tree, device_manufacturer_id);
5230
5231
0
    padding_size = offset - (message_length - 1);
5232
0
    if (padding_size > 0) {
5233
0
      proto_tree_add_item(rdm_tree, hf_rdm_intron, tvb,
5234
0
          offset, padding_size, ENC_NA);
5235
0
      offset += padding_size;
5236
0
    }
5237
5238
0
    proto_tree_add_checksum(rdm_tree, tvb, offset, hf_rdm_checksum, hf_rdm_checksum_status, &ei_rdm_checksum, pinfo, rdm_checksum(tvb, offset),
5239
0
              ENC_BIG_ENDIAN, PROTO_CHECKSUM_VERIFY);
5240
0
    offset += 2;
5241
5242
0
    if (offset < tvb_reported_length(tvb)) {
5243
0
      proto_tree_add_item(rdm_tree, hf_rdm_trailer, tvb,
5244
0
          offset, -1, ENC_NA);
5245
0
    }
5246
0
  }
5247
0
  return tvb_captured_length(tvb);
5248
0
}
5249
5250
void
5251
proto_register_rdm(void)
5252
14
{
5253
14
  static hf_register_info hf[] = {
5254
14
    { &hf_rdm_sub_start_code,
5255
14
      { "Sub-start code", "rdm.ssc",
5256
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5257
14
        NULL, HFILL }},
5258
5259
14
    { &hf_rdm_message_length,
5260
14
      { "Message length", "rdm.len",
5261
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5262
14
        NULL, HFILL }},
5263
5264
14
    { &hf_rdm_dest_uid,
5265
14
      { "Destination UID", "rdm.dst",
5266
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5267
14
        NULL, HFILL }},
5268
5269
14
    { &hf_rdm_dest_uid_manf,
5270
14
      { "Manufacturer ID", "rdm.dst.manf",
5271
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5272
14
        NULL, HFILL }},
5273
5274
14
    { &hf_rdm_dest_uid_dev,
5275
14
      { "Device ID", "rdm.dst.dev",
5276
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5277
14
        NULL, HFILL }},
5278
5279
14
    { &hf_rdm_src_uid,
5280
14
      { "Source UID", "rdm.src",
5281
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5282
14
        NULL, HFILL }},
5283
5284
14
    { &hf_rdm_src_uid_manf,
5285
14
      { "Manufacturer ID", "rdm.src.manf",
5286
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5287
14
        NULL, HFILL }},
5288
5289
14
    { &hf_rdm_src_uid_dev,
5290
14
      { "Device ID", "rdm.src.dev",
5291
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5292
14
        NULL, HFILL }},
5293
5294
14
    { &hf_rdm_transaction_number,
5295
14
      { "Transaction number", "rdm.tn",
5296
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5297
14
        NULL, HFILL }},
5298
5299
14
    { &hf_rdm_port_id,
5300
14
      { "Port ID", "rdm.port_id",
5301
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5302
14
        NULL, HFILL }},
5303
5304
14
    { &hf_rdm_response_type,
5305
14
      { "Response type", "rdm.rt",
5306
14
        FT_UINT8, BASE_HEX, VALS(rdm_rt_vals), 0x0,
5307
14
        NULL, HFILL }},
5308
5309
14
    { &hf_rdm_message_count,
5310
14
      { "Message count", "rdm.mc",
5311
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5312
14
        NULL, HFILL }},
5313
5314
14
    { &hf_rdm_sub_device,
5315
14
      { "Sub-device", "rdm.sd",
5316
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5317
14
        NULL, HFILL }},
5318
5319
14
    { &hf_rdm_mdb,
5320
14
      { "Message Data Block", "rdm.mdb",
5321
14
        FT_NONE, BASE_NONE, NULL, 0x0,
5322
14
        NULL, HFILL }},
5323
5324
14
    { &hf_rdm_command_class,
5325
14
      { "Command class", "rdm.cc",
5326
14
        FT_UINT8, BASE_HEX, VALS(rdm_cc_vals), 0x0,
5327
14
        NULL, HFILL }},
5328
5329
14
    { &hf_rdm_parameter_id,
5330
14
      { "Parameter ID", "rdm.pid",
5331
14
        FT_UINT16, BASE_HEX | BASE_EXT_STRING, &rdm_param_id_vals_ext, 0x0,
5332
14
        NULL, HFILL }},
5333
5334
14
    { &hf_rdm_parameter_data_length,
5335
14
      { "Parameter data length", "rdm.pdl",
5336
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5337
14
        NULL, HFILL }},
5338
5339
14
    { &hf_rdm_parameter_data,
5340
14
      { "Parameter data", "rdm.pd",
5341
14
        FT_NONE, BASE_NONE, NULL, 0x0,
5342
14
        NULL, HFILL }},
5343
5344
14
    { &hf_rdm_parameter_data_raw,
5345
14
      { "Raw Data", "rdm.pd.raw",
5346
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5347
14
        NULL, HFILL }},
5348
5349
14
    { &hf_rdm_intron,
5350
14
      { "Intron", "rdm.intron",
5351
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5352
14
        NULL, HFILL }},
5353
5354
14
    { &hf_rdm_checksum,
5355
14
      { "Checksum", "rdm.checksum",
5356
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5357
14
        NULL, HFILL }},
5358
5359
14
    { &hf_rdm_checksum_status,
5360
14
      { "Checksum Status", "rdm.checksum.status",
5361
14
        FT_UINT8, BASE_NONE, VALS(proto_checksum_vals), 0x0,
5362
14
        NULL, HFILL }},
5363
5364
14
    { &hf_rdm_trailer,
5365
14
      { "Trailer", "rdm.trailer",
5366
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5367
14
        NULL, HFILL }},
5368
5369
14
    { &hf_rdm_pd_ack_overflow_raw_data,
5370
14
      { "Raw Data", "rdm.pd.ack_overflow.raw_data",
5371
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5372
14
        NULL, HFILL }},
5373
5374
14
    { &hf_rdm_pd_ack_timer_estimated_response_time,
5375
14
      { "Estimated Response Time", "rdm.pd.ack_timer.estimated_response_time",
5376
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5377
14
        NULL, HFILL }},
5378
5379
14
    { &hf_rdm_pd_nack_reason_code,
5380
14
      { "NACK Reason Code", "rdm.pd.nack_reason.code",
5381
14
        FT_UINT16, BASE_HEX, VALS(rdm_nr_vals), 0x0,
5382
14
        NULL, HFILL }},
5383
5384
14
    { &hf_rdm_pd_queued_message_status,
5385
14
      { "Status", "rdm.pd.queued_message.status",
5386
14
        FT_UINT8, BASE_HEX, VALS(rdm_status_vals), 0x0,
5387
14
        NULL, HFILL }},
5388
5389
14
    { &hf_rdm_pd_sensor_nr,
5390
14
      { "Sensor Nr.", "rdm.pd.sensor.nr",
5391
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5392
14
        NULL, HFILL }},
5393
5394
14
    { &hf_rdm_pd_sensor_value_pres,
5395
14
      { "Sensor Present Value", "rdm.pd.sensor.value.present",
5396
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5397
14
        NULL, HFILL }},
5398
5399
14
    { &hf_rdm_pd_sensor_value_low,
5400
14
      { "Sensor Lowest Value", "rdm.pd.sensor.value.lowest",
5401
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5402
14
        NULL, HFILL }},
5403
5404
14
    { &hf_rdm_pd_sensor_value_high,
5405
14
      { "Sensor Highest Value", "rdm.pd.sensor.value.highest",
5406
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5407
14
        NULL, HFILL }},
5408
5409
14
    { &hf_rdm_pd_sensor_value_rec,
5410
14
      { "Sensor Recorded Value", "rdm.pd.sensor.value.recorded",
5411
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5412
14
        NULL, HFILL }},
5413
5414
14
    { &hf_rdm_pd_sensor_range_min_value,
5415
14
      { "Sensor Range Min. Value", "rdm.pd.sensor.range.min_value",
5416
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5417
14
        NULL, HFILL }},
5418
5419
14
    { &hf_rdm_pd_sensor_range_max_value,
5420
14
      { "Sensor Range Max. Value", "rdm.pd.sensor.range.max_value",
5421
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5422
14
        NULL, HFILL }},
5423
5424
14
    { &hf_rdm_pd_sensor_normal_min_value,
5425
14
      { "Sensor Normal Min. Value", "rdm.pd.sensor.normal.min_value",
5426
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5427
14
        NULL, HFILL }},
5428
5429
14
    { &hf_rdm_pd_sensor_normal_max_value,
5430
14
      { "Sensor Normal Max. Value", "rdm.pd.sensor.normal.max_value",
5431
14
        FT_INT16, BASE_DEC, NULL, 0x0,
5432
14
        NULL, HFILL }},
5433
5434
14
    { &hf_rdm_pd_sensor_recorded_value_support,
5435
14
      { "Sensor Recorded Value Support", "rdm.pd.sensor.recorded_value_support",
5436
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5437
14
        NULL, HFILL }},
5438
5439
14
    { &hf_rdm_pd_sensor_type,
5440
14
      { "Sensor Type", "rdm.pd.sensor_type",
5441
14
        FT_UINT8, BASE_HEX | BASE_EXT_STRING, &rdm_sensor_type_vals_ext, 0x0,
5442
14
        NULL, HFILL }},
5443
5444
14
    { &hf_rdm_pd_sensor_unit,
5445
14
      { "Sensor Unit", "rdm.pd.sensor_unit",
5446
14
        FT_UINT8, BASE_HEX | BASE_EXT_STRING, &rdm_unit_vals_ext, 0x0,
5447
14
        NULL, HFILL }},
5448
5449
14
    { &hf_rdm_pd_sensor_prefix,
5450
14
      { "Sensor Prefix", "rdm.pd.sensor_prefix",
5451
14
        FT_UINT8, BASE_HEX | BASE_EXT_STRING, &rdm_prefix_vals_ext, 0x0,
5452
14
        NULL, HFILL }},
5453
5454
14
    { &hf_rdm_pd_sensor_description,
5455
14
      { "Sensor Description", "rdm.pd.sensor.description",
5456
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5457
14
        NULL, HFILL }},
5458
5459
14
    { &hf_rdm_pd_manu_label,
5460
14
      { "Manufacturer Label", "rdm.pd.manu_label",
5461
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5462
14
        NULL, HFILL }},
5463
5464
5465
14
    { &hf_rdm_pd_device_label,
5466
14
      { "Device Label", "rdm.pd.device_label",
5467
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5468
14
        NULL, HFILL }},
5469
5470
14
    { &hf_rdm_pd_dmx_start_address,
5471
14
      { "DMX Start Address", "rdm.pd.dmx_start_address",
5472
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5473
14
        NULL, HFILL }},
5474
5475
14
    { &hf_rdm_pd_device_hours,
5476
14
      { "Device Hours", "rdm.pd.device_hours",
5477
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5478
14
        NULL, HFILL }},
5479
5480
14
    { &hf_rdm_pd_lamp_hours,
5481
14
      { "Lamp Hours", "rdm.pd.lamp_hours",
5482
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5483
14
        NULL, HFILL }},
5484
5485
14
    { &hf_rdm_pd_lamp_strikes,
5486
14
      { "Lamp Strikes", "rdm.pd.lamp_strikes",
5487
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5488
14
        NULL, HFILL }},
5489
5490
14
    { &hf_rdm_pd_proto_vers,
5491
14
      { "RDM Protocol Version", "rdm.pd.proto_vers",
5492
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5493
14
        NULL, HFILL }},
5494
5495
14
    { &hf_rdm_pd_device_model_id,
5496
14
      { "Device Model ID", "rdm.pd.device_model_id",
5497
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5498
14
        NULL, HFILL }},
5499
5500
14
    { &hf_rdm_pd_product_cat,
5501
14
      { "Product Category", "rdm.pd.product_cat",
5502
14
        FT_UINT16, BASE_HEX | BASE_EXT_STRING, &rdm_product_cat_vals_ext, 0x0,
5503
14
        NULL, HFILL }},
5504
5505
14
    { &hf_rdm_pd_software_vers_id,
5506
14
      { "Software Version ID", "rdm.pd.software_version_id",
5507
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5508
14
        NULL, HFILL }},
5509
5510
14
    { &hf_rdm_pd_dmx_footprint,
5511
14
      { "DMX Footprint", "rdm.pd.dmx_footprint",
5512
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5513
14
        NULL, HFILL }},
5514
5515
14
    { &hf_rdm_pd_dmx_pers_current,
5516
14
      { "Current DMX Personality", "rdm.pd.dmx_pers_current",
5517
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5518
14
        NULL, HFILL }},
5519
5520
14
    { &hf_rdm_pd_dmx_pers_total,
5521
14
      { "Total nr. DMX Personalities", "rdm.pd.dmx_pers_total",
5522
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5523
14
        NULL, HFILL }},
5524
5525
14
    { &hf_rdm_pd_sub_device_count,
5526
14
      { "Sub-Device Count", "rdm.pd.sub_device_count",
5527
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5528
14
        NULL, HFILL }},
5529
5530
14
    { &hf_rdm_pd_sensor_count,
5531
14
      { "Sensor Count", "rdm.pd.sensor_count",
5532
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5533
14
        NULL, HFILL }},
5534
5535
14
    { &hf_rdm_pd_device_model_description,
5536
14
      { "Device Model Description", "rdm.pd.device_model_description",
5537
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5538
14
        NULL, HFILL }},
5539
5540
14
    { &hf_rdm_pd_disc_unique_branch_lb_uid,
5541
14
      { "Lower Bound UID", "rdm.pd.disc_unique_branch.lb_uid",
5542
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5543
14
        NULL, HFILL }},
5544
5545
14
    { &hf_rdm_pd_disc_unique_branch_ub_uid,
5546
14
      { "Upper Bound UID", "rdm.pd.disc_unique_branch.ub_uid",
5547
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5548
14
        NULL, HFILL }},
5549
5550
14
    { &hf_rdm_pd_disc_mute_control_field,
5551
14
      { "Control Field", "rdm.pd.disc_mute.control_field",
5552
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5553
14
        NULL, HFILL }},
5554
5555
14
    { &hf_rdm_pd_disc_mute_binding_uid,
5556
14
      { "Binding UID", "rdm.pd.disc_mute.binding_uid",
5557
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5558
14
        NULL, HFILL }},
5559
5560
14
    { &hf_rdm_pd_disc_mute_binding_uid_manf,
5561
14
      { "Manufacturer ID", "rdm.pd.disc_mute.binding_uid.manf",
5562
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5563
14
        NULL, HFILL }},
5564
5565
14
    { &hf_rdm_pd_disc_mute_binding_uid_dev,
5566
14
      { "Device ID", "rdm.pd.disc_mute.binding_uid.dev",
5567
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5568
14
        NULL, HFILL }},
5569
5570
14
    { &hf_rdm_pd_disc_unmute_control_field,
5571
14
      { "Control Field", "rdm.pd.disc_unmute.control_field",
5572
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5573
14
        NULL, HFILL }},
5574
5575
14
    { &hf_rdm_pd_disc_unmute_binding_uid,
5576
14
      { "Binding UID", "rdm.pd.disc_unmute.binding_uid",
5577
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5578
14
        NULL, HFILL }},
5579
5580
14
    { &hf_rdm_pd_disc_unmute_binding_uid_manf,
5581
14
      { "Manufacturer ID", "rdm.pd.disc_unmute.binding_uid.manf",
5582
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5583
14
        NULL, HFILL }},
5584
5585
14
    { &hf_rdm_pd_disc_unmute_binding_uid_dev,
5586
14
      { "Device ID", "rdm.pd.disc_unmute.binding_uid.dev",
5587
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5588
14
        NULL, HFILL }},
5589
5590
14
    { &hf_rdm_pd_proxied_devices_uid,
5591
14
      { "UID", "rdm.pd.proxied_devices.uid",
5592
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5593
14
        NULL, HFILL }},
5594
5595
14
    { &hf_rdm_pd_proxied_devices_uid_manf,
5596
14
      { "Manufacturer ID", "rdm.pd.proxied_devices.uid.manf",
5597
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5598
14
        NULL, HFILL }},
5599
5600
14
    { &hf_rdm_pd_proxied_devices_uid_dev,
5601
14
      { "Device ID", "rdm.pd.proxied_devices.uid.dev",
5602
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5603
14
        NULL, HFILL }},
5604
5605
14
    { &hf_rdm_pd_proxied_device_count,
5606
14
      { "Device Count", "rdm.pd.device_count",
5607
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5608
14
        NULL, HFILL }},
5609
5610
14
    { &hf_rdm_pd_proxied_device_list_change,
5611
14
      { "List Change", "rdm.pd.list_change",
5612
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5613
14
        NULL, HFILL }},
5614
5615
14
    { &hf_rdm_pd_real_time_clock_year,
5616
14
      { "Year", "rdm.pd.real_time_clock.year",
5617
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5618
14
        NULL, HFILL }},
5619
5620
14
    { &hf_rdm_pd_real_time_clock_month,
5621
14
      { "Month", "rdm.pd.real_time_clock.month",
5622
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5623
14
        NULL, HFILL }},
5624
5625
14
    { &hf_rdm_pd_real_time_clock_day,
5626
14
      { "Day", "rdm.pd.real_time_clock.day",
5627
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5628
14
        NULL, HFILL }},
5629
5630
14
    { &hf_rdm_pd_real_time_clock_hour,
5631
14
      { "Hour", "rdm.pd.real_time_clock.hour",
5632
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5633
14
        NULL, HFILL }},
5634
5635
14
    { &hf_rdm_pd_real_time_clock_minute,
5636
14
      { "Minute", "rdm.pd.real_time_clock.minute",
5637
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5638
14
        NULL, HFILL }},
5639
5640
14
    { &hf_rdm_pd_real_time_clock_second,
5641
14
      { "Second", "rdm.pd.real_time_clock.second",
5642
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5643
14
        NULL, HFILL }},
5644
5645
14
    { &hf_rdm_pd_lamp_state,
5646
14
      { "Lamp State", "rdm.pd.lamp_state",
5647
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5648
14
        NULL, HFILL }},
5649
5650
14
    { &hf_rdm_pd_lamp_on_mode,
5651
14
      { "Lamp On Mode", "rdm.pd.lamp_on_mode",
5652
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5653
14
        NULL, HFILL }},
5654
5655
14
    { &hf_rdm_pd_device_power_cycles,
5656
14
      { "Device Power Cycles", "rdm.pd.device_power_cycles",
5657
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5658
14
        NULL, HFILL }},
5659
5660
14
    { &hf_rdm_pd_display_invert,
5661
14
      { "Display Invert", "rdm.pd.display_invert",
5662
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5663
14
        NULL, HFILL }},
5664
5665
14
    { &hf_rdm_pd_display_level,
5666
14
      { "Display Level", "rdm.pd.display_level",
5667
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5668
14
        NULL, HFILL }},
5669
5670
14
    { &hf_rdm_pd_pan_invert,
5671
14
      { "Pan Invert", "rdm.pd.pan_invert",
5672
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5673
14
        NULL, HFILL }},
5674
5675
14
    { &hf_rdm_pd_tilt_invert,
5676
14
      { "Tilt Invert", "rdm.pd.tilt_invert",
5677
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5678
14
        NULL, HFILL }},
5679
5680
14
    { &hf_rdm_pd_tilt_swap,
5681
14
      { "Tilt Swap", "rdm.pd.tilt_swap",
5682
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5683
14
        NULL, HFILL }},
5684
5685
14
    { &hf_rdm_pd_selftest_nr,
5686
14
      { "Selftest Nr.", "rdm.pd.selftest.nr",
5687
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5688
14
        NULL, HFILL }},
5689
5690
14
    { &hf_rdm_pd_selftest_state,
5691
14
      { "Selftest State", "rdm.pd.selftest.state",
5692
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5693
14
        NULL, HFILL }},
5694
5695
14
    { &hf_rdm_pd_selftest_description,
5696
14
      { "Selftest Description", "rdm.pd.selftest.description",
5697
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5698
14
        NULL, HFILL }},
5699
5700
14
    { &hf_rdm_pd_language_code,
5701
14
      { "Language Code", "rdm.pd.language_code",
5702
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5703
14
        NULL, HFILL }},
5704
5705
14
    { &hf_rdm_pd_identify_device,
5706
14
      { "Identify Device", "rdm.pd.identify_device",
5707
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5708
14
        NULL, HFILL }},
5709
5710
14
    { &hf_rdm_pd_identify_device_state,
5711
14
      { "Identify Device State", "rdm.pd.identify_device.state",
5712
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5713
14
        NULL, HFILL }},
5714
5715
14
    { &hf_rdm_pd_reset_device,
5716
14
      { "Reset Device", "rdm.pd.reset_device",
5717
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5718
14
        NULL, HFILL }},
5719
5720
14
    { &hf_rdm_pd_power_state,
5721
14
      { "Power State", "rdm.pd.power_state",
5722
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5723
14
        NULL, HFILL }},
5724
5725
14
    { &hf_rdm_pd_capture_preset_scene_nr,
5726
14
      { "Scene Nr.", "rdm.pd.capture_preset.scene_nr",
5727
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5728
14
        NULL, HFILL }},
5729
5730
14
    { &hf_rdm_pd_capture_preset_up_fade_time,
5731
14
      { "Up Fade Time", "rdm.pd.capture_preset.up_fade_time",
5732
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5733
14
        NULL, HFILL }},
5734
5735
14
    { &hf_rdm_pd_capture_preset_down_fade_time,
5736
14
      { "Down Fade Time", "rdm.pd.capture_preset.down_fade_time",
5737
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5738
14
        NULL, HFILL }},
5739
5740
14
    { &hf_rdm_pd_capture_preset_wait_time,
5741
14
      { "Wait Time", "rdm.pd.capture_preset.wait_time",
5742
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5743
14
        NULL, HFILL }},
5744
5745
14
    { &hf_rdm_pd_preset_playback_mode,
5746
14
      { "Mode", "rdm.pd.preset_playback.mode",
5747
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5748
14
        NULL, HFILL }},
5749
5750
14
    { &hf_rdm_pd_preset_playback_level,
5751
14
      { "Level", "rdm.pd.preset_playback.level",
5752
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5753
14
        NULL, HFILL }},
5754
5755
14
    { &hf_rdm_pd_parameter_id,
5756
14
      { "ID", "rdm.pd.parameter.id",
5757
14
        FT_UINT16, BASE_HEX, VALS(rdm_param_id_vals), 0x0,
5758
14
        NULL, HFILL }},
5759
5760
14
    { &hf_rdm_pd_parameter_pdl_size,
5761
14
      { "PDL Size", "rdm.pd.parameter.pdl_size",
5762
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5763
14
        NULL, HFILL }},
5764
5765
14
    { &hf_rdm_pd_parameter_data_type,
5766
14
      { "Data Type", "rdm.pd.parameter.data_type",
5767
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5768
14
        NULL, HFILL }},
5769
5770
14
    { &hf_rdm_pd_parameter_cmd_class,
5771
14
      { "Command Class", "rdm.pd.parameter.cmd_class",
5772
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5773
14
        NULL, HFILL }},
5774
5775
14
    { &hf_rdm_pd_parameter_type,
5776
14
      { "Type", "rdm.pd.parameter.type",
5777
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5778
14
        NULL, HFILL }},
5779
5780
14
    { &hf_rdm_pd_parameter_unit,
5781
14
      { "Unit", "rdm.pd.parameter.unit",
5782
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5783
14
        NULL, HFILL }},
5784
5785
14
    { &hf_rdm_pd_parameter_prefix,
5786
14
      { "Prefix", "rdm.pd.parameter.prefix",
5787
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5788
14
        NULL, HFILL }},
5789
5790
14
    { &hf_rdm_pd_parameter_min_value,
5791
14
      { "Min. Value", "rdm.pd.parameter.min_value",
5792
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5793
14
        NULL, HFILL }},
5794
5795
14
    { &hf_rdm_pd_parameter_max_value,
5796
14
      { "Max. Value", "rdm.pd.parameter.max_value",
5797
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5798
14
        NULL, HFILL }},
5799
5800
14
    { &hf_rdm_pd_parameter_default_value,
5801
14
      { "Default Value", "rdm.pd.parameter.default_value",
5802
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
5803
14
        NULL, HFILL }},
5804
5805
14
    { &hf_rdm_pd_parameter_description,
5806
14
      { "Description", "rdm.pd.parameter.description",
5807
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5808
14
        NULL, HFILL }},
5809
5810
14
    { &hf_rdm_pd_software_version_label,
5811
14
      { "Version Label", "rdm.pd.software_version.label",
5812
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5813
14
        NULL, HFILL }},
5814
5815
14
    { &hf_rdm_pd_boot_software_version_id,
5816
14
      { "Version ID", "rdm.pd.boot_software_version.id",
5817
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5818
14
        NULL, HFILL }},
5819
5820
14
    { &hf_rdm_pd_boot_software_version_label,
5821
14
      { "Version Label", "rdm.pd.boot_software_version.label",
5822
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5823
14
        NULL, HFILL }},
5824
5825
14
    { &hf_rdm_pd_comms_status_short_msg,
5826
14
      { "Short Msg", "rdm.pd.comms_status.short_msg",
5827
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5828
14
        NULL, HFILL }},
5829
5830
14
    { &hf_rdm_pd_comms_status_len_mismatch,
5831
14
      { "Len Mismatch", "rdm.pd.comms_status.len_mismatch",
5832
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5833
14
        NULL, HFILL }},
5834
5835
14
    { &hf_rdm_pd_comms_status_csum_fail,
5836
14
      { "Checksum Fail", "rdm.pd.comms_status.csum_fail",
5837
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5838
14
        NULL, HFILL }},
5839
5840
14
    { &hf_rdm_pd_status_messages_type,
5841
14
      { "Type", "rdm.pd.status_messages.type",
5842
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5843
14
        NULL, HFILL }},
5844
5845
14
    { &hf_rdm_pd_status_messages_sub_device_id,
5846
14
      { "Sub. Device ID", "rdm.pd.status_messages.sub_devices_id",
5847
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5848
14
        NULL, HFILL }},
5849
5850
14
    { &hf_rdm_pd_status_messages_id,
5851
14
      { "ID", "rdm.pd.status_messages.id",
5852
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5853
14
        NULL, HFILL }},
5854
5855
14
    { &hf_rdm_pd_status_messages_data_value_1,
5856
14
      { "Data Value 1", "rdm.pd.status_messages.data_value_1",
5857
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5858
14
        NULL, HFILL }},
5859
5860
14
    { &hf_rdm_pd_status_messages_data_value_2,
5861
14
      { "Data Value 2", "rdm.pd.status_messages.data_value_2",
5862
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
5863
14
        NULL, HFILL }},
5864
5865
14
    { &hf_rdm_pd_status_id,
5866
14
      { "ID", "rdm.pd.status_id",
5867
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5868
14
        NULL, HFILL }},
5869
5870
14
    { &hf_rdm_pd_status_id_description,
5871
14
      { "Description", "rdm.pd.status_id.description",
5872
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5873
14
        NULL, HFILL }},
5874
5875
14
    { &hf_rdm_pd_sub_device_status_report_threshold_status_type,
5876
14
      { "Status Type", "rdm.pd.sub_device_status_report_threshold.status_type",
5877
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
5878
14
        NULL, HFILL }},
5879
5880
14
    { &hf_rdm_pd_product_detail_id,
5881
14
      { "Product Detail ID", "rdm.pd.product_detail_id",
5882
14
        FT_UINT16, BASE_HEX | BASE_EXT_STRING, &rdm_product_detail_vals_ext, 0x0,
5883
14
        NULL, HFILL }},
5884
5885
14
    { &hf_rdm_pd_factory_defaults,
5886
14
      { "Factory Defaults", "rdm.pd.factory_defaults",
5887
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5888
14
        NULL, HFILL }},
5889
5890
14
    { &hf_rdm_pd_background_discovery_endpoint_id,
5891
14
      { "Endpoint ID", "rdm.pd.background_discovery.endpoint_id",
5892
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5893
14
        NULL, HFILL }},
5894
5895
14
    { &hf_rdm_pd_background_discovery_enabled,
5896
14
      { "Enabled", "rdm.pd.background_discovery.enabled",
5897
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
5898
14
        NULL, HFILL }},
5899
5900
14
    { &hf_rdm_pd_background_queued_status_policy_current_policy,
5901
14
      { "Current Policy", "rdm.pd.background_queued_status_policy.current_policy",
5902
14
        FT_UINT8, BASE_DEC, VALS(rdm_status_vals), 0x0,
5903
14
        NULL, HFILL }},
5904
5905
14
    { &hf_rdm_pd_background_queued_status_policy_number_of_policies,
5906
14
      { "Number Of Policies", "rdm.pd.background_queued_status_policy.number_of_policies",
5907
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5908
14
        NULL, HFILL }},
5909
5910
14
    { &hf_rdm_pd_background_queued_status_policy_description_policy,
5911
14
      { "Policy", "rdm.pd.background_queued_status_policy_description.policy",
5912
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5913
14
        NULL, HFILL }},
5914
5915
14
    { &hf_rdm_pd_background_queued_status_policy_description_description,
5916
14
      { "Description", "rdm.pd.background_queued_status_policy_description.description",
5917
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5918
14
        NULL, HFILL }},
5919
5920
14
    { &hf_rdm_pd_search_domain_dns_domain_name,
5921
14
      { "DNS Domain Name", "rdm.pd.search_domain.dns_domain_name",
5922
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5923
14
        NULL, HFILL }},
5924
5925
14
    { &hf_rdm_pd_binding_control_fields_endpoint_id,
5926
14
      { "Endpoint ID", "rdm.pd.binding_control_fields.endpoint_id",
5927
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5928
14
        NULL, HFILL }},
5929
5930
14
    { &hf_rdm_pd_binding_control_fields_uid,
5931
14
      { "UID", "rdm.pd.binding_control_fields.uid",
5932
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5933
14
        NULL, HFILL }},
5934
5935
14
    { &hf_rdm_pd_binding_control_fields_uid_manf,
5936
14
      { "Manufacturer ID", "rdm.pd.binding_control_fields.uid.manf",
5937
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5938
14
        NULL, HFILL }},
5939
5940
14
    { &hf_rdm_pd_binding_control_fields_uid_dev,
5941
14
      { "Device ID", "rdm.pd.binding_control_fields.uid.dev",
5942
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5943
14
        NULL, HFILL }},
5944
5945
14
    { &hf_rdm_pd_binding_control_fields_control_field,
5946
14
      { "Control Field", "rdm.pd.binding_control_fields.control_field",
5947
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5948
14
        NULL, HFILL }},
5949
5950
14
    { &hf_rdm_pd_binding_control_fields_binding_uid,
5951
14
      { "Binding UID", "rdm.pd.binding_control_fields.binding_uid",
5952
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
5953
14
        NULL, HFILL }},
5954
5955
14
    { &hf_rdm_pd_binding_control_fields_binding_uid_manf,
5956
14
      { "Manufacturer ID", "rdm.pd.binding_control_fields.binding_uid.manf",
5957
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
5958
14
        NULL, HFILL }},
5959
5960
14
    { &hf_rdm_pd_binding_control_fields_binding_uid_dev,
5961
14
      { "Device ID", "rdm.pd.binding_control_fields.binding_uid.dev",
5962
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
5963
14
        NULL, HFILL }},
5964
5965
14
    { &hf_rem_pd_broker_status_set_allowed,
5966
14
      { "Set Allowed", "rdm.pd.broker_status.set_allowed",
5967
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
5968
14
        NULL, HFILL }},
5969
5970
14
    { &hf_rem_pd_broker_status_state,
5971
14
      { "State", "rdm.pd.broker_status.state",
5972
14
        FT_UINT8, BASE_DEC, VALS(rdmnet_broker_status_states_vals), 0x0,
5973
14
        NULL, HFILL }},
5974
5975
14
    { &hf_rdm_pd_burn_in,
5976
14
      { "Burn In", "rdm.pd.burn_in",
5977
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
5978
14
        NULL, HFILL }},
5979
5980
14
    { &hf_rdm_pd_component_scope_scope_slot,
5981
14
      { "Scope Slot", "rdm.pd.component_scope.scope_slot",
5982
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
5983
14
        NULL, HFILL }},
5984
5985
14
    { &hf_rdm_pd_component_scope_scope_string,
5986
14
      { "Scope String", "rdm.pd.component_scope.scope_string",
5987
14
        FT_STRING, BASE_NONE, NULL, 0x0,
5988
14
        NULL, HFILL }},
5989
5990
14
    { &hf_rdm_pd_component_scope_scope_static_config_type,
5991
14
      { "Static Config. Type", "rdm.pd.component_scope.static_config_type",
5992
14
        FT_UINT8, BASE_DEC, VALS(rdmnet_component_scope_static_config_type_vals), 0x0,
5993
14
        NULL, HFILL }},
5994
5995
14
    { &hf_rdm_pd_component_scope_scope_static_ipv4_address,
5996
14
      { "Static IPv4 Address", "rdm.pd.component_scope.static_ipv4_address",
5997
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
5998
14
        NULL, HFILL }},
5999
6000
14
    { &hf_rdm_pd_component_scope_scope_static_ipv6_address,
6001
14
      { "Static IPv6 Address", "rdm.pd.component_scope.static_ipv6_address",
6002
14
        FT_IPv6, BASE_NONE, NULL, 0x0,
6003
14
        NULL, HFILL }},
6004
6005
14
    { &hf_rdm_pd_component_scope_scope_static_port,
6006
14
      { "Static Port", "rdm.pd.component_scope.static_port",
6007
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6008
14
        NULL, HFILL }},
6009
6010
14
    { &hf_rdm_pd_current_address_interface_identifier,
6011
14
      { "Interface Identifier", "rdm.pd.current_address.interface_identifier",
6012
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6013
14
        NULL, HFILL }},
6014
6015
14
    { &hf_rdm_pd_current_address_ipv4_address,
6016
14
      { "IPv4 Address", "rdm.pd.current_address.ipv4_address",
6017
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
6018
14
        NULL, HFILL }},
6019
6020
14
    { &hf_rdm_pd_current_address_netmask,
6021
14
      { "Netmask", "rdm.pd.current_address.netmask",
6022
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6023
14
        NULL, HFILL }},
6024
6025
14
    { &hf_rdm_pd_current_address_dhcp_status,
6026
14
      { "DHCP Status", "rdm.pd.current_address.dhcp_status",
6027
14
        FT_UINT8, BASE_DEC, VALS(rdm_dhcp_status_vals), 0x0,
6028
14
        NULL, HFILL }},
6029
6030
14
    { &hf_rdm_pd_curve_curve,
6031
14
      { "Curve", "rdm.pd.curve.curve",
6032
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6033
14
        NULL, HFILL }},
6034
6035
14
    { &hf_rdm_pd_curve_number_of_curves,
6036
14
      { "Number Of Curves", "rdm.pd.curve.number_of_curves",
6037
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6038
14
        NULL, HFILL }},
6039
6040
14
    { &hf_rdm_pd_curve_description_curve,
6041
14
      { "Curve", "rdm.pd.curve_description.curve",
6042
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6043
14
        NULL, HFILL }},
6044
6045
14
    { &hf_rdm_pd_curve_description_text,
6046
14
      { "Description", "rdm.pd.curve_description.description",
6047
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6048
14
        NULL, HFILL }},
6049
6050
14
    { &hf_rdm_pd_dhcp_mode_interface_identifier,
6051
14
      { "Interface Identifier", "rdm.pd.dhcp_mode.interface_identifier",
6052
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6053
14
        NULL, HFILL }},
6054
6055
14
    { &hf_rdm_pd_dhcp_mode_enabled,
6056
14
      { "Enabled", "rdm.pd.dhcp_mode.enabled",
6057
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6058
14
        NULL, HFILL }},
6059
6060
14
    { &hf_rdm_pd_dimmer_info_minimum_level_lower_limit,
6061
14
      { "Minimum Level Lower Limit", "rdm.pd.dimmer_info.minimum_level_lower_limit",
6062
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6063
14
        NULL, HFILL }},
6064
6065
14
    { &hf_rdm_pd_dimmer_info_minimum_level_upper_limit,
6066
14
      { "Minimum Level Upper Limit", "rdm.pd.dimmer_info.minimum_level_upper_limit",
6067
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6068
14
        NULL, HFILL }},
6069
6070
14
    { &hf_rdm_pd_dimmer_info_maximum_level_lower_limit,
6071
14
      { "Maximum Level Lower Limit", "rdm.pd.dimmer_info.maximum_level_lower_limit",
6072
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6073
14
        NULL, HFILL }},
6074
6075
14
    { &hf_rdm_pd_dimmer_info_maximum_level_upper_limit,
6076
14
      { "Maximum Level Upper Limit", "rdm.pd.dimmer_info.maximum_level_upper_limit",
6077
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6078
14
        NULL, HFILL }},
6079
6080
14
    { &hf_rdm_pd_dimmer_info_number_of_supported_curves,
6081
14
      { "Number Of Supported Curves", "rdm.pd.dimmer_info.number_of_supported_curves",
6082
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6083
14
        NULL, HFILL }},
6084
6085
14
    { &hf_rdm_pd_dimmer_info_levels_resolution,
6086
14
      { "Levels Resolution", "rdm.pd.dimmer_info.levels_resolution",
6087
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6088
14
        NULL, HFILL }},
6089
6090
14
    { &hf_rdm_pd_dimmer_info_minimum_level_split_levels_supported,
6091
14
      { "Minimum Level Split Levels Supported", "rdm.pd.dimmer_info.minimum_level_split_levels_supported",
6092
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6093
14
        NULL, HFILL }},
6094
6095
14
    { &hf_rdm_pd_discovery_state_endpoint_id,
6096
14
      { "Endpoint ID", "rdm.pd.discovery_state.endpoint_id",
6097
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6098
14
        NULL, HFILL }},
6099
6100
14
    { &hf_rdm_pd_discovery_state_device_count,
6101
14
      { "Device Count", "rdm.pd.discovery_state.device_count",
6102
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6103
14
        NULL, HFILL }},
6104
6105
14
    { &hf_rdm_pd_discovery_state_discovery_state,
6106
14
      { "State", "rdm.pd.discovery_state.state",
6107
14
        FT_UINT8, BASE_DEC, VALS(rdm_discovery_state_vals), 0x0,
6108
14
        NULL, HFILL }},
6109
6110
14
    { &hf_rdm_pd_dmx_block_address_base_dmx_address,
6111
14
      { "Base DMX Address", "rdm.pd.dmx_block_address.base_dmx_address",
6112
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6113
14
        NULL, HFILL }},
6114
6115
14
    { &hf_rdm_pd_dmx_block_address_subdevice_footprint,
6116
14
      { "Sub-Device Footprint", "rdm.pd.dmx_block_address.subdevice_footprint",
6117
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6118
14
        NULL, HFILL }},
6119
6120
14
    { &hf_rdm_pd_dmx_fail_mode_scene_number,
6121
14
      { "Scene Number", "rdm.pd.dmx_fail_mode.scene_number",
6122
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6123
14
        NULL, HFILL }},
6124
6125
14
    { &hf_rdm_pd_dmx_fail_mode_loss_of_signal_delay,
6126
14
      { "Loss Of Signal Delay", "rdm.pd.dmx_fail_mode.loss_of_signal_delay",
6127
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6128
14
        NULL, HFILL }},
6129
6130
14
    { &hf_rdm_pd_dmx_fail_mode_hold_time,
6131
14
      { "Hold Time", "rdm.pd.dmx_fail_mode.hold_time",
6132
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6133
14
        NULL, HFILL }},
6134
6135
14
    { &hf_rdm_pd_dmx_fail_mode_level,
6136
14
      { "Level", "rdm.pd.dmx_fail_mode.level",
6137
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6138
14
        NULL, HFILL }},
6139
6140
14
    { &hf_rdm_pd_dmx_pers_nr,
6141
14
      { "DMX Pers. Nr.", "rdm.pd.dmx_pers.nr",
6142
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6143
14
        NULL, HFILL }},
6144
6145
14
    { &hf_rdm_pd_dmx_pers_count,
6146
14
      { "DMX Pers. Count", "rdm.pd.dmx_pers.count",
6147
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6148
14
        NULL, HFILL }},
6149
6150
14
    { &hf_rdm_pd_dmx_pers_requested,
6151
14
      { "DMX Pers. Requested", "rdm.pd.dmx_pers.requested",
6152
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6153
14
        NULL, HFILL }},
6154
6155
14
    { &hf_rdm_pd_dmx_pers_slots,
6156
14
      { "DMX Pers. Slots", "rdm.pd.dmx_pers.slots",
6157
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6158
14
        NULL, HFILL }},
6159
6160
14
    { &hf_rdm_pd_dmx_pers_text,
6161
14
      { "DMX Pers. Text", "rdm.pd.dmx_pers.text",
6162
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6163
14
        NULL, HFILL }},
6164
6165
14
    { &hf_rdm_pd_dmx_startup_mode_scene_number,
6166
14
      { "Scene Number", "rdm.pd.dmx_startup_mode.scene_number",
6167
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6168
14
        NULL, HFILL }},
6169
6170
14
    { &hf_rdm_pd_dmx_startup_mode_loss_of_signal_delay,
6171
14
      { "Startup Delay Time", "rdm.pd.dmx_startup_mode.startup_delay_time",
6172
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6173
14
        NULL, HFILL }},
6174
6175
14
    { &hf_rdm_pd_dmx_startup_mode_hold_time,
6176
14
      { "Hold Time", "rdm.pd.dmx_startup_mode.hold_time",
6177
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6178
14
        NULL, HFILL }},
6179
6180
14
    { &hf_rdm_pd_dmx_startup_mode_level,
6181
14
      { "Level", "rdm.pd.dmx_startup_mode.level",
6182
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6183
14
        NULL, HFILL }},
6184
6185
14
    { &hf_rdm_pd_dns_domain_name,
6186
14
      { "Domain Name", "rdm.pd.dns_domain_name",
6187
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6188
14
        NULL, HFILL }},
6189
6190
14
    { &hf_rdm_pd_dns_hostname,
6191
14
      { "Host Name", "rdm.pd.dns_hostname",
6192
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6193
14
        NULL, HFILL }},
6194
6195
14
    { &hf_rdm_pd_dns_ipv4_name_server_index,
6196
14
      { "Index", "rdm.pd.dns_ipv4_name_server.index",
6197
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6198
14
        NULL, HFILL }},
6199
6200
14
    { &hf_rdm_pd_dns_ipv4_name_server_address,
6201
14
      { "Index", "rdm.pd.dns_ipv4_name_server.address",
6202
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
6203
14
        NULL, HFILL }},
6204
6205
14
    { &hf_rdm_pd_endpoint_label_endpoint_id,
6206
14
      { "Endpoint ID", "rdm.pd.endpoint_label.endpoint_id",
6207
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6208
14
        NULL, HFILL }},
6209
6210
14
    { &hf_rdm_pd_endpoint_label_label,
6211
14
      { "Label", "rdm.pd.endpoint_label.label",
6212
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6213
14
        NULL, HFILL }},
6214
6215
14
    { &hf_rdm_pd_endpoint_list_change_number,
6216
14
      { "List Change Number", "rdm.pd.endpoint_list.change_number",
6217
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6218
14
        NULL, HFILL }},
6219
6220
14
    { &hf_rdm_pd_endpoint_list_endpoint_id,
6221
14
      { "Endpoint ID", "rdm.pd.endpoint_list.endpoint_id",
6222
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6223
14
        NULL, HFILL }},
6224
6225
14
    { &hf_rdm_pd_endpoint_list_endpoint_type,
6226
14
      { "Endpoint Type", "rdm.pd.endpoint_list.endpoint_type",
6227
14
        FT_UINT8, BASE_DEC, VALS(rdm_endpoint_type_vals), 0x0,
6228
14
        NULL, HFILL }},
6229
6230
14
    { &hf_rdm_pd_endpoint_list_change_change_number,
6231
14
      { "List Change Number", "rdm.pd.endpoint_list_change.change_number",
6232
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6233
14
        NULL, HFILL }},
6234
6235
14
    { &hf_rdm_pd_endpoint_mode_endpoint_id,
6236
14
      { "Endpoint ID", "rdm.pd.endpoint_mode.endpoint_id",
6237
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6238
14
        NULL, HFILL }},
6239
6240
14
    { &hf_rdm_pd_endpoint_mode_endpoint_mode,
6241
14
      { "Endpoint ID", "rdm.pd.endpoint_mode.endpoint_mode",
6242
14
        FT_UINT8, BASE_DEC, VALS(rdm_endpoint_mode_vals), 0x0,
6243
14
        NULL, HFILL }},
6244
6245
14
    { &hf_rdm_pd_endpoint_responder_list_change_endpoint_id,
6246
14
      { "Endpoint ID", "rdm.pd.endpoint_responder_list_change.endpoint_id",
6247
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6248
14
        NULL, HFILL }},
6249
6250
14
    { &hf_rdm_pd_endpoint_responder_list_change_change_number,
6251
14
      { "Change Number", "rdm.pd.endpoint_responder_list_change.change_number",
6252
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6253
14
        NULL, HFILL }},
6254
6255
14
    { &hf_rdm_pd_endpoint_responders_endpoint_id,
6256
14
      { "Endpoint ID", "rdm.pd.endpoint_responders.endpoint_id",
6257
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6258
14
        NULL, HFILL }},
6259
6260
14
    { &hf_rdm_pd_endpoint_responders_change_number,
6261
14
      { "Change Number", "rdm.pd.endpoint_responders.change_number",
6262
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6263
14
        NULL, HFILL }},
6264
6265
14
    { &hf_rdm_pd_endpoint_responders_uid,
6266
14
      { "UID", "rdm.pd.endpoint_responders.uid",
6267
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
6268
14
        NULL, HFILL }},
6269
6270
14
    { &hf_rdm_pd_endpoint_responders_uid_manf,
6271
14
      { "Manufacturer ID", "rdm.pd.endpoint_responders.uid.manf",
6272
14
        FT_UINT16, BASE_HEX|BASE_EXT_STRING, &dmx_esta_manfid_vals_ext, 0x0,
6273
14
        NULL, HFILL }},
6274
6275
14
    { &hf_rdm_pd_endpoint_responders_uid_dev,
6276
14
      { "Device ID", "rdm.pd.endpoint_responders.uid.dev",
6277
14
        FT_UINT32, BASE_HEX, NULL, 0x0,
6278
14
        NULL, HFILL }},
6279
6280
14
    { &hf_rdm_pd_endpoint_timing_endpoint_id,
6281
14
      { "Endpoint ID", "rdm.pd.endpoint_timing.endpoint_id",
6282
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6283
14
        NULL, HFILL }},
6284
6285
14
    { &hf_rdm_pd_endpoint_timing_setting,
6286
14
      { "Setting", "rdm.pd.endpoint_timing.setting",
6287
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6288
14
        NULL, HFILL }},
6289
6290
14
    { &hf_rdm_pd_endpoint_timing_number_of_settings,
6291
14
      { "Number Of Settings", "rdm.pd.endpoint_timing.number_of_settings",
6292
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6293
14
        NULL, HFILL }},
6294
6295
14
    { &hf_rdm_pd_endpoint_timing_description_setting,
6296
14
      { "Setting", "rdm.pd.endpoint_timing_description.setting",
6297
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6298
14
        NULL, HFILL }},
6299
6300
14
    { &hf_rdm_pd_endpoint_timing_description_description,
6301
14
      { "Description", "rdm.pd.endpoint_timing_description.description",
6302
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6303
14
        NULL, HFILL }},
6304
6305
14
    { &hf_rdm_pd_endpoint_to_universe_endpoint_id,
6306
14
      { "Endpoint ID", "rdm.pd.endpoint_to_universe.endpoint_id",
6307
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6308
14
        NULL, HFILL }},
6309
6310
14
    { &hf_rdm_pd_endpoint_to_universe_universe_number,
6311
14
      { "Universe Number", "rdm.pd.endpoint_to_universe.universe_number",
6312
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6313
14
        NULL, HFILL }},
6314
6315
14
    { &hf_rdm_pd_hardware_address_type1_interface_identifier,
6316
14
      { "Interface Identifier", "rdm.pd.hardware_address_type1.interface_identifier",
6317
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6318
14
        NULL, HFILL }},
6319
6320
14
    { &hf_rdm_pd_hardware_address_type1_hardware_address,
6321
14
      { "Hardware Address", "rdm.pd.hardware_address_type1.hardware_address",
6322
14
        FT_BYTES, SEP_COLON, NULL, 0x0,
6323
14
        NULL, HFILL }},
6324
6325
14
    { &hf_rdm_pd_identify_endpoint_endpoint_id,
6326
14
      { "Endpoint ID", "rdm.pd.identify_endpoint.endpoint_id",
6327
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6328
14
        NULL, HFILL }},
6329
6330
14
    { &hf_rdm_pd_identify_endpoint_identify_state,
6331
14
      { "Identify State", "rdm.pd.identify_endpoint.identify_state",
6332
14
        FT_UINT8, BASE_DEC, VALS(on_off_vals), 0x0,
6333
14
        NULL, HFILL }},
6334
6335
14
    { &hf_rdm_pd_identify_mode,
6336
14
      { "Identify Mode", "rdm.pd.identify_mode.identify_mode",
6337
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6338
14
        NULL, HFILL }},
6339
6340
14
    { &hf_rdm_pd_interface_apply_configuration_interface_identifier,
6341
14
      { "Interface Identifier", "rdm.pd.interface_apply_configuration.interface_identifier",
6342
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6343
14
        NULL, HFILL }},
6344
6345
14
    { &hf_rdm_pd_interface_label_interface_identifier,
6346
14
      { "Interface Identifier", "rdm.pd.interface_label.interface_identifier",
6347
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6348
14
        NULL, HFILL }},
6349
6350
14
    { &hf_rdm_pd_interface_label_label,
6351
14
      { "Label", "rdm.pd.interface_label.label",
6352
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6353
14
        NULL, HFILL }},
6354
6355
14
    { &hf_rdm_pd_interface_release_dhcp_interface_identifier,
6356
14
      { "Interface Identifier", "rdm.pd.interface_release_dhcp.interface_identifier",
6357
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6358
14
        NULL, HFILL }},
6359
6360
14
    { &hf_rdm_pd_interface_renew_dhcp_interface_identifier,
6361
14
      { "Interface Identifier", "rdm.pd.interface_renew_dhcp.interface_identifier",
6362
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6363
14
        NULL, HFILL }},
6364
6365
14
    { &hf_rdm_pd_ipv4_default_route_interface_identifier,
6366
14
      { "Interface Identifier", "rdm.pd.ipv4_default_route.interface_identifier",
6367
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6368
14
        NULL, HFILL }},
6369
6370
14
    { &hf_rdm_pd_ipv4_default_route_ipv4_default_route,
6371
14
      { "Interface Identifier", "rdm.pd.ipv4_default_route.default_route",
6372
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
6373
14
        NULL, HFILL }},
6374
6375
14
    { &hf_rdm_pd_list_interfaces_interface_identifier,
6376
14
      { "Interface Identifier", "rdm.pd.list_interfaces.interface_identifier",
6377
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6378
14
        NULL, HFILL }},
6379
6380
14
    { &hf_rdm_pd_list_interfaces_interface_hardware_type,
6381
14
      { "Interface Hardware Type", "rdm.pd.list_interfaces.interface_hardware_type",
6382
14
        FT_UINT16, BASE_DEC, VALS(arp_hrd_vals), 0x0,
6383
14
        NULL, HFILL }},
6384
6385
14
    { &hf_rdm_pd_lock_pin_pin_code,
6386
14
      { "PIN Code", "rdm.pd.lock_pin.pin_code",
6387
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6388
14
        NULL, HFILL }},
6389
14
    { &hf_rdm_pd_lock_pin_new_pin_code,
6390
14
      { "New PIN Code", "rdm.pd.lock_pin.new_pin_code",
6391
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6392
14
        NULL, HFILL }},
6393
6394
14
    { &hf_rdm_pd_lock_state_lock_state,
6395
14
      { "Lock State", "rdm.pd.lock_state.lock_state",
6396
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6397
14
        NULL, HFILL }},
6398
6399
14
    { &hf_rdm_pd_lock_state_number_of_lock_states,
6400
14
      { "Number Of Lock States", "rdm.pd.lock_state.number_of_lock_states",
6401
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6402
14
        NULL, HFILL }},
6403
6404
14
    { &hf_rdm_pd_lock_state_pin_code,
6405
14
      { "PIN Code", "rdm.pd.lock_state.pin_code",
6406
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6407
14
        NULL, HFILL }},
6408
6409
14
    { &hf_rdm_pd_lock_state_description_lock_state,
6410
14
      { "Lock State", "rdm.pd.lock_state_description.lock_state",
6411
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6412
14
        NULL, HFILL }},
6413
6414
14
    { &hf_rdm_pd_lock_state_description_text,
6415
14
      { "Description", "rdm.pd.lock_state_description.description",
6416
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6417
14
        NULL, HFILL }},
6418
6419
14
    { &hf_rdm_pd_maximum_level_level,
6420
14
      { "Level", "rdm.pd.maximum_level.level",
6421
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6422
14
        NULL, HFILL }},
6423
6424
14
    { &hf_rdm_pd_preset_mergemode,
6425
14
      { "Merge Mode", "rdm.pd.preset_mergemode",
6426
14
        FT_UINT8, BASE_DEC, VALS(rdm_mergemode_vals), 0x0,
6427
14
        NULL, HFILL }},
6428
6429
14
    { &hf_rdm_pd_power_on_self_test,
6430
14
      { "Power On Self Test", "rdm.pd.power_on_self_test",
6431
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6432
14
        NULL, HFILL }},
6433
6434
14
    { &hf_rdm_pd_minimum_level_increasing,
6435
14
      { "Increasing", "rdm.pd.minimum_level.increasing",
6436
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6437
14
        NULL, HFILL }},
6438
6439
14
    { &hf_rdm_pd_minimum_level_decreasing,
6440
14
      { "Decreasing", "rdm.pd.minimum_level.decreasing",
6441
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6442
14
        NULL, HFILL }},
6443
6444
14
    { &hf_rdm_pd_minimum_level_on_below_minimum,
6445
14
      { "On Below Minimum", "rdm.pd.minimum_level.on_below_minimum",
6446
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6447
14
        NULL, HFILL }},
6448
6449
14
    { &hf_rdm_pd_modulation_frequency_modulation_frequency,
6450
14
      { "Modulation Frequency", "rdm.pd.modulation_frequency.modulation_frequency",
6451
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6452
14
        NULL, HFILL }},
6453
6454
14
    { &hf_rdm_pd_modulation_frequency_number_of_modulation_frequencies,
6455
14
      { "Number Of Modulation Frequencies", "rdm.pd.modulation_frequency.number_of_modulation_frequencies",
6456
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6457
14
        NULL, HFILL }},
6458
6459
14
    { &hf_rdm_pd_modulation_frequency_description_modulation_frequency,
6460
14
      { "Modulation Frequency", "rdm.pd.modulation_frequency_description.modulation_frequency",
6461
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6462
14
        NULL, HFILL }},
6463
6464
14
    { &hf_rdm_pd_modulation_frequency_description_text,
6465
14
      { "Description", "rdm.pd.modulation_frequency_description.description",
6466
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6467
14
        NULL, HFILL }},
6468
6469
14
    { &hf_rdm_pd_output_response_time_response_time,
6470
14
      { "Response Time", "rdm.pd.response_time.response_time",
6471
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6472
14
        NULL, HFILL }},
6473
6474
14
    { &hf_rdm_pd_output_response_time_number_of_response_times,
6475
14
      { "Number Of Response Times", "rdm.pd.response_time.number_of_response_times",
6476
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6477
14
        NULL, HFILL }},
6478
6479
14
    { &hf_rdm_pd_output_response_time_description_output_response_time,
6480
14
      { "Output Response Time", "rdm.pd.output_response_time_description.output_response_time",
6481
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6482
14
        NULL, HFILL }},
6483
6484
14
    { &hf_rdm_pd_output_response_time_description_text,
6485
14
      { "Description", "rdm.pd.output_response_time_description.description",
6486
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6487
14
        NULL, HFILL }},
6488
6489
14
    { &hf_rdm_pd_preset_info_level_field_supported,
6490
14
      { "Level Field Supported", "rdm.pd.preset_info.level_field_supported",
6491
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6492
14
        NULL, HFILL }},
6493
6494
14
    { &hf_rdm_pd_preset_info_preset_sequence_supported,
6495
14
      { "Preset Sequence Supported", "rdm.pd.preset_info.preset_sequence_supported",
6496
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6497
14
        NULL, HFILL }},
6498
6499
14
    { &hf_rdm_pd_preset_info_split_times_supported,
6500
14
      { "Split Times Supported", "rdm.pd.preset_info.split_times_supported",
6501
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6502
14
        NULL, HFILL }},
6503
6504
14
    { &hf_rdm_pd_preset_info_dmx_fail_infinite_delay_time_supported,
6505
14
      { "DMX Fail Infinite Delay Time Supported", "rdm.pd.preset_info.dmx_fail_infinite_delay_time_supported",
6506
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6507
14
        NULL, HFILL }},
6508
6509
14
    { &hf_rdm_pd_preset_info_dmx_fail_infinite_hold_time_supported,
6510
14
      { "DMX Fail Infinite Hold Time Supported", "rdm.pd.preset_info.dmx_fail_infinite_hold_time_supported",
6511
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6512
14
        NULL, HFILL }},
6513
6514
14
    { &hf_rdm_pd_preset_info_start_up_infinite_hold_time_supported,
6515
14
      { "Start Up_ Infinite Hold Time Supported", "rdm.pd.preset_info.start_up_infinite_hold_time_supported",
6516
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6517
14
        NULL, HFILL }},
6518
6519
14
    { &hf_rdm_pd_preset_info_maximum_scene_number,
6520
14
      { "Maximum Scene Number", "rdm.pd.preset_info.maximum_scene_number",
6521
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6522
14
        NULL, HFILL }},
6523
6524
14
    { &hf_rdm_pd_preset_info_minimum_preset_fade_time_supported,
6525
14
      { "Minimum Preset Fade Time Supported", "rdm.pd.preset_info.minimum_preset_fade_time_supported",
6526
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6527
14
        NULL, HFILL }},
6528
6529
14
    { &hf_rdm_pd_preset_info_maximum_preset_fade_time_supported,
6530
14
      { "Maximum Preset Fade Time Supported", "rdm.pd.preset_info.maximum_preset_fade_time_supported",
6531
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6532
14
        NULL, HFILL }},
6533
6534
14
    { &hf_rdm_pd_preset_info_minimum_preset_wait_time_supported,
6535
14
      { "Minimum Preset Wait Time Supported", "rdm.pd.preset_info.minimum_preset_wait_time_supported",
6536
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6537
14
        NULL, HFILL }},
6538
6539
14
    { &hf_rdm_pd_preset_info_maximum_preset_wait_time_supported,
6540
14
      { "Maximum Preset Wait Time Supported", "rdm.pd.preset_info.maximum_preset_wait_time_supported",
6541
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6542
14
        NULL, HFILL }},
6543
6544
14
    { &hf_rdm_pd_preset_info_minimum_dmx_fail_delay_time_supported,
6545
14
      { "Minimum DMX Fail Delay Time Supported", "rdm.pd.preset_info.minimum_dmx_fail_delay_time_supported",
6546
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6547
14
        NULL, HFILL }},
6548
6549
14
    { &hf_rdm_pd_preset_info_maximum_dmx_fail_delay_time_supported,
6550
14
      { "Maximum DMX Fail Delay Time Supported", "rdm.pd.preset_info.maximum_dmx_fail_delay_time_supported",
6551
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6552
14
        NULL, HFILL }},
6553
6554
14
    { &hf_rdm_pd_preset_info_minimum_dmx_fail_hold_time_supported,
6555
14
      { "Minimum DMX Fail Hold Time Supported", "rdm.pd.preset_info.minimum_dmx_fail_hold_time_supported",
6556
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6557
14
        NULL, HFILL }},
6558
6559
14
    { &hf_rdm_pd_preset_info_maximum_dmx_fail_hold_time_supported,
6560
14
      { "Maximum DMX Fail Hold Time Supported", "rdm.pd.preset_info.maximum_dmx_fail_hold_time_supported",
6561
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6562
14
        NULL, HFILL }},
6563
6564
14
    { &hf_rdm_pd_preset_info_minimum_start_up_delay_time_supported,
6565
14
      { "Minimum Start Up Delay Time Supported", "rdm.pd.preset_info.minimum_start_up_delay_time_supported",
6566
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6567
14
        NULL, HFILL }},
6568
6569
14
    { &hf_rdm_pd_preset_info_maximum_start_up_delay_time_supported,
6570
14
      { "Maximum Start Up Delay Time Supported", "rdm.pd.preset_info.maximum_start_up_delay_time_supported",
6571
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6572
14
        NULL, HFILL }},
6573
6574
14
    { &hf_rdm_pd_preset_info_minimum_start_up_hold_time_supported,
6575
14
      { "Minimum Start Up Hold Time Supported", "rdm.pd.preset_info.minimum_start_up_hold_time_supported",
6576
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6577
14
        NULL, HFILL }},
6578
6579
14
    { &hf_rdm_pd_preset_info_maximum_start_up_hold_time_supported,
6580
14
      { "Maximum Start Up Hold Time Supported", "rdm.pd.preset_info.maximum_start_up_hold_time_supported",
6581
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6582
14
        NULL, HFILL }},
6583
6584
14
    { &hf_rdm_pd_preset_status_scene_number,
6585
14
      { "Scene Number", "rdm.pd.preset_status.scene_number",
6586
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6587
14
        NULL, HFILL }},
6588
6589
14
    { &hf_rdm_pd_preset_status_up_fade_time,
6590
14
      { "Up Fade Time", "rdm.pd.preset_status.up_fade_time",
6591
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6592
14
        NULL, HFILL }},
6593
6594
14
    { &hf_rdm_pd_preset_status_down_fade_time,
6595
14
      { "Down Fade Time", "rdm.pd.preset_status.down_fade_time",
6596
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6597
14
        NULL, HFILL }},
6598
6599
14
    { &hf_rdm_pd_preset_status_wait_time,
6600
14
      { "Wait Time", "rdm.pd.preset_status.wait_time",
6601
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6602
14
        NULL, HFILL }},
6603
6604
14
    { &hf_rdm_pd_preset_status_programmed,
6605
14
      { "Programmed", "rdm.pd.preset_status.programmed",
6606
14
        FT_UINT8, BASE_DEC, VALS(rdm_preset_programmed_vals), 0x0,
6607
14
        NULL, HFILL }},
6608
6609
14
    { &hf_rdm_pd_preset_status_clear_preset,
6610
14
      { "Clear Preset", "rdm.pd.preset_status.clear_preset",
6611
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6612
14
        NULL, HFILL }},
6613
6614
14
    { &hf_rdm_pd_rdm_traffic_enable_endpoint_id,
6615
14
      { "Endpoint ID", "rdm.pd.rdm_traffic_enable.endpoint_id",
6616
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6617
14
        NULL, HFILL }},
6618
6619
14
    { &hf_rdm_pd_rdm_traffic_enable_rdm_enabled,
6620
14
      { "Enabled", "rdm.pd.rdm_traffic_enable.enabled",
6621
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
6622
14
        NULL, HFILL }},
6623
6624
14
    { &hf_rdm_pd_slot_offset,
6625
14
      { "Slot Offset", "rdm.pd.slot_offset",
6626
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6627
14
        NULL, HFILL }},
6628
6629
14
    { &hf_rdm_pd_slot_type,
6630
14
      { "Slot Type", "rdm.pd.slot_type",
6631
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6632
14
        NULL, HFILL }},
6633
6634
14
    { &hf_rdm_pd_slot_label_id,
6635
14
      { "Slot Label ID", "rdm.pd.slot_label_id",
6636
14
        FT_UINT16, BASE_HEX, NULL, 0x0,
6637
14
        NULL, HFILL }},
6638
6639
14
    { &hf_rdm_pd_slot_nr,
6640
14
      { "Slot Nr.", "rdm.pd.slot_nr",
6641
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6642
14
        NULL, HFILL }},
6643
6644
14
    { &hf_rdm_pd_slot_description,
6645
14
      { "Slot Description", "rdm.pd.slot_description",
6646
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6647
14
        NULL, HFILL }},
6648
6649
14
    { &hf_rdm_pd_slot_value,
6650
14
      { "Slot Value", "rdm.pd.slot_value",
6651
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6652
14
        NULL, HFILL }},
6653
6654
14
    { &hf_rdm_pd_static_address_interface_identifier,
6655
14
      { "Interface Identifier", "rdm.pd.static_address.interface_identifier",
6656
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6657
14
        NULL, HFILL }},
6658
6659
14
    { &hf_rdm_pd_static_address_ipv4_address,
6660
14
      { "IPv4 Address", "rdm.pd.static_address.ipv4_address",
6661
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
6662
14
        NULL, HFILL }},
6663
6664
14
    { &hf_rdm_pd_static_address_netmask,
6665
14
      { "Netmask", "rdm.pd.static_address.netmask",
6666
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6667
14
        NULL, HFILL }},
6668
6669
14
    { &hf_rdm_pd_tcp_comms_status_scope_string,
6670
14
      { "Scope String", "rdm.pd.tcp_comms_status.scope_string",
6671
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6672
14
        NULL, HFILL }},
6673
6674
14
    { &hf_rdm_pd_tcp_comms_status_broker_ipv4_address,
6675
14
      { "Broker IPV4 Address", "rdm.pd.tcp_comms_status.broker_ipv4_address",
6676
14
        FT_IPv4, BASE_NONE, NULL, 0x0,
6677
14
        NULL, HFILL }},
6678
6679
14
    { &hf_rdm_pd_tcp_comms_status_broker_ipv6_address,
6680
14
      { "Broker IPV6 Address", "rdm.pd.tcp_comms_status.broker_ipv6_address",
6681
14
        FT_IPv6, BASE_NONE, NULL, 0x0,
6682
14
        NULL, HFILL }},
6683
6684
14
    { &hf_rdm_pd_tcp_comms_status_broker_port,
6685
14
      { "Broker Port", "rdm.pd.tcp_comms_status.broker_port",
6686
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6687
14
        NULL, HFILL }},
6688
6689
14
    { &hf_rdm_pd_tcp_comms_status_unhealthy_tcp_events,
6690
14
      { "Unhealthy TCP Events", "rdm.pd.tcp_comms_status.unhealthy_tcp_events",
6691
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6692
14
        NULL, HFILL }},
6693
6694
14
    { &hf_rdm_pd_zeroconf_mode_interface_identifier,
6695
14
      { "Interface Identifier", "rdm.pd.zeroconf_mode.interface_identifier",
6696
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6697
14
        NULL, HFILL }},
6698
6699
14
    { &hf_rdm_pd_zeroconf_mode_enabled,
6700
14
      { "Enabled", "rdm.pd.zeroconf_mode.enabled",
6701
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6702
14
        NULL, HFILL }},
6703
6704
14
    { &hf_rdm_pd_rec_value_support,
6705
14
      { "Rec. Value Support", "rdm.pd.rec_value_support",
6706
14
        FT_UINT8, BASE_HEX, NULL, 0x0,
6707
14
        NULL, HFILL }},
6708
6709
14
    { &hf_etc_parameter_id,
6710
14
      { "Parameter ID", "rdm.pid",
6711
14
        FT_UINT16, BASE_HEX | BASE_EXT_STRING, &etc_param_id_vals_ext, 0x0,
6712
14
        NULL, HFILL }},
6713
6714
14
    { &hf_etc_pd_parameter_id,
6715
14
      { "ID", "rdm.pd.parameter.id",
6716
14
        FT_UINT16, BASE_HEX, VALS(etc_param_id_vals), 0x0,
6717
14
        NULL, HFILL }},
6718
6719
14
    { &hf_etc_pd_device_model_id,
6720
14
      { "Device Model ID", "rdm.pd.device_model_id",
6721
14
        FT_UINT16, BASE_HEX, VALS(etc_model_id_vals), 0x0,
6722
14
        NULL, HFILL }},
6723
6724
14
    { &hf_etc_pd_led_curve,
6725
14
      { "Curve", "rdm.pd.led_curve.curve",
6726
14
        FT_UINT8, BASE_DEC, VALS(etc_led_curve_vals), 0x0,
6727
14
        NULL, HFILL }},
6728
6729
14
    { &hf_etc_pd_led_curve_description_curve,
6730
14
      { "Curve", "rdm.pd.led_curve_description.curve",
6731
14
        FT_UINT8, BASE_DEC, VALS(etc_led_curve_vals), 0x0,
6732
14
        NULL, HFILL }},
6733
6734
14
    { &hf_etc_pd_led_curve_description_text,
6735
14
      { "Description", "rdm.pd.led_curve_description.description",
6736
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6737
14
        NULL, HFILL }},
6738
6739
14
    { &hf_etc_pd_led_strobe,
6740
14
      { "Strobe", "rdm.pd.led_strobe",
6741
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6742
14
        NULL, HFILL }},
6743
6744
14
    { &hf_etc_pd_led_output_mode,
6745
14
      { "Output Mode", "rdm.pd.led_output_mode",
6746
14
        FT_UINT8, BASE_DEC, VALS(etc_led_output_mode_vals), 0x0,
6747
14
        NULL, HFILL }},
6748
6749
14
    { &hf_etc_pd_led_output_mode_description_mode,
6750
14
      { "Output Mode", "rdm.pd.led_output_mode_description.output_mode",
6751
14
        FT_UINT8, BASE_DEC, VALS(etc_led_output_mode_vals), 0x0,
6752
14
        NULL, HFILL }},
6753
6754
14
    { &hf_etc_pd_led_output_mode_description_text,
6755
14
      { "Description", "rdm.pd.lled_output_mode_description.description",
6756
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6757
14
        NULL, HFILL }},
6758
6759
14
    { &hf_etc_pd_led_red_shift,
6760
14
      { "Red Shift", "rdm.pd.led_red_shift",
6761
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6762
14
        NULL, HFILL }},
6763
6764
14
    { &hf_etc_pd_led_white_point,
6765
14
      { "White Point", "rdm.pd.led_white_point",
6766
14
        FT_UINT8, BASE_DEC, VALS(etc_led_white_point_vals), 0x0,
6767
14
        NULL, HFILL }},
6768
6769
14
    { &hf_etc_pd_led_white_point_description_white_point,
6770
14
      { "White Point", "rdm.pd.led_white_point_description.white_point",
6771
14
        FT_UINT8, BASE_DEC, VALS(etc_led_white_point_vals), 0x0,
6772
14
        NULL, HFILL }},
6773
6774
14
    { &hf_etc_pd_led_white_point_description_text,
6775
14
      { "Description", "rdm.pd.led_white_point_description.description",
6776
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6777
14
        NULL, HFILL }},
6778
6779
14
    { &hf_etc_pd_led_frequency,
6780
14
      { "LED Frequency (Hz)", "rdm.pd.led_frequency",
6781
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6782
14
        NULL, HFILL }},
6783
6784
14
    { &hf_etc_pd_dmx_data_loss_behavior,
6785
14
      { "DMX Data Loss Behavior", "rdm.pd.dmx_data_loss_behavior",
6786
14
        FT_UINT8, BASE_DEC, VALS(etc_dmx_data_loss_vals), 0x0,
6787
14
        NULL, HFILL }},
6788
6789
14
    { &hf_etc_pd_dmx_data_loss_behavior_description_behavior,
6790
14
      { "DMX Data Loss Behavior", "rdm.pd.dmx_data_loss_behavior_description.behavior",
6791
14
        FT_UINT8, BASE_DEC, VALS(etc_dmx_data_loss_vals), 0x0,
6792
14
        NULL, HFILL }},
6793
6794
14
    { &hf_etc_pd_dmx_data_loss_behavior_description_text,
6795
14
      { "Description", "rdm.pd.dmx_data_loss_behavior_description.description",
6796
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6797
14
        NULL, HFILL }},
6798
6799
14
    { &hf_etc_pd_led_plus_seven,
6800
14
      { "LED Plus Seven", "rdm.pd.led_plus_seven",
6801
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6802
14
        NULL, HFILL }},
6803
6804
14
    { &hf_etc_pd_backlight_brightness,
6805
14
      { "Backlight Brightness", "rdm.pd.backlight_brightness",
6806
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6807
14
        NULL, HFILL }},
6808
6809
14
    { &hf_etc_pd_backlight_timeout,
6810
14
      { "Backlight Timeout", "rdm.pd.backlight_timeout",
6811
14
        FT_UINT8, BASE_DEC, VALS(etc_backlight_timeout_vals), 0x0,
6812
14
        NULL, HFILL }},
6813
6814
14
    { &hf_etc_pd_status_indicators,
6815
14
      { "Status Indicators", "rdm.pd.status_indicators",
6816
14
        FT_UINT8, BASE_DEC, VALS(on_off_vals), 0x0,
6817
14
        NULL, HFILL }},
6818
6819
14
    { &hf_etc_pd_overtemp_mode,
6820
14
      { "Overtemp Mode", "rdm.pd.overtemp_mode",
6821
14
        FT_UINT8, BASE_DEC, VALS(etc_overtemp_mode_vals), 0x0,
6822
14
        NULL, HFILL }},
6823
6824
14
    { &hf_etc_pd_simple_setup_mode,
6825
14
      { "Simple Setup Mode", "rdm.pd.simple_setup_mode",
6826
14
        FT_UINT8, BASE_DEC, VALS(etc_simple_setup_mode_vals), 0x0,
6827
14
        NULL, HFILL }},
6828
6829
14
    { &hf_etc_pd_led_strobe_description_strobe,
6830
14
      { "Strobe", "rdm.pd.led_strobe_description.led_strobe",
6831
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6832
14
        NULL, HFILL }},
6833
6834
14
    { &hf_etc_pd_led_strobe_description_text,
6835
14
      { "Description", "rdm.pd.led_strobe_description.description",
6836
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6837
14
        NULL, HFILL }},
6838
6839
14
    { &hf_etc_pd_red_shift_description_red_shift,
6840
14
      { "Red Shift", "rdm.pd.red_shift_description.red_shift",
6841
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6842
14
        NULL, HFILL }},
6843
6844
14
    { &hf_etc_pd_red_shift_description_text,
6845
14
      { "Description", "rdm.pd.red_shift_description.description",
6846
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6847
14
        NULL, HFILL }},
6848
6849
14
    { &hf_etc_pd_plus_seven_description_plus_seven,
6850
14
      { "Plus Seven", "rdm.pd.plus_seven_description.plus_seven",
6851
14
        FT_UINT8, BASE_DEC, VALS(enabled_disabled_vals), 0x0,
6852
14
        NULL, HFILL }},
6853
6854
14
    { &hf_etc_pd_plus_seven_description_text,
6855
14
      { "Description", "rdm.pd.plus_seven_description.description",
6856
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6857
14
        NULL, HFILL }},
6858
6859
14
    { &hf_etc_pd_backlight_timeout_description_timeout,
6860
14
      { "Backlight Timeout", "rdm.pd.backlight_timeout_description.backlight_timeout",
6861
14
        FT_UINT8, BASE_DEC, VALS(etc_backlight_timeout_vals), 0x0,
6862
14
        NULL, HFILL }},
6863
6864
14
    { &hf_etc_pd_backlight_timeout_description_text,
6865
14
      { "Description", "rdm.pd.backlight_timeout_description.description",
6866
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6867
14
        NULL, HFILL }},
6868
6869
14
    { &hf_etc_pd_simple_setup_mode_description_mode,
6870
14
      { "Simple Setup Mode", "rdm.pd.simple_setup_mode_description.mode",
6871
14
        FT_UINT8, BASE_DEC, VALS(etc_simple_setup_mode_vals), 0x0,
6872
14
        NULL, HFILL }},
6873
6874
14
    { &hf_etc_pd_simple_setup_mode_description_text,
6875
14
      { "Description", "rdm.pd.simple_setup_mode_description.description",
6876
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6877
14
        NULL, HFILL }},
6878
6879
14
    { &hf_etc_pd_overtemp_mode_description_mode,
6880
14
      { "Overtemp Mode", "rdm.pd.overtemp_mode_description.mode",
6881
14
        FT_UINT8, BASE_DEC, VALS(etc_overtemp_mode_vals), 0x0,
6882
14
        NULL, HFILL }},
6883
6884
14
    { &hf_etc_pd_overtemp_mode_description_text,
6885
14
      { "Description", "rdm.pd.overtemp_mode_description.description",
6886
14
        FT_STRING, BASE_NONE, NULL, 0x0,
6887
14
        NULL, HFILL }},
6888
6889
14
    { &hf_etc_pd_led_requested_xy_x,
6890
14
      { "X Coordinate", "rdm.pd.led_requested_xy.x",
6891
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6892
14
        NULL, HFILL }},
6893
6894
14
    { &hf_etc_pd_led_requested_xy_y,
6895
14
      { "Y Coordinate", "rdm.pd.led_requested_xy.y",
6896
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6897
14
        NULL, HFILL }},
6898
6899
14
    { &hf_etc_pd_led_current_xy_x,
6900
14
      { "X Coordinate", "rdm.pd.led_current_xy.x",
6901
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6902
14
        NULL, HFILL }},
6903
6904
14
    { &hf_etc_pd_led_current_xy_y,
6905
14
      { "Y Coordinate", "rdm.pd.led_current_xy.y",
6906
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6907
14
        NULL, HFILL }},
6908
6909
14
    { &hf_etc_pd_current_pwm_led_number,
6910
14
      { "LED Number", "rdm.pd.current_pwm.led_number",
6911
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6912
14
        NULL, HFILL }},
6913
6914
14
    { &hf_etc_pd_current_pwm_channel_duty_cycle,
6915
14
      { "Channel Duty Cycle", "rdm.pd.current_pwm.channel_duty_cycle",
6916
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6917
14
        NULL, HFILL }},
6918
6919
14
    { &hf_etc_pd_tristimulus_led_number,
6920
14
      { "LED Number", "rdm.pd.tristimulus.led_number",
6921
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6922
14
        NULL, HFILL }},
6923
6924
14
    { &hf_etc_pd_tristimulus_x,
6925
14
      { "X", "rdm.pd.tristimulus.x",
6926
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6927
14
        NULL, HFILL }},
6928
6929
14
    { &hf_etc_pd_tristimulus_y,
6930
14
      { "Y", "rdm.pd.tristimulus.y",
6931
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6932
14
        NULL, HFILL }},
6933
6934
14
    { &hf_etc_pd_tristimulus_z,
6935
14
      { "Z", "rdm.pd.tristimulus.z",
6936
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
6937
14
        NULL, HFILL }},
6938
6939
14
    { &hf_etc_pd_led_information_led_number,
6940
14
      { "LED Number", "rdm.pd.led_information.led_number",
6941
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6942
14
        NULL, HFILL }},
6943
6944
14
    { &hf_etc_pd_led_information_type,
6945
14
      { "Type", "rdm.pd.led_information.type",
6946
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6947
14
        NULL, HFILL }},
6948
6949
14
    { &hf_etc_pd_led_information_dmx_control_channel,
6950
14
      { "DMX Control Channel", "rdm.pd.led_information.dmx_control_channel",
6951
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6952
14
        NULL, HFILL }},
6953
6954
14
    { &hf_etc_pd_led_information_drive_current,
6955
14
      { "Drive Current (ma)", "rdm.pd.led_information.drive_current",
6956
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6957
14
        NULL, HFILL }},
6958
6959
14
    { &hf_etc_pd_led_information_gamut_polygon_order,
6960
14
      { "Gamut Polygon Order", "rdm.pd.led_information.gamut_polygon_order",
6961
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6962
14
        NULL, HFILL }},
6963
6964
14
    { &hf_etc_pd_led_information_quantity,
6965
14
      { "Quantity", "rdm.pd.led_information.quantity",
6966
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6967
14
        NULL, HFILL }},
6968
6969
14
    { &hf_etc_pd_preset_config_preset_number,
6970
14
      { "Preset Number", "rdm.pd.preset_config.preset_number",
6971
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6972
14
        NULL, HFILL }},
6973
6974
14
    { &hf_etc_pd_preset_config_fade_time,
6975
14
      { "Fade Time (seconds)", "rdm.pd.preset_config.fade_time",
6976
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6977
14
        NULL, HFILL }},
6978
6979
14
    { &hf_etc_pd_preset_config_delay_time,
6980
14
      { "Delay Time (seconds)", "rdm.pd.preset_config.delay_time",
6981
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6982
14
        NULL, HFILL }},
6983
6984
14
    { &hf_etc_pd_preset_config_hue,
6985
14
      { "Hue", "rdm.pd.preset_config.hue",
6986
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
6987
14
        NULL, HFILL }},
6988
6989
14
    { &hf_etc_pd_preset_config_saturation,
6990
14
      { "Saturation", "rdm.pd.preset_config.saturation",
6991
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6992
14
        NULL, HFILL }},
6993
6994
14
    { &hf_etc_pd_preset_config_intensity,
6995
14
      { "Intensity", "rdm.pd.preset_config.intensity",
6996
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
6997
14
        NULL, HFILL }},
6998
6999
14
    { &hf_etc_pd_preset_config_strobe,
7000
14
      { "Strobe", "rdm.pd.preset_config.strobe",
7001
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7002
14
        NULL, HFILL }},
7003
7004
14
    { &hf_etc_pd_sequence_playback_sequence_number,
7005
14
      { "Sequence Number", "rdm.pd.sequence_playback.sequence_number",
7006
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7007
14
        NULL, HFILL }},
7008
7009
14
    { &hf_etc_pd_sequence_config_sequence_number,
7010
14
      { "Sequence Number", "rdm.pd.sequence_config.sequence_number",
7011
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7012
14
        NULL, HFILL }},
7013
7014
14
    { &hf_etc_pd_sequence_config_preset_steps,
7015
14
      { "Preset Steps", "rdm.pd.sequence_config.preset_steps",
7016
14
        FT_NONE, BASE_NONE, NULL, 0x0,
7017
14
        NULL, HFILL }},
7018
7019
14
    { &hf_etc_pd_sequence_config_preset_step,
7020
14
      { "Preset Step", "rdm.pd.sequence_config.preset_step",
7021
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7022
14
        NULL, HFILL }},
7023
7024
14
    { &hf_etc_pd_sequence_config_step_link_times,
7025
14
      { "Step Link Times (seconds)", "rdm.pd.sequence_config.step_link_times",
7026
14
        FT_NONE, BASE_NONE, NULL, 0x0,
7027
14
        NULL, HFILL }},
7028
7029
14
    { &hf_etc_pd_sequence_config_step_link_time,
7030
14
      { "Step Link Time", "rdm.pd.sequence_config.step_link_time",
7031
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7032
14
        NULL, HFILL }},
7033
7034
14
    { &hf_etc_pd_sequence_config_rate,
7035
14
      { "Rate", "rdm.pd.sequence_config.rate",
7036
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7037
14
        NULL, HFILL }},
7038
7039
14
    { &hf_etc_pd_sequence_config_end_state,
7040
14
      { "End State", "rdm.pd.sequence_config.end_state",
7041
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7042
14
        NULL, HFILL }},
7043
7044
14
    { &hf_etc_pd_low_power_timeout,
7045
14
      { "Low Power Timeout", "rdm.pd.low_power_timeout",
7046
14
        FT_UINT8, BASE_DEC, VALS(etc_low_power_timeout_vals), 0x0,
7047
14
        NULL, HFILL }},
7048
7049
14
    { &hf_etc_pd_low_power_timeout_description_timeout,
7050
14
      { "Low Power Timeout", "rdm.pd.low_power_timeout_description.timeout",
7051
14
        FT_UINT8, BASE_DEC, VALS(etc_low_power_timeout_vals), 0x0,
7052
14
        NULL, HFILL }},
7053
7054
14
    { &hf_etc_pd_low_power_timeout_description_text,
7055
14
      { "Description", "rdm.pd.low_power_timeout_description.description",
7056
14
        FT_STRING, BASE_NONE, NULL, 0x0,
7057
14
        NULL, HFILL }},
7058
7059
14
    { &hf_etc_pd_led_enum_frequency,
7060
14
      { "Frequency", "rdm.pd.led_enum_frequency",
7061
14
        FT_UINT8, BASE_DEC, VALS(etc_led_frequency_enum_vals), 0x0,
7062
14
        NULL, HFILL }},
7063
7064
14
    { &hf_etc_pd_led_enum_frequency_description_frequency,
7065
14
      { "Frequency", "rdm.pd.led_enum_frequency_description.frequency",
7066
14
        FT_UINT8, BASE_DEC, VALS(etc_led_frequency_enum_vals), 0x0,
7067
14
        NULL, HFILL }},
7068
7069
14
    { &hf_etc_pd_led_enum_frequency_description_text,
7070
14
      { "Description", "rdm.pd.led_enum_frequency_description.description",
7071
14
        FT_UINT8, BASE_DEC, VALS(etc_led_frequency_enum_vals), 0x0,
7072
14
        NULL, HFILL }},
7073
7074
14
    { &hf_etc_pd_rgbi_preset_config_preset_number,
7075
14
      { "Preset Number", "rdm.pd.rgbi_preset_config.preset_number",
7076
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7077
14
        NULL, HFILL }},
7078
7079
14
    { &hf_etc_pd_rgbi_preset_config_fade_time,
7080
14
      { "Fade Time (seconds)", "rdm.pd.rgbi_preset_config.fade_time",
7081
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7082
14
        NULL, HFILL }},
7083
7084
14
    { &hf_etc_pd_rgbi_preset_config_delay_time,
7085
14
      { "Delay Time (seconds)", "rdm.pd.rgbi_preset_config.delay_time",
7086
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7087
14
        NULL, HFILL }},
7088
7089
14
    { &hf_etc_pd_rgbi_preset_config_red,
7090
14
      { "Red", "rdm.pd.rgbi_preset_config.red",
7091
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7092
14
        NULL, HFILL }},
7093
7094
14
    { &hf_etc_pd_rgbi_preset_config_green,
7095
14
      { "Green", "rdm.pd.rgbi_preset_config.green",
7096
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7097
14
        NULL, HFILL }},
7098
7099
14
    { &hf_etc_pd_rgbi_preset_config_blue,
7100
14
      { "Blue", "rdm.pd.rgbi_preset_config.blue",
7101
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7102
14
        NULL, HFILL }},
7103
7104
14
    { &hf_etc_pd_rgbi_preset_config_intensity,
7105
14
      { "Intensity", "rdm.pd.rgbi_preset_config.intensity",
7106
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7107
14
        NULL, HFILL }},
7108
7109
14
    { &hf_etc_pd_rgbi_preset_config_strobe,
7110
14
      { "Strobe", "rdm.pd.rgbi_preset_config.strobe",
7111
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7112
14
        NULL, HFILL }},
7113
7114
14
    { &hf_etc_pd_cct_preset_config_preset_number,
7115
14
      { "Preset Number", "rdm.pd.cct_preset_config.preset_number",
7116
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7117
14
        NULL, HFILL }},
7118
7119
14
    { &hf_etc_pd_cct_preset_config_fade_time,
7120
14
      { "Fade Time (seconds)", "rdm.pd.cct_preset_config.fade_time",
7121
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7122
14
        NULL, HFILL }},
7123
7124
14
    { &hf_etc_pd_cct_preset_config_delay_time,
7125
14
      { "Delay Time (seconds)", "rdm.pd.cct_preset_config.delay_time",
7126
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7127
14
        NULL, HFILL }},
7128
7129
14
    { &hf_etc_pd_cct_preset_config_white_point,
7130
14
      { "White Point", "rdm.pd.cct_preset_config.white_point",
7131
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7132
14
        NULL, HFILL }},
7133
7134
14
    { &hf_etc_pd_cct_preset_config_tint,
7135
14
      { "Tint", "rdm.pd.cct_preset_config.tint",
7136
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7137
14
        NULL, HFILL }},
7138
7139
14
    { &hf_etc_pd_cct_preset_config_strobe,
7140
14
      { "Strobe", "rdm.pd.cct_preset_config.strobe",
7141
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7142
14
        NULL, HFILL }},
7143
7144
14
    { &hf_etc_pd_cct_preset_config_intensity,
7145
14
      { "Intensity", "rdm.pd.cct_preset_config.intensity",
7146
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7147
14
        NULL, HFILL }},
7148
7149
14
    { &hf_etc_pd_cct_preset_config_tone,
7150
14
      { "Tone", "rdm.pd.cct_preset_config.tone",
7151
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7152
14
        NULL, HFILL }},
7153
7154
14
    { &hf_etc_pd_cct_preset_config_reserved,
7155
14
      { "Reserved", "rdm.pd.cct_preset_config.reserved",
7156
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
7157
14
        NULL, HFILL }},
7158
7159
14
    { &hf_etc_pd_supplementary_device_version_param_index,
7160
14
      { "Param Index", "rdm.pd.supplementary_device_version.param_index",
7161
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7162
14
        NULL, HFILL }},
7163
7164
14
    { &hf_etc_pd_supplementary_device_version_param_description,
7165
14
      { "Param Description", "rdm.pd.supplementary_device_version.param_description",
7166
14
        FT_BYTES, BASE_NONE, NULL, 0x0,
7167
14
        NULL, HFILL }},
7168
7169
14
    { &hf_etc_pd_power_command,
7170
14
      { "State", "rdm.pd.power_command",
7171
14
        FT_UINT8, BASE_DEC, VALS(on_off_vals), 0x0,
7172
14
        NULL, HFILL }},
7173
7174
14
    { &hf_etc_pd_power_command_description_state,
7175
14
      { "State", "rdm.pd.power_command_description.state",
7176
14
        FT_UINT8, BASE_DEC, VALS(on_off_vals), 0x0,
7177
14
        NULL, HFILL }},
7178
7179
14
    { &hf_etc_pd_power_command_description_text,
7180
14
      { "Description", "rdm.pd.power_command_description.description",
7181
14
        FT_STRING, BASE_NONE, NULL, 0x0,
7182
14
        NULL, HFILL }},
7183
7184
14
    { &hf_etc_pd_dali_short_address,
7185
14
      { "Short Address", "rdm.pd.dali_short_address",
7186
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7187
14
        NULL, HFILL }},
7188
7189
14
    { &hf_etc_pd_dali_group_membership,
7190
14
      { "Group Membership", "rdm.pd.dali_group_membership",
7191
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7192
14
        NULL, HFILL }},
7193
7194
14
    { &hf_etc_pd_auto_bind,
7195
14
      { "Auto Bind", "rdm.pd.auto_bind",
7196
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
7197
14
        NULL, HFILL }},
7198
7199
14
    { &hf_etc_pd_packet_delay,
7200
14
      { "Packet Delay", "rdm.pd.packet_delay",
7201
14
        FT_UINT8, BASE_DEC, NULL, 0x0,
7202
14
        NULL, HFILL }},
7203
7204
14
    { &hf_etc_pd_has_enum_text_pid,
7205
14
      { "PID", "rdm.pd.has_enum_text.pid",
7206
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7207
14
        NULL, HFILL }},
7208
7209
14
    { &hf_etc_pd_has_enum_text_true_false,
7210
14
      { "Value", "rdm.pd.has_enum_text.value",
7211
14
        FT_UINT8, BASE_DEC, VALS(true_false_vals), 0x0,
7212
14
        NULL, HFILL }},
7213
7214
14
    { &hf_etc_pd_get_enum_text_pid,
7215
14
      { "PID", "rdm.pd.get_enum_text.pid",
7216
14
        FT_UINT16, BASE_DEC, NULL, 0x0,
7217
14
        NULL, HFILL }},
7218
7219
14
    { &hf_etc_pd_get_enum_text_enum,
7220
14
      { "Enum", "rdm.pd.get_enum_text.enum",
7221
14
        FT_UINT32, BASE_DEC, NULL, 0x0,
7222
14
        NULL, HFILL }},
7223
7224
14
    { &hf_etc_pd_get_enum_text_description,
7225
14
      { "Description", "rdm.pd.get_enum_text.description",
7226
14
        FT_STRING, BASE_NONE, NULL, 0x0,
7227
14
        NULL, HFILL }},
7228
7229
14
  };
7230
7231
14
  static int *ett[] = {
7232
14
    &ett_rdm,
7233
14
    &ett_rdm_uid,
7234
14
    &ett_etc_sequence_config_steps,
7235
14
    &ett_etc_sequence_config_times
7236
14
  };
7237
7238
14
  static ei_register_info ei[] = {
7239
14
    { &ei_rdm_checksum, { "rdm.bad_checksum", PI_CHECKSUM, PI_ERROR, "Bad checksum", EXPFILL }},
7240
14
  };
7241
7242
14
  expert_module_t* expert_rdm;
7243
7244
14
  proto_rdm = proto_register_protocol("Remote Device Management", "RDM", "rdm");
7245
14
  proto_register_field_array(proto_rdm, hf, array_length(hf));
7246
14
  proto_register_subtree_array(ett, array_length(ett));
7247
14
  rdm_handle = register_dissector("rdm", dissect_rdm, proto_rdm);
7248
14
  expert_rdm = expert_register_protocol(proto_rdm);
7249
14
  expert_register_field_array(expert_rdm, ei, array_length(ei));
7250
14
}
7251
7252
void
7253
14
proto_reg_handoff_rdm(void) {
7254
14
  dissector_add_uint("dmx", 0xCC, rdm_handle);
7255
14
}
7256
7257
/*
7258
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
7259
 *
7260
 * Local variables:
7261
 * c-basic-offset: 8
7262
 * tab-width: 8
7263
 * indent-tabs-mode: t
7264
 * End:
7265
 *
7266
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
7267
 * :indentSize=8:tabSize=8:noTabs=false:
7268
 */