2 * Routines for R3 packet dissection
3 * Copyright (c) 2009 Assa Abloy USA <jcwren[AT]assaabloyusa.com>
5 * R3 is an electronic lock management protocol for configuring operational
6 * parameters, adding/removing/altering users, dumping log files, etc.
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include <epan/packet.h>
18 #include <epan/expert.h>
20 #include <epan/crc16-tvb.h>
21 #include "packet-tcp.h"
23 void proto_register_r3(void);
24 void proto_reg_handoff_r3(void);
30 #define MAX_USERS 2400
31 #define MAX_TIMEZONES 32
32 #define MAX_EXCEPTIONS 64
33 #define MAX_EXCEPTIONGROUPS 64
34 #define MAX_EVENTENTRIES 10000
35 #define MAX_DECLINEDENTRIES 500
36 #define MAX_ALARMENTRIES 200
44 ACCESSMODE_NONE
= 0, /* 0 - No access mode (not used, not legal, I think) */
45 ACCESSMODE_PRIMARYONLY
, /* 1 - Primary only */
46 ACCESSMODE_PRIMARYORAUX
, /* 2 - Primary or aux field */
47 ACCESSMODE_PRIMARYANDAUX
, /* 3 - Primary and aux field */
48 ACCESSMODE_PRIMARYTHENAUX
, /* 4 - Primary required first, then aux */
49 ACCESSMODE_LAST
/* 5 - Dummy, for range checking */
55 ADDUSERPARAMTYPE_DISPOSITION
= 0, /* 0 - What we're supposed to do (add, delete, etc) */
56 ADDUSERPARAMTYPE_USERNO
, /* 1 - User to manage (user number, U16) */
57 ADDUSERPARAMTYPE_ACCESSALWAYS
, /* 2 - Access always (boolean) */
58 ADDUSERPARAMTYPE_ACCESSMODE
, /* 3 - Access type (accessMode_e) */
59 ADDUSERPARAMTYPE_CACHED
, /* 4 - Entry is managed by cache system (boolean) */
60 ADDUSERPARAMTYPE_USERTYPE
, /* 5 - User type (userType_e) */
61 ADDUSERPARAMTYPE_PRIMARYFIELD
, /* 6 - Primary field (MAX_CREDENTIALBYTES) */
62 ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
, /* 7 - Primary field type (fieldType_e); */
63 ADDUSERPARAMTYPE_AUXFIELD
, /* 8 - Auxiliary field (MAX_CREDENTIALBYTES) */
64 ADDUSERPARAMTYPE_AUXFIELDTYPE
, /* 9 - Auxiliary field type (fieldType_e) */
65 ADDUSERPARAMTYPE_TIMEZONE
, /* 10 - Timezone bitmap (U32) */
66 ADDUSERPARAMTYPE_EXPIREON
, /* 11 - Date on which user no longer granted access, if non-0 */
67 ADDUSERPARAMTYPE_USECOUNT
, /* 12 - Use count */
68 ADDUSERPARAMTYPE_EXCEPTIONGROUP
, /* 13 - Exception group */
75 ALARMID_NONE
= 0, /* 0 - No alarm */
76 ALARMID_VALIDIN
, /* 1 - Valid entry */
77 ALARMID_DENIEDACCESS
, /* 2 - Denied access (bad credential) */
78 ALARMID_SECURED
, /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
79 ALARMID_DOORFORCED
, /* 4 - Door forced */
80 ALARMID_KEYOVERRIDE
, /* 5 - Key override */
81 ALARMID_INVALIDENTRY
, /* 6 - Door open but invalid entry (key used?) */
82 ALARMID_DOORAJAR
, /* 7 - Door ajar (needs .ja woman with Engrish accent) */
83 ALARMID_LOWBATTERY
, /* 8 - Low battery alarm */
84 ALARMID_RXHELD
, /* 9 - RX held */
91 CAPABILITIES_USERS
= 0, /* 0 - Number of users supported */
92 CAPABILITIES_TIMEZONES
, /* 1 - Number of timezone supported */
93 CAPABILITIES_EXCEPTIONS
, /* 2 - Number of exceptions supported */
94 CAPABILITIES_EXCEPTIONGROUPS
, /* 3 - Number of exception groups supported */
95 CAPABILITIES_EVENTLOG
, /* 4 - Number of event log entries supported */
96 CAPABILITIES_DECLINEDLOG
, /* 5 - Number of declined log entries supported */
97 CAPABILITIES_ALARMLOG
, /* 6 - Number of alarm log entries supported */
98 CAPABILITIES_TOTALEVENTS
, /* 7 - Total events (EVENT_LAST - 1) */
105 CHECKSUMRESULT_CONFIGURATIONNVRAM
= 0, /* 0 - Checksum results of the configuration NVRAM */
106 CHECKSUMRESULT_EXCEPTIONS
, /* 1 - Checksum results of the exceptions NVRAM */
107 CHECKSUMRESULT_EXCEPTIONGROUPS
, /* 2 - Checksum results of the exception groups NVRAM */
108 CHECKSUMRESULT_TZCALENDARS
, /* 3 - Checksum results of the time zone calendar NVRAM */
109 CHECKSUMRESULT_TIMEZONES
, /* 4 - Checksum results of the time zone NVRAM */
110 CHECKSUMRESULT_USERS
, /* 5 - Checksum results of the users NVRAM */
111 CHECKSUMRESULT_CACHELRU
, /* 6 - Checksum results of the cache LRU */
118 CMD_RESPONSE
= 0, /* 0 - Response to command */
119 CMD_HANDSHAKE
, /* 1 - Establish session */
120 CMD_KILLSESSION
, /* 2 - Kill session */
121 CMD_QUERYSERIALNUMBER
, /* 3 - Query serial number */
122 CMD_QUERYVERSION
, /* 4 - Query version */
123 CMD_SETDATETIME
, /* 5 - Set date and time */
124 CMD_QUERYDATETIME
, /* 6 - Query date and time */
125 CMD_SETCONFIG
, /* 7 - Set configuration options */
126 CMD_GETCONFIG
, /* 8 - Read configuration options */
127 CMD_MANAGEUSER
, /* 9 - Manage users (add/delete/replace/update) */
128 CMD_DELETEUSERS
, /* 10 - Delete users (all/most/cached) */
129 CMD_DEFINEEXCEPTION
, /* 11 - Define exception (old block holiday) */
130 CMD_DEFINEEXCEPTIONGROUP
, /* 12 - Define exception group */
131 CMD_DEFINECALENDAR
, /* 13 - Define calendar */
132 CMD_DEFINETIMEZONE
, /* 14 - Define time zone */
133 CMD_RMTAUTHRETRY
, /* 15 - Remote authorization retry */
134 CMD_FILTERS
, /* 16 - Event log filter configuration */
135 CMD_ALARMCONFIGURE
, /* 17 - Alarm condition configuration */
136 CMD_EVENTLOGDUMP
, /* 18 - Dump event log */
137 CMD_DECLINEDLOGDUMP
, /* 19 - Dump declined log */
138 CMD_ALARMLOGDUMP
, /* 20 - Dump alarm log */
139 CMD_DOWNLOADFIRMWARE
, /* 21 - Download firmware */
140 CMD_DOWNLOADFIRMWARETIMEOUT
, /* 22 - Download firmware timeout (internal command only) */
141 CMD_POWERTABLESELECTION
, /* 23 - Power table selection */
142 CMD_CLEARNVRAM
, /* 24 - Clear nvram (config/event log/declined log/etc) */
143 CMD_DPAC
, /* 25 - DPAC manipulation commands */
144 CMD_SELFTEST
, /* 26 - Selftest (heh) */
145 CMD_RESET
, /* 27 - Restart controller */
146 CMD_LOGWRITE
, /* 28 - Write event to event log */
147 CMD_MFGCOMMAND
, /* 29 - Manufacturing commands */
148 CMD_NVRAMBACKUP
, /* 30 - Backup/restore/erase NVRAM */
149 CMD_EXTENDEDRESPONSE
, /* 31 - Response to command (extended version) */
156 CMDMFG_SETSERIALNUMBER
= 0, /* 0 - Set serial number */
157 CMDMFG_SETCRYPTKEY
, /* 1 - Set encryption key */
158 CMDMFG_DUMPNVRAM
, /* 2 - Dump NVRAM */
159 CMDMFG_TERMINAL
, /* 3 - DPAC terminal mode */
160 CMDMFG_REMOTEUNLOCK
, /* 4 - Remote unlock (only on 'd' builds) */
161 CMDMFG_AUXCTLRVERSION
, /* 5 - Request version of auxiliary controller */
162 CMDMFG_IOPINS
, /* 6 - Read I/O pin states */
163 CMDMFG_ADCS
, /* 7 - Read ADC values */
164 CMDMFG_HARDWAREID
, /* 8 - Read hardware ID and CPU ID */
165 CMDMFG_CHECKPOINTLOGDUMP
, /* 9 - Dump checkpoint log */
166 CMDMFG_CHECKPOINTLOGCLEAR
, /* 10 - Clear checkpoint log */
167 CMDMFG_READREGISTERS
, /* 11 - Read selected CPU registers */
168 CMDMFG_FORCEOPTIONS
, /* 12 - Force I/O lines to certain states */
169 CMDMFG_COMMUSER
, /* 13 - Fake a comm user entry */
170 CMDMFG_DUMPKEYPAD
, /* 14 - Dump keypad debugging buffer */
171 CMDMFG_BATTERYCHECK
, /* 15 - Force battery check */
172 CMDMFG_RAMREFRESH
, /* 16 - Refresh RAM variables from NVRAM */
173 CMDMFG_TASKFLAGS
, /* 17 - Dump task flags */
174 CMDMFG_TIMERCHAIN
, /* 18 - Dump active timer chains */
175 CMDMFG_PEEKPOKE
, /* 19 - Peek/poke CPU RAM memory */
176 CMDMFG_LOCKSTATE
, /* 20 - Display global gLockState variable */
177 CMDMFG_CAPABILITIES
, /* 21 - Read firmware capabilities (# users/event log entries, etc) */
178 CMDMFG_DUMPM41T81
, /* 22 - Dump M41T81 RTC registers */
179 CMDMFG_DEBUGLOGDUMP
, /* 23 - Dump debugging log */
180 CMDMFG_DEBUGLOGCLEAR
, /* 24 - Clear debugging log */
181 CMDMFG_TESTWDT
, /* 25 - Test watchdog */
182 CMDMFG_QUERYCKSUM
, /* 26 - Query NVRAM checksum value */
183 CMDMFG_VALIDATECHECKSUMS
, /* 27 - Validate checksums */
184 CMDMFG_REBUILDLRUCACHE
, /* 28 - Rebuild LRC cache */
185 CMDMFG_TZUPDATE
, /* 29 - Send TZCHANGE to tod.c */
186 CMDMFG_TESTPRESERVE
, /* 30 - Test preserve save/restore code */
187 CMDMFG_MORTISESTATELOGDUMP
, /* 31 - Dump the mortise state log */
188 CMDMFG_MORTISESTATELOGCLEAR
, /* 32 - Clear the mortise state log */
189 CMDMFG_MORTISEPINS
, /* 33 - Display current mortise pin status */
190 CMDMFG_HALTANDCATCHFIRE
, /* 34 - Stop processor (optionally catch fire) */
197 CONFIGITEM_SERIAL_NUMBER
= 0, /* 0 - Ye olde serial number */
198 CONFIGITEM_CRYPT_KEY
, /* 1 - The encryption/decryption key */
199 CONFIGITEM_HARDWARE_OPTIONS_MFG
, /* 2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
200 CONFIGITEM_HARDWARE_OPTIONS
, /* 3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
201 CONFIGITEM_NVRAM_CHANGES
, /* 4 - Log of NVRAM changes since reset (which blocks were reset) */
203 CONFIGITEM_NVRAMDIRTY
, /* 5 - NVRAM is (or might be) dirty */
204 CONFIGITEM_NVRAM_WV
, /* 6 - NVRAM write verify (I2C parts only) */
205 CONFIGITEM_ENABLE_WDT
, /* 7 - If true, and OPT_WATCHDOG enabled, enables WDT */
206 CONFIGITEM_EARLY_ACK
, /* 8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
207 CONFIGITEM_CONSOLE_AES_ONLY
, /* 9 - If set, requires AES encryption on serial communications */
208 CONFIGITEM_RADIO_AES_ONLY
, /* 10 - If set, requires AES encryption on radio communications */
209 CONFIGITEM_NDRLE
, /* 11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
210 CONFIGITEM_SOMF
, /* 12 - Stop on mortise failure */
211 CONFIGITEM_NOGAF
, /* 13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
212 CONFIGITEM_CARD_READER_POWER
, /* 14 - External mag reader power supply control */
213 CONFIGITEM_PROX_ENABLE
, /* 15 - Prox into permanent sleep mode */
214 CONFIGITEM_CKSUMCONFIG
, /* 16 - Configuration NVRAM checksum enable/disable */
215 CONFIGITEM_DAILY_BATTERY_CHECK
, /* 17 - Enable/disable daily battery check */
216 CONFIGITEM_DAILY_BATTERY_CHECK_HOUR
, /* 18 - If daily battery check enabled, top of the hour to check at */
217 CONFIGITEM_BATTERY_LOW
, /* 19 - Return low battery status (true = low) */
219 CONFIGITEM_LRU_HEAD
, /* 20 - Cache LRU head pointer */
220 CONFIGITEM_LRU_TAIL
, /* 21 - Cache LRU tail pointer */
221 CONFIGITEM_RTC_CALIBRATION
, /* 22 - Signed 6 bit value written to M41T81 calibration register */
222 CONFIGITEM_ACVREQUESTER
, /* 23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
223 CONFIGITEM_LOCAL_LED
, /* 24 - Local LED function assignment */
225 CONFIGITEM_ERRCNT_XORLEN
, /* 25 - Error counter for XOR length not matching in protocol.c */
226 CONFIGITEM_ERRCNT_CRC
, /* 26 - Error counter for bad CRC in protocol.c */
227 CONFIGITEM_ERRCNT_NOTSIGIL
, /* 27 - Error counter for character received was not sigil in protocol.c */
228 CONFIGITEM_ERRCNT_TIMEOUT
, /* 28 - Error counter for timeout in protocol.c */
229 CONFIGITEM_ERRCNT_TOOLONG
, /* 29 - Error counter for packet too long in protocol.c */
230 CONFIGITEM_ERRCNT_TOOSHORT
, /* 30 - Error counter for packet too short in protocol.c */
231 CONFIGITEM_ERRCNT_HITDEFAULT
, /* 31 - Error counter for hitting default handler in protocol.c */
232 CONFIGITEM_ERRCNT_OVERRUN
, /* 32 - Error counter for serial buffer overrun in serial.c */
233 CONFIGITEM_ERRCNT_UARTFE
, /* 33 - Error counter for UART framing error in serial.c */
234 CONFIGITEM_ERRCNT_UARTOE
, /* 34 - Error counter for UART overrun error in serial.c */
236 CONFIGITEM_DST_SET
, /* 35 - Daylight savings time currently active */
237 CONFIGITEM_DST_MODE
, /* 36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
238 CONFIGITEM_DST_FORWARD_MONTH
, /* 37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
239 CONFIGITEM_DST_FORWARD_DOM
, /* 38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
240 CONFIGITEM_DST_FORWARD_OOD
, /* 39 - Occurrence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5) (DSTMODE_REPEATINGDOW) */
241 CONFIGITEM_DST_FORWARD_DOW
, /* 40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
242 CONFIGITEM_DST_FORWARD_HOUR
, /* 41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
243 CONFIGITEM_DST_FORWARD_MINUTE
, /* 42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
244 CONFIGITEM_DST_FORWARD_ADJUST
, /* 43 - Number of minutes to move forward */
245 CONFIGITEM_DST_BACK_MONTH
, /* 44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
246 CONFIGITEM_DST_BACK_DOM
, /* 45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
247 CONFIGITEM_DST_BACK_OOD
, /* 46 - Occurrence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5) (DSTMODE_REPEATINGDOW) */
248 CONFIGITEM_DST_BACK_DOW
, /* 47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
249 CONFIGITEM_DST_BACK_HOUR
, /* 48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
250 CONFIGITEM_DST_BACK_MINUTE
, /* 49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
251 CONFIGITEM_DST_BACK_ADJUST
, /* 50 - Number of minutes to move backwards */
253 CONFIGITEM_EVENTLOG_ZEROMEM
, /* 51 - If set, event log memory is zeroed when event log cleared */
254 CONFIGITEM_EVENTLOG_BEGIN
, /* 52 - Beginning record number when event log cleared */
255 CONFIGITEM_EVENTLOG_RECORD
, /* 53 - Next event log record to write */
256 CONFIGITEM_EVENTLOG_ENTRIES
, /* 54 - Number of entries in event log */
257 CONFIGITEM_EVENTLOG_WARNDEVICE
, /* 55 - Event log warning device */
258 CONFIGITEM_EVENTLOG_WARNEVERY
, /* 56 - Warn at every 'n' records (more or less) */
259 CONFIGITEM_EVENTLOG_RMTDEVICE
, /* 57 - Device event log entries copied to (fromDevice_e) */
261 CONFIGITEM_DECLINEDLOG_ZEROMEM
, /* 58 - If set, declined log memory is zeroed when declined log cleared */
262 CONFIGITEM_DECLINEDLOG_BEGIN
, /* 59 - Beginning record number when declined log cleared */
263 CONFIGITEM_DECLINEDLOG_RECORD
, /* 60 - Next declined log record to write */
264 CONFIGITEM_DECLINEDLOG_ENTRIES
, /* 61 - Number of entries in declined log */
265 CONFIGITEM_DECLINEDLOG_WARNDEVICE
, /* 62 - Declined record warning device */
266 CONFIGITEM_DECLINEDLOG_WARNEVERY
, /* 63 - Warn at every 'n' records (more or less) */
267 CONFIGITEM_DECLINEDLOG_RMTDEVICE
, /* 64 - Device declined entries copied to (fromDevice_e) */
269 CONFIGITEM_ALARMLOG_ZEROMEM
, /* 65 - If set, alarm log memory is zeroed when alarm log cleared */
270 CONFIGITEM_ALARMLOG_BEGIN
, /* 66 - Beginning record number when alarm log cleared */
271 CONFIGITEM_ALARMLOG_RECORD
, /* 67 - Next alarm log record to write */
272 CONFIGITEM_ALARMLOG_ENTRIES
, /* 68 - Number of entries in alarm log */
273 CONFIGITEM_ALARMLOG_WARNDEVICE
, /* 69 - Alarm record warning device */
274 CONFIGITEM_ALARMLOG_WARNEVERY
, /* 70 - Warn at every 'n' records (more or less) */
275 CONFIGITEM_ALARMLOG_RMTDEVICE
, /* 71 - Device alarm entries copied to (fromDevice_e) */
277 CONFIGITEM_VISIBLE_FEEDBACK
, /* 72 - Visible feedback on keypad presses enabled */
278 CONFIGITEM_AUDIBLE_FEEDBACK
, /* 73 - Audible feedback on keypad presses enabled */
279 CONFIGITEM_VISIBLE_INDICATORS
, /* 74 - Visible indicators on all actions (run dark) */
280 CONFIGITEM_AUDIBLE_INDICATORS
, /* 75 - Audible indicators on all actions (run silent) */
281 CONFIGITEM_2NDPINDURATION
, /* 76 - Number of seconds to wait for second PIN */
282 CONFIGITEM_LOCKOUT_ATTEMPTS
, /* 77 - Number of pin/prox/magcard attempts before lockout */
283 CONFIGITEM_LOCKOUT_DURATION
, /* 78 - Duration of lockout, in penta-seconds */
284 CONFIGITEM_KEYPAD_INACTIVITY
, /* 79 - Duration in seconds with no key entries before key buffer cleared */
285 CONFIGITEM_ICIDLE_DURATION
, /* 80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
286 CONFIGITEM_WRITE_DECLINED_LOG
, /* 81 - Declined log writing enable/disable */
287 CONFIGITEM_LOW_BATTERY_INDICATOR
, /* 82 - Low battery audio/visual indicator enable/disable */
289 CONFIGITEM_PANIC_MODE
, /* 83 - Enable/disable panic mode */
291 CONFIGITEM_TIMEZONE_ENABLE
, /* 84 - Timezones enabled (applies to users, not passage modes) */
292 CONFIGITEM_EXCEPTION_ENABLE
, /* 85 - Exceptions enabled (applies to users and passage modes) */
293 CONFIGITEM_AUTOUNLOCK_ENABLE
, /* 86 - Auto-unlocking (schedule based) enabled */
295 CONFIGITEM_LOCK_PRIORITY_EMERGENCY
, /* 87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
296 CONFIGITEM_LOCK_PRIORITY_SUPERVISOR
, /* 88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
297 CONFIGITEM_LOCK_PRIORITY_USER
, /* 89 - DPAC/PWM lock priority for users (lockPriority_e) */
298 CONFIGITEM_LOCK_PRIORITY_PASSAGE
, /* 90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
299 CONFIGITEM_LOCK_PRIORITY_PANIC
, /* 91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
300 CONFIGITEM_LOCK_PRIORITY_LOCKOUT
, /* 92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
301 CONFIGITEM_LOCK_PRIORITY_RELOCK
, /* 93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
302 CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN
, /* 94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
303 CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE
, /* 95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
304 CONFIGITEM_LOCK_PRIORITY_REMOTE
, /* 96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
305 CONFIGITEM_LOCK_TYPE
, /* 97 - Type of lock (PWM, electric, magnetic) */
306 CONFIGITEM_DOUBLE_PULSE
, /* 98 - Lock double pulse enabled */
307 CONFIGITEM_DOUBLE_DELAY
, /* 99 - Delay between double pulses, in centiseconds */
308 CONFIGITEM_MOTOR_DURATION
, /* 100 - Duration lock motor to run, in centiseconds */
309 CONFIGITEM_MORTISE_TYPE
, /* 101 - Type of mortise connected to controller */
310 CONFIGITEM_UNLOCK_TIME
, /* 102 - Normal unlock duration in seconds */
311 CONFIGITEM_EXT_UNLOCK_TIME
, /* 103 - Extended unlock duration, in seconds */
312 CONFIGITEM_DOOR_AJAR_TIME
, /* 104 - Time before door considered stuck open, in seconds */
314 CONFIGITEM_SESSION_TIMEOUT
, /* 105 - Session timeout, in seconds */
315 CONFIGITEM_RETRY_ON_TIMEOUT
, /* 106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
317 CONFIGITEM_UNSOLICITED_ENCRYPT
, /* 107 - Unsolicited messages are encrypted (encryptionScheme_e) */
318 CONFIGITEM_RMT_AUTH_TIMEOUT
, /* 108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
319 CONFIGITEM_RMT_AUTH_DEVICE
, /* 109 - Device remote authorization requests sent over (fromDevice_e) */
320 CONFIGITEM_ALARM_DEVICE
, /* 110 - Device alarm condition connects via */
321 CONFIGITEM_NOTIFY_DEVICE
, /* 111 - Notify user device */
322 CONFIGITEM_COMMUSER_DEVICE
, /* 112 - Device comm user connects via */
323 CONFIGITEM_SCHEDULER_DEVICE
, /* 113 - Device scheduler connects via */
325 CONFIGITEM_SCHEDULER_TYPE
, /* 114 - Scheduling algorithm to use (schedulerType_e) */
326 CONFIGITEM_SCHEDULER_AWAKE
, /* 115 - Number of decaseconds scheduler is awake for */
327 CONFIGITEM_SCHEDULER_PERIOD
, /* 116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
328 CONFIGITEM_SCHEDULER_HOD
, /* 117 - Hour of day map (SCHEDULERTYPE_HOD) */
329 CONFIGITEM_SCHEDULER_DOW
, /* 118 - Day of month map (SCHEDULERTYPE_DOW) */
330 CONFIGITEM_SCHEDULER_DOM
, /* 119 - Day of month map (SCHEDULERTYPE_DOM) */
331 CONFIGITEM_SCHEDULER_HM1
, /* 120 - On at hour:minute #1 */
332 CONFIGITEM_SCHEDULER_HM2
, /* 121 - On at hour:minute #2 */
333 CONFIGITEM_SCHEDULER_HM3
, /* 122 - On at hour:minute #3 */
334 CONFIGITEM_SCHEDULER_HM4
, /* 123 - On at hour:minute #4 */
336 CONFIGITEM_RADIO_TYPE
, /* 124 - Radio type (None, DPAC, WiPort, etc) */
337 CONFIGITEM_RADIO_MODE
, /* 125 - Radio mode (DPAC=active/passive) */
338 CONFIGITEM_RADIO_TIMEOUT
, /* 126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
339 CONFIGITEM_RADIO_ATTEMPTS
, /* 127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
340 CONFIGITEM_RADIO_HOUSEKEEPING
, /* 128 - Time we allow for radio housekeeping (associate with AP, etc) */
341 CONFIGITEM_RADIO_LEAPUSERNAME
, /* 129 - LEAP username */
342 CONFIGITEM_RADIO_LEAPPASSWORD
, /* 130 - LEAP password */
344 CONFIGITEM_INHIBIT_VOLTAGE
, /* 131 - Voltage when battery is considered dead */
345 CONFIGITEM_LOW_VOLTAGE
, /* 132 - Voltage when battery is considered low */
346 CONFIGITEM_PT_RANGE_1
, /* 133 - Power table for 0.00 to 5.99 volts */
347 CONFIGITEM_PT_RANGE_2
, /* 134 - Power table for 6.00 to 6.49 volts */
348 CONFIGITEM_PT_RANGE_3
, /* 135 - Power table for 6.50 to 6.99 volts */
349 CONFIGITEM_PT_RANGE_4
, /* 136 - Power table for 7.00 to 7.49 volts */
350 CONFIGITEM_PT_RANGE_5
, /* 137 - Power table for 7.50 to 7.99 volts */
351 CONFIGITEM_PT_RANGE_6
, /* 138 - Power table for 8.00 to 8.49 volts */
352 CONFIGITEM_PT_RANGE_7
, /* 139 - Power table for 8.50 to 8.99 volts */
353 CONFIGITEM_PT_RANGE_8
, /* 140 - Power table for 9.00 and up volts */
355 CONFIGITEM_MAGCARD_IFS
, /* 141 - Include field separator character in returned data */
356 CONFIGITEM_MAGCARD_FIELDS
, /* 142 - Mag card fields to include */
357 CONFIGITEM_MAGCARD_OFFSET
, /* 143 - Offset into concatenated field */
358 CONFIGITEM_MAGCARD_DIGITS
, /* 144 - Number of digits to return past offset */
360 CONFIGITEM_ALARMS
, /* 145 - Alarms (not writable) */
361 CONFIGITEM_FILTERS
, /* 146 - Event filter storage (not writable) */
362 CONFIGITEM_ALARMSTATE
, /* 147 - Current alarm state (alarmID_e) */
363 CONFIGITEM_DOORSTATE
, /* 148 - Current door state (doorState_e) */
365 CONFIGITEM_DPACDEBUG
, /* 149 - Enable DPAC debug events to event log */
366 CONFIGITEM_FAILOPENSECURE
, /* 150 - Fail open (false) or secure (true) on battery dead */
368 CONFIGITEM_REPLACED_VOLTAGE
, /* 151 - If battery above this voltage, it's been replaced */
370 CONFIGITEM_RX_HELD_TIME
, /* 152 - If RX held longer than this, sent RX held alarm */
371 CONFIGITEM_PACKET_TIMEOUT
, /* 153 - Time (in seconds) that a complete packet must arrive in */
373 CONFIGITEM_EXTENDEDRESPONSE
, /* 154 - Enables extended response (which includes original sequence number) */
374 CONFIGITEM_PASSAGEMODEINDICATOR
, /* 155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
376 CONFIGITEM_PFMRETURNTIME
, /* 156 - Number of seconds power must be present to exit power fail death loop */
378 CONFIGITEM_LAST
/* Must be last item defined (All non-virtual items added above) */
380 #if 0 /* XXX: unused ? */
382 CONFIGITEM_MAGIC_FIRST
= 239, /* Next item is first magic command */
383 CONFIGITEM_MAGIC_USERFIELD
, /* 240 - Virtual command to delete PIN '8989', add user '8989' */
384 CONFIGITEM_MAGIC_USERADD
, /* 241 - Virtual command to add a user (PIN only) */
385 CONFIGITEM_MAGIC_USERDELETE
, /* 242 - Virtual command to delete a user */
386 CONFIGITEM_MAGIC_NVRAMBACKUP
, /* 243 - Virtual command to backup NVRAM to FLASH */
387 CONFIGITEM_MAGIC_NVRAMRESTORE
, /* 244 - Virtual command to restore NVRAM from FLASH */
388 CONFIGITEM_MAGIC_NVRAMERASE
, /* 245 - Virtual command to erase backed-up NVRAM */
389 CONFIGITEM_MAGIC_LAST
/* *Really* the last item */
396 DELETEUSERS_ALL
= 0, /* 0 - Delete ALL users, including master and emergency, restores default users */
397 DELETEUSERS_CACHED
, /* 1 - Delete only cached users */
404 DISPOSITION_ADD
= 0, /* 0 - Add, must not exist (by user number only) */
405 DISPOSITION_REPLACE
, /* 1 - Replace, (add, but overwrite if necessary) */
406 DISPOSITION_UPDATE
, /* 2 - Update, must already exist */
407 DISPOSITION_DELETE
, /* 3 - Delete, exists or not is irrelevant */
408 DISPOSITION_RETRIEVE
, /* 4 - Retrieve, must exist */
416 DOORSTATE_NONE
= 0, /* 0 - No door state available */
417 DOORSTATE_SECURED
, /* 1 - Door closed & secured */
418 DOORSTATE_DOORFORCED
, /* 2 - Door forced */
419 DOORSTATE_KEYOVERRIDE
, /* 3 - Key override */
420 DOORSTATE_DOORAJAR
, /* 4 - Door ajar */
429 DSTMODE_NONE
, /* 0 - Automatic DST switching disabled */
430 DSTMODE_REPEATINGDOM
, /* 1 - Particular day on a particular month (Apr 2nd) */
431 DSTMODE_REPEATINGDOW
, /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
432 DSTMODE_ONETIMEDOM
, /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
433 DSTMODE_ONETIMEDOW
, /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
441 ENCRYPTIONSCHEME_NONE
= 0, /* 0 - No encryption */
442 ENCRYPTIONSCHEME_ROLLING
, /* 1 - XOR with crypt key, shift each byte */
443 ENCRYPTIONSCHEME_SN
, /* 2 - XOR with serial number, shift each byte */
444 ENCRYPTIONSCHEME_AESIV
, /* 3 - AES implementation (set initial vector) */
445 ENCRYPTIONSCHEME_AES
, /* 4 - AES implementation */
446 ENCRYPTIONSCHEME_LAST
452 EVENT_INVALIDPIN
= 0, /* 0 - Entered PIN was invalid */
453 EVENT_USER
, /* 1 - Regular user has been granted access */
454 EVENT_ONETIME
, /* 2 - One-time user has been granted access */
455 EVENT_PASSAGEBEGIN
, /* 3 - Lock has unlocked because of auto-unlock mode */
456 EVENT_PASSAGEEND
, /* 4 - Lock has relocked because of auto-unlock mode */
457 EVENT_BADTIME
, /* 5 - Access attempted outside of allowed time/date */
458 EVENT_LOCKEDOUT
, /* 6 - Access attempted during panic or lockout */
459 EVENT_LOWBATTERY
, /* 7 - Battery is low */
460 EVENT_DEADBATTERY
, /* 8 - Battery is dead */
461 EVENT_BATTERYREPLACED
, /* 9 - Battery has been replaced */
462 EVENT_USERADDED
, /* 10 - User added or changed */
463 EVENT_USERDELETED
, /* 11 - User deleted */
464 EVENT_EMERGENCY
, /* 12 - The emergency code was entered */
465 EVENT_PANIC
, /* 13 - Somebody pushed the panic button */
466 EVENT_RELOCK
, /* 14 - Relock code was entered */
467 EVENT_LOCKOUTBEGIN
, /* 15 - Lockout code was entered */
468 EVENT_LOCKOUTEND
, /* 16 - Lockout code was entered again */
469 EVENT_RESET
, /* 17 - Lock was reset (restarted) */
470 EVENT_DATETIMESET
, /* 18 - System date & time was set */
471 EVENT_LOGCLEARED
, /* 19 - Event log cleared */
472 EVENT_DBRESET
, /* 20 - User database reset */
473 EVENT_COMMSTARTED
, /* 21 - Communications session started */
474 EVENT_COMMENDED
, /* 22 - Communications session ended */
475 EVENT_FIRMWAREABORT
, /* 23 - A firmware update aborted */
476 EVENT_FIRMWAREERROR
, /* 24 - A firmware update encountered an error */
477 EVENT_FIRMWARETIMEOUT
, /* 25 - Timeout expecting firmware download data record */
478 EVENT_DSTFALLBACK
, /* 26 - Clock set back */
479 EVENT_DSTSPRINGFORWARD
, /* 27 - Clock set forward */
480 EVENT_BOLTTHROWN
, /* 28 - Bolt thrown */
481 EVENT_BOLTRETRACTED
, /* 29 - Bolt retracted */
482 EVENT_MASTERCODE
, /* 30 - Master code entered (clears panic, relock, and lockout) */
483 EVENT_COMMUSER
, /* 31 - A comm user was activated */
484 EVENT_DPACDISABLED
, /* 32 - DPAC disabled */
485 EVENT_NOTIFY
, /* 33 - Notify user has been granted access */
486 EVENT_EXPIRED
, /* 34 - Expired user attempted access */
487 EVENT_SUPERVISOR
, /* 35 - The supervisor code was entered */
488 EVENT_MCCENTER
, /* 36 - Entered MCC programming mode */
489 EVENT_MCCEXIT
, /* 37 - Exited MCC programming mode */
490 EVENT_SERIALRXOVERRUN
, /* 38 - Serial receiver overrun */
491 EVENT_DPACRXOVERRUN
, /* 39 - DPAC receiver overrun */
492 EVENT_NVRAMPBCLEAR
, /* 40 - NVRAM cleared by pushybutton */
493 EVENT_NVRAMLAYOUTCHANGE
, /* 41 - NVRAM cleared by revision */
494 EVENT_NVRAMOK
, /* 42 - NVRAM wasn't changed */
495 EVENT_USERREPLACED
, /* 43 - User replaced */
496 EVENT_RADIOTIMEOUT
, /* 44 - Radio timed out waiting for remote login */
497 EVENT_SUSPENDEDUSER
, /* 45 - Suspended user attempted access */
498 EVENT_USERUPDATED
, /* 46 - User updated */
499 EVENT_DOORBOLTED
, /* 47 - Access denied because door is bolted */
500 EVENT_PANICACTIVE
, /* 48 - Access denied because lock is in panic mode */
501 EVENT_PASSAGEACTIVE
, /* 49 - Access denied because lock is in passage mode */
502 EVENT_PASSAGEINACTIVE
, /* 50 - Access denied because lock is not in passage mode */
503 EVENT_BADACCESSMODE
, /* 51 - Access denied because access mode is weird */
504 EVENT_CLOCKERR
, /* 52 - Error reading RTC */
505 EVENT_REMOTEUNLOCK
, /* 53 - Remote unlock */
506 EVENT_TZHAUDISABLED
, /* 54 - Time zone, exceptions, and auto-unlock functionality disabled */
507 EVENT_EVENTLOGWRAPPED
, /* 55 - Event log wrapped */
508 EVENT_DECLINEDLOGWRAPPED
, /* 56 - Declined log wrapped */
509 EVENT_ALARMLOGWRAPPED
, /* 57 - Alarm log wrapped */
510 EVENT_RADIOBUSYEMERGENCY
, /* 58 - Access denied because radio is busy */
511 EVENT_RADIOBUSYSUPERVISOR
, /* 59 - Access denied because radio is busy */
512 EVENT_RADIOBUSYONETIME
, /* 60 - Access denied because radio is busy */
513 EVENT_RADIOBUSYUSER
, /* 61 - Access denied because radio is busy */
514 EVENT_RADIOBUSYPANIC
, /* 62 - Access denied because radio is busy */
515 EVENT_RADIOBUSYREX
, /* 63 - Access denied because radio is busy */
516 EVENT_RADIOBUSYLOCKOUT
, /* 64 - Access denied because radio is busy */
517 EVENT_RADIOBUSYRELOCK
, /* 65 - Access denied because radio is busy */
518 EVENT_BATTERYCHECKHELDOFF
, /* 66 - Battery check was not performed (user number says why) */
519 EVENT_RMTAUTHREQUEST
, /* 67 - Remote authorization request made */
520 EVENT_FIRMWAREUPDATE
, /* 68 - A firmware update was attempted, and succeeded */
521 EVENT_FIRMWAREUPDATEFAILED
, /* 69 - A firmware update was attempted, and failed */
522 EVENT_MSMFAILURE
, /* 70 - Mortise state machine failure */
523 EVENT_CLOCKRESET
, /* 71 - The RTC was reset, likely due to ESD */
524 EVENT_POWERFAIL
, /* 72 - Power Fail Monitor (PFM) circuit triggered */
525 EVENT_DPAC501WENTSTUPID
, /* 73 - DPAC-501 failed to release CTS on power up */
527 * These are all internal debugging events. Real events should go before these.
529 EVENT_CHECKSUMCONFIG
, /* 74 - Performing checksum on configuration NVRAM */
530 EVENT_CHECKSUMTZ
, /* 75 - Performing checksum on timezone data NVRAM */
531 EVENT_DEBUG
, /* 76 - Debug event, could mean anything (programmer discretion) */
532 EVENT_LAST
/* 77 - Everything must go before this entry */
538 FIELDTYPE_NONE
= 0, /* 0 - Field contains nothing */
539 FIELDTYPE_PIN
, /* 1 - Field contains PIN */
540 FIELDTYPE_PROX
, /* 2 - Field contains Prox card */
541 FIELDTYPE_MAGCARD
, /* 3 - Field contains mag card */
549 FILTERMODE_NORMAL
= 0, /* 0 - Filters events specified */
550 FILTERMODE_INVERT
, /* 1 - Filters events not specified */
558 FILTERSELECT_RECORDING
= 0, /* 0 - Recording filters */
559 FILTERSELECT_REPORTING
, /* 1 - Reporting filters */
565 /* XXX: enum vals don't all match vals in comments ??? */
568 FORCEITEM_RADIOPOWER
= 0, /* 0 - Radio power */
569 FORCEITEM_RADIOENABLE
, /* 1 - Radio enable */
570 FORCEITEM_LEDRED
, /* 2 - Red keypad LED */
571 FORCEITEM_LEDGREEN
, /* 3 - Green keypad LED */
572 FORCEITEM_LEDYELLOW
, /* 4 - Yellow keypad LED */
573 FORCEITEM_PIEZO
, /* 5 - Keypad peizo */
574 FORCEITEM_MAGPOWER
, /* 6 - Mag card reader power supply */
575 FORCEITEM_MAGLEDA
, /* 7 - Mag card LED A (usually red) */
576 FORCEITEM_MAGLEDB
, /* 8 - Mag card LED B (usually green) */
577 FORCEITEM_PROXPOWER
, /* 13 - Prox circuitry power (opamps, etc) */
578 FORCEITEM_PROXPING
, /* 14 - Prox PIC12F629 ping/sleep mode */
579 FORCEITEM_PROXMODE
, /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
580 FORCEITEM_I2CPOWER
, /* 16 - I2C power */
581 FORCEITEM_MOTORARUN
, /* 17 - Motor A run (to H-bridge) */
582 FORCEITEM_MOTORBRUN
, /* 18 - Motor B run (to H-bridge) */
583 FORCEITEM_VMON
, /* 19 - VMon (ADC 0 battery sense) */
584 FORCEITEM_PROX
, /* 20 - Prox test mode (continuous 125KHz read) */
585 FORCEITEM_MORTISETEST
, /* 21 - Force mortise into test mode */
586 FORCEITEM_KEYPADTEST
, /* 22 - Force keypad into test mode */
587 FORCEITEM_MAGTEST
, /* 23 - Force mag card test mode */
588 FORCEITEM_PROXTEST
, /* 24 - Force prox card test mode */
589 FORCEITEM_ICLASSPOWER
, /* 25 - iClass Prox power */
590 FORCEITEM_ICLASSRESET
, /* 26 - iClass Prox reset */
597 FROMDEVICE_NONE
= 0, /* 0 - Used to indicate no device */
598 FROMDEVICE_INTERNAL
, /* 1 - Generated internally */
599 FROMDEVICE_KEYPAD
, /* 2 - Generated from keypad */
600 FROMDEVICE_CONSOLE
, /* 3 - Generated from console */
601 FROMDEVICE_WIFI
, /* 4 - Generated from wi-fi (DPAC) */
609 HARDWAREOPTIONS_NONE
= 0x0000, /* No options installed (?!) */
610 HARDWAREOPTIONS_CLOCK
= 0x0001, /* Has RTC installed (always set) */
611 HARDWAREOPTIONS_CONSOLE
= 0x0002, /* Has serial console (always set) */
612 HARDWAREOPTIONS_KEYPAD
= 0x0004, /* Has keypad installed */
613 HARDWAREOPTIONS_PROXREADER
= 0x0008, /* Has Prox card circuitry installed */
614 HARDWAREOPTIONS_MAGREADER
= 0x0010, /* Has magnetic card reader attached */
615 HARDWAREOPTIONS_1WIRE
= 0x0020, /* Has Dallas 1-wire interface installed */
616 HARDWAREOPTIONS_WIFI
= 0x0040, /* Has WiFi module installed (DPAC only, for now) */
617 HARDWAREOPTIONS_RS485
= 0x0080, /* Has RS-485 optioning (RS-232 assumed if not) */
618 HARDWAREOPTIONS_IR
= 0x0100, /* Has IR LED communications interface installed */
619 HARDWAREOPTIONS_PUSHBUTTON
= 0x0200, /* Has MCC pushbutton */
620 HARDWAREOPTIONS_WATCHDOG
= 0x0400, /* Has watchdog option compiled in */
621 HARDWAREOPTIONS_ICLASSREADER
= 0x0800, /* Has iClass OEM75 prox reader installed */
622 HARDWAREOPTIONS_AVAIL1000
= 0x1000, /* Not defined */
623 HARDWAREOPTIONS_AVAIL2000
= 0x2000, /* Not defined */
624 HARDWAREOPTIONS_AVAIL4000
= 0x4000, /* Not defined */
625 HARDWAREOPTIONS_AVAIL8000
= 0x8000, /* Not defined */
627 HARDWAREOPTIONS_RADIO
= (HARDWAREOPTIONS_WIFI
),
629 HARDWAREOPTIONS_LAST
= 0xffff /* Place holder, don't use */
637 LOCALLED_NONE
= 0, /* 0 - No assignment */
638 LOCALLED_RADIOPOWER
, /* 1 - Follows radio power supply (lit=power on) */
639 LOCALLED_LOCKUNLOCKED
, /* 2 - Follows strike state (lit=locked) */
640 LOCALLED_I2CPOWER
, /* 3 - Follows I2C power (lit=power on) */
641 LOCALLED_AUTHCONSOLE
, /* 4 - Follows authorization from console port (lit=authorized) */
642 LOCALLED_AUTHWIFI
, /* 5 - Follows authorization from Wifi port (lit=authorized) */
643 LOCALLED_BATTERYLOW
, /* 6 - Follows battery low status (lit=low) */
644 LOCALLED_BATTERYDEAD
, /* 7 - Follows battery dead status (lit=battery dead) */
645 LOCALLED_PROXREADY
, /* 8 - Follows Prox ready to read (lit=ready) */
646 LOCALLED_APACQUIRED
, /* 9 - Follows WAP acquired via DPAC (lit=acquired) */
647 LOCALLED_PASSMODE
, /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
648 LOCALLED_PROXREAD
, /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
649 LOCALLED_CONNECTED
, /* 12 - Follows the DPAC interrupt line, indicating connection status */
650 LOCALLED_DPACCTSTIMER
, /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
651 LOCALLED_PFMCHARGING
, /* 14 - Follows the state of the PFM super-cap charger */
660 LOCKPRIORITY_NONE
= 0, /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
661 LOCKPRIORITY_DPAC
, /* 1 - Radio is not shut down for motor run, access denied if radio is on */
662 LOCKPRIORITY_LOCK
, /* 2 - Radio is shut down for motor run, access not denied if radio is on */
671 LOCKTYPE_NONE
= 0, /* 0 - No lock present */
672 LOCKTYPE_PWM
, /* 1 - PWM motor */
673 LOCKTYPE_ELECTRIC_STRIKE
, /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
674 LOCKTYPE_MAGNETIC_LOCK
, /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
675 LOCKTYPE_RELAY
, /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
683 MFGFIELD_IOPINS
= 0, /* 0 - Contains data about the state of the IO pins */
684 MFGFIELD_ADCS
, /* 1 - Contains raw ADC data */
685 MFGFIELD_HARDWAREID
, /* 2 - Contains hardware ID & revision of PIC */
686 MFGFIELD_CHECKPOINTLOG
, /* 3 - Contains the checkpoint log data */
687 MFGFIELD_CPUREGISTERS
, /* 4 - Contains the contents of selected PIC registers */
688 MFGFIELD_TASKFLAGS
, /* 5 - Contains a list of all task flag values */
689 MFGFIELD_TIMERCHAIN
, /* 6 - Contains a complete list of all active timers (timerData_t) */
690 MFGFIELD_PEEKPOKE
, /* 7 - Contains results of peeking memory (U8, U16, U32, or string) */
691 MFGFIELD_LOCKSTATE
, /* 8 - Contains the current passage mode flags (lockState_t) */
692 MFGFIELD_CAPABILITIES
, /* 9 - Contains lock capability info (# users, event log entries, etc) */
693 MFGFIELD_DUMPM41T81
, /* 10 - Contains a complete dump of the M41T81 RTC registers */
694 MFGFIELD_NVRAMCHECKSUMVALUE
, /* 11 - Contains the 32-bit NVRAM checksum value */
695 MFGFIELD_CHECKSUMRESULTS
, /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
696 MFGFIELD_MORTISESTATELOG
, /* 13 - Contains the last 32 mortise state changes */
697 MFGFIELD_MORTISEPINS
, /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
698 MFGFIELD_KEYPADCHAR
, /* 15 - Contains a character from the keypad */
699 MFGFIELD_MAGCARD
, /* 16 - Contains mag card data */
700 MFGFIELD_PROXCARD
, /* 17 - Contains prox card data */
707 MORTISETYPE_NONE
= 0, /* 0 - No mortise installed */
708 MORTISETYPE_S82276
, /* 1 - Sargent 82276 mortise (A) */
709 MORTISETYPE_S82277
, /* 2 - Sargent 82277 mortise, no cylinder (B) */
710 MORTISETYPE_S82278
, /* 3 - Sargent 82278 mortise, no deadbolt (C) */
711 MORTISETYPE_S82279
, /* 4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
712 MORTISETYPE_S10G77
, /* 5 - Sargent 10G77 bored lock body (E) */
713 MORTISETYPE_S8877
, /* 6 - Sargent 8877 mortise exit device (F) */
714 MORTISETYPE_S8878
, /* 7 - Sargent 8878 mortise exit device, no cylinder (G) */
715 MORTISETYPE_S8977
, /* 8 - Sargent 8977 mortise exit device (H) */
716 MORTISETYPE_S8978
, /* 9 - Sargent 8978 mortise exit device, no cylinder (I) */
717 MORTISETYPE_CRML20x36
, /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
718 MORTISETYPE_CRML20x35
, /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
719 MORTISETYPE_CRML20x34
, /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
720 MORTISETYPE_CRML20x33
, /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
721 MORTISETYPE_CRCL33x34
, /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
722 MORTISETYPE_CR9X34
, /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
723 MORTISETYPE_CR9X33
, /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
724 MORTISETYPE_CR9MX34
, /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
725 MORTISETYPE_CR9MX33
, /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
733 NVRAMCLEAROPTIONS_NONE
= 0x0000, /* Place holder */
734 NVRAMCLEAROPTIONS_CFGINSTALLER
= 0x0001, /* Options settable by the installer (lock type, etc) */
735 NVRAMCLEAROPTIONS_CFGADMIN
= 0x0002, /* Options settable by the lock administrator (time, date, etc) */
736 NVRAMCLEAROPTIONS_EXCEPTIONS
= 0x0004, /* The exceptions definitions */
737 NVRAMCLEAROPTIONS_EXCEPTIONGROUPS
= 0x0008, /* The exception group definitions */
738 NVRAMCLEAROPTIONS_CALENDARS
= 0x0010, /* The timezones calendar definitions */
739 NVRAMCLEAROPTIONS_TIMEZONES
= 0x0020, /* The timezones definitions */
740 NVRAMCLEAROPTIONS_FILTERS
= 0x0040, /* Recording filters */
741 NVRAMCLEAROPTIONS_EVENTLOG
= 0x0080, /* The event log */
742 NVRAMCLEAROPTIONS_USERDATA
= 0x0100, /* The actual user database */
743 NVRAMCLEAROPTIONS_DECLINEDLOG
= 0x0200, /* Declined credentials log */
744 NVRAMCLEAROPTIONS_ALARMLOG
= 0x0400, /* Alarm log */
745 NVRAMCLEAROPTIONS_LRUCACHE
= 0x0800, /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
746 NVRAMCLEAROPTIONS_DBHASH
= 0x1000, /* User database hash (status, user doesn't clear explicitly) */
747 NVRAMCLEAROPTIONS_CFGSYSTEM
= 0x2000, /* Factory settable options, system variables (status, user doesn't clear explicitly) */
748 NVRAMCLEAROPTIONS_AVAIL4000
= 0x4000, /* Unused */
749 NVRAMCLEAROPTIONS_ALL
= 0x7fff, /* All of the above */
750 NVRAMCLEAROPTIONS_USEBACKUP
= 0x8000 /* If set, installer and admin options are set according from NVRAM backup (if valid) */
758 NVRAMCOMMAND_BACKUP
= 0, /* 0 - Backup NVRAM to backup region */
759 NVRAMCOMMAND_ERASE
, /* 1 - Erase backup region */
760 NVRAMCOMMAND_RESTORE
, /* 2 - Restore NVRAM from backup region */
769 NVRAMDUMPSELECT_ALL
= 0, /* 0 - Dump all */
770 NVRAMDUMPSELECT_PIC
, /* 1 - Dump NVRAM on PIC */
771 NVRAMDUMPSELECT_USER
, /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
772 NVRAMDUMPSELECT_EVENT
, /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
780 PEEKPOKE_READU8
= 0, /* 0 - Read 8 bit value */
781 PEEKPOKE_READU16
, /* 1 - Read 16 bit value */
782 PEEKPOKE_READU24
, /* 2 - Read 24 bit value */
783 PEEKPOKE_READU32
, /* 3 - Read 32 bit value */
784 PEEKPOKE_READSTRING
, /* 4 - Read 'n' 8 bit values */
785 PEEKPOKE_WRITEU8
, /* 5 - Write 8 bit value */
786 PEEKPOKE_WRITEU16
, /* 6 - Write 16 bit value */
787 PEEKPOKE_WRITEU24
, /* 7 - Write 24 bit value */
788 PEEKPOKE_WRITEU32
, /* 8 - Write 32 bit value */
789 PEEKPOKE_WRITESTRING
, /* 9 - Write 'n' 8 bit values */
796 PPMISOURCE_NONE
= 0, /* 0 - PPMI came from nowhere (not set) */
797 PPMISOURCE_PIN
, /* 1 - PPMI came from PIN */
798 PPMISOURCE_PROX
, /* 2 - PPMI came from Prox */
799 PPMISOURCE_MAGCARD
, /* 3 - PPMI came from mag card */
807 RADIOMODE_HOSTINITIATED
= 0, /* 0 - DPAC in listen mode (default) */
808 RADIOMODE_LOCKINITIATED
, /* 1 - DPAC in pass-through mode */
817 RADIOTYPE_NONE
= 0, /* 0 - No radio present */
818 RADIOTYPE_WIPORTNR
, /* 1 - WiPortNR */
819 RADIOTYPE_DPAC80211B
, /* 2 - DPAC 802.11b */
820 RADIOTYPE_DPAC80211BG
, /* 3 - DPAC 802.11bg */
828 RESPONSETYPE_OK
= 0, /* 0 - All is well */
829 RESPONSETYPE_ERROR
, /* 1 - Generic error */
830 RESPONSETYPE_HASDATA
, /* 2 - Response has data */
831 RESPONSETYPE_NOHANDLER
, /* 3 - Command requested with no handler (internal error) */
832 RESPONSETYPE_NOSESSION
, /* 4 - No session established */
833 RESPONSETYPE_BADCOMMAND
, /* 5 - Bad command value */
834 RESPONSETYPE_BADPARAMETER
, /* 6 - Bad parameter (can mean a lot of things) */
835 RESPONSETYPE_BADPARAMETERLEN
, /* 7 - Bad parameter length (too short, too long) */
836 RESPONSETYPE_MISSINGPARAMETER
, /* 8 - Missing parameter (something was required, what'd you forget?) */
837 RESPONSETYPE_DUPLICATEPARAMETER
, /* 9 - Parameter supplied more than once (D'oh!) */
838 RESPONSETYPE_PARAMETERCONFLICT
, /* 10 - Parameters conflict (usually mutually exclusive items) */
839 RESPONSETYPE_BADDEVICE
, /* 11 - Bad device (command came from a device that's not allowed) */
840 RESPONSETYPE_NVRAMERROR
, /* 12 - Hardware problem... */
841 RESPONSETYPE_NVRAMERRORNOACK
, /* 13 - Hardware problem... */
842 RESPONSETYPE_NVRAMERRORNOACK32
, /* 14 - Hardware problem... */
843 RESPONSETYPE_NOTI2CADDRESS
, /* 15 - Illegal I2C address in i2cStart */
844 RESPONSETYPE_FIRMWAREERROR
, /* 16 - Generic firmware upload error (can mean lots of things) */
845 RESPONSETYPE_DUMPINPROGRESS
, /* 17 - Can't do something, a dump is in progress */
846 RESPONSETYPE_INTERNALERROR
, /* 18 - Something Bad Happened(tm) */
847 RESPONSETYPE_NOTIMPLEMENTED
, /* 19 - Command or function not implemented */
848 RESPONSETYPE_PINFORMATERROR
, /* 20 - Error in formatting of PIN (non hex character) */
849 RESPONSETYPE_PINEXISTS
, /* 21 - PIN already exists in database */
850 RESPONSETYPE_PINNOTFOUND
, /* 22 - PIN wasn't found (actionManageUsers) */
851 RESPONSETYPE_USERACTIVE
, /* 23 - The record for this user is active (not deleted or free) */
852 RESPONSETYPE_USERINACTIVE
, /* 24 - The record for this user is inactive (not in use) */
853 RESPONSETYPE_PARENTNOTFOUND
, /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
854 RESPONSETYPE_NOCHAIN
, /* 26 - No users in chain (used internally by dbmgr.c) */
855 RESPONSETYPE_CAUGHTINLOOP
, /* 27 - Caught in a loop somewhere */
856 RESPONSETYPE_EVENTFILTERED
, /* 28 - Event record was filtered (eventlog.c) */
857 RESPONSETYPE_PAYLOADTOOLARGE
, /* 29 - Message payload too large (protocol.c) */
858 RESPONSETYPE_ENDOFDATA
, /* 30 - No more data (used internally by eventlog.c) */
859 RESPONSETYPE_RMTAUTHREJECTED
, /* 31 - Remote authorization rejected (lockmgr.c) */
860 RESPONSETYPE_NVRAMVERSIONERROR
, /* 32 - NVRAM version doesn't match expected value */
861 RESPONSETYPE_NOHARDWARE
, /* 33 - Operation requested for unsupported hardware */
862 RESPONSETYPE_SCHEDULERCONFLICT
, /* 34 - Scheduler not in correct mode for this operation */
863 RESPONSETYPE_NVRAMWRITEERROR
, /* 35 - NVRAM write compare error */
864 RESPONSETYPE_DECLINEDFILTERED
, /* 36 - Declined record was filtered (declinedlog.c) */
865 RESPONSETYPE_NECONFIGPARM
, /* 37 - Non-existent configuration parameter */
866 RESPONSETYPE_FLASHERASEERROR
, /* 38 - Error erasing FLASH */
867 RESPONSETYPE_FLASHWRITEERROR
, /* 39 - Error writing FLASH */
868 RESPONSETYPE_BADNVBACKUP
, /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
869 RESPONSETYPE_EARLYACK
, /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
870 RESPONSETYPE_ALARMFILTERED
, /* 42 - Alarm record was filtered (alarm.c) */
871 RESPONSETYPE_ACVFAILURE
, /* 43 - Auxiliary controller version request failure */
872 RESPONSETYPE_USERCHECKSUMERROR
, /* 44 - User checksum value error */
873 RESPONSETYPE_CHECKSUMERROR
, /* 45 - Generic checksum error */
874 RESPONSETYPE_RTCSQWFAILURE
, /* 46 - RTC isn't generating square wave */
875 RESPONSETYPE_PRIORITYSHUTDOWN
, /* 47 - Session terminated early because lock has priority over communications */
876 RESPONSETYPE_NOTMODIFIABLE
, /* 48 - Configuration parameter is not user modifiable */
877 RESPONSETYPE_CANTPRESERVE
, /* 49 - Can't preserve configuration (config.c, not enough space) */
878 RESPONSETYPE_INPASSAGEMODE
, /* 50 - Lock is in passage mode, can't do remote unlock */
883 * These should not be exposed to the user
885 RESPONSETYPE_NOREPLY
, /* 51 - Do not send a reply, subroutine is posting its own */
886 RESPONSETYPE_TAKEABREAK
, /* 52 - Intermediate return result, when log searches taking too long */
887 RESPONSETYPE_DPACBLOCKS
, /* 53 - PWM lock, battery powered, DPAC takes priority */
888 RESPONSETYPE_ACKNAKTIMEOUT
, /* 54 - Added for console.c, not used in lock firmware */
889 RESPONSETYPE_UNKNOWNCPUSPEED
/* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
897 SCHEDULERTYPE_HARDON
= 0, /* 0 - Radio is always on */
898 SCHEDULERTYPE_SIMPLE
, /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
899 SCHEDULERTYPE_DOM
, /* 2 - Day of month scheduling */
900 SCHEDULERTYPE_DOW
, /* 3 - Day of week scheduling */
901 SCHEDULERTYPE_COMMUSER
, /* 4 - Only a comm user triggers power on */
902 SCHEDULERTYPE_HOD
, /* 5 - Hour of day scheduling */
903 SCHEDULERTYPE_OFF
, /* 6 - Nothing wakes up radio */
911 TIMEZONEMODE_NORMAL
= 0, /* 0 - Timezone is applied to user, no auto unlocking */
912 TIMEZONEMODE_EXCLUSION
, /* 1 - User NOT permitted access if in this zone at this time */
913 TIMEZONEMODE_AUTOTIME
, /* 2 - Auto unlock at the start of the TZ, lock at end */
914 TIMEZONEMODE_AUTOFPT
, /* 3 - Unlock on first person through, lock at end */
915 TIMEZONEMODE_UAPM
, /* 4 - Permits user activated passage mode when active */
923 UNLOCKMODE_NORMAL
= 0, /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
924 UNLOCKMODE_UNLOCK
, /* 1 - Unlock, switching to passage mode */
925 UNLOCKMODE_LOCK
, /* 2 - Lock, regardless of mode */
931 /* XXX: enum vals don't all match vals in comments ??? */
934 UPSTREAMCOMMAND_RESERVED
= 0, /* 0 - Not used */
935 UPSTREAMCOMMAND_DEBUGMSG
, /* 1 - Debug message (zero terminated) */
936 UPSTREAMCOMMAND_QUERYVERSION
, /* 2 - Version string (zero terminated) */
937 UPSTREAMCOMMAND_QUERYDATETIME
, /* 3 - Current date/time */
938 UPSTREAMCOMMAND_QUERYSERIALNUMBER
, /* 5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
939 UPSTREAMCOMMAND_DUMPEVENTLOG
, /* 6 - Event log record */
940 UPSTREAMCOMMAND_DUMPNVRAM
, /* 7 - NVRAM dump record */
941 UPSTREAMCOMMAND_RMTAUTHREQUEST
, /* 8 - Remote authorization request */
942 UPSTREAMCOMMAND_RETRIEVEUSER
, /* 9 - Retrieve user record */
943 UPSTREAMCOMMAND_QUERYCONFIG
, /* 10 - Query configuration */
944 UPSTREAMCOMMAND_RMTEVENTLOGRECORD
, /* 11 - Remote event log record */
945 UPSTREAMCOMMAND_DPAC
, /* 12 - DPAC related message */
946 UPSTREAMCOMMAND_NOTIFY
, /* 14 - Notify user message */
947 UPSTREAMCOMMAND_MFG
, /* 15 - Manufacturing data */
948 UPSTREAMCOMMAND_EVENTLOGWARNING
, /* 16 - Event log warning level message */
949 UPSTREAMCOMMAND_DUMPNVRAMRLE
, /* 17 - Run Length Encoded (RLE) NVRAM dump record */
950 UPSTREAMCOMMAND_RMTDECLINEDRECORD
, /* 18 - Remote declined log record */
951 UPSTREAMCOMMAND_DECLINEDWARNING
, /* 19 - Declined log warning level message */
952 UPSTREAMCOMMAND_DUMPDECLINEDLOG
, /* 20 - Declined log record dump */
953 UPSTREAMCOMMAND_RMTALARMRECORD
, /* 21 - Remote alarm log record */
954 UPSTREAMCOMMAND_ALARMWARNING
, /* 22 - Alarm log warning level message */
955 UPSTREAMCOMMAND_DUMPALARMLOG
, /* 23 - Alarm log record dump */
956 UPSTREAMCOMMAND_CONNECTSCHEDULER
, /* 24 - Connection because of scheduler, contains serial number */
957 UPSTREAMCOMMAND_CONNECTCOMMUSER
, /* 25 - Connection because of comm user, contains serial number */
958 UPSTREAMCOMMAND_CONNECTALARM
, /* 26 - Connection because of alarm event, contains serial number */
959 UPSTREAMCOMMAND_DUMPDEBUGLOG
, /* 27 - Debug log dump record */
964 /* XXX: enum vals don't all match vals in comments ??? */
967 UPSTREAMFIELD_NOTUSED
= 0, /* 0 - Not used */
968 UPSTREAMFIELD_SERIALNUMBER
, /* 1 - Contains unit serial number */
969 UPSTREAMFIELD_NAR
, /* 2 - Contains 16 bit Next Available Record */
970 UPSTREAMFIELD_ENTRYDEVICE
, /* 3 - Contains a ppmSource_e */
971 UPSTREAMFIELD_PPMIFIELDTYPE
, /* 4 - Contains a type of _PIN (auxFieldType_e) */
972 UPSTREAMFIELD_PIN
, /* 5 - Contains a PIN, Prox, mag key */
973 UPSTREAMFIELD_SEQUENCENUMBER
, /* 6 - Contains 16 bit sequence number */
974 UPSTREAMFIELD_RESPONSEWINDOW
, /* 7 - Contains 8 bit response window (number of seconds) */
975 UPSTREAMFIELD_USERNUMBER
, /* 8 - Contains 16 bit user number */
976 UPSTREAMFIELD_VERSION
, /* 9 - Contains version string */
977 UPSTREAMFIELD_EVENTLOGRECORD
, /* 10 - Contains eventLog_e event log record */
978 UPSTREAMFIELD_DATETIME
, /* 11 - Contains 8 byte date/time data */
979 UPSTREAMFIELD_EVENTLOGRECORDCOUNT
, /* 17 - Contains number of event log records */
980 UPSTREAMFIELD_DECLINEDRECORDCOUNT
, /* 20 - Contains number of declined log records */
981 UPSTREAMFIELD_DECLINEDRECORD
, /* 21 - Contains declinedLog_t declined log record */
982 UPSTREAMFIELD_USERTYPE
, /* 23 - Contains the user type (master, emergency, normal, etc) */
983 UPSTREAMFIELD_ACCESSALWAYS
, /* 24 - Contains the access always mode (true, false) */
984 UPSTREAMFIELD_CACHED
, /* 25 - Contains the cached flag (true, false) */
985 UPSTREAMFIELD_PRIMARYFIELDTYPE
, /* 26 - Contains the primary field type (pin, prox, mag) */
986 UPSTREAMFIELD_AUXFIELDTYPE
, /* 27 - Contains the aux field type (pin, prox, mag) */
987 UPSTREAMFIELD_ACCESSMODE
, /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
988 UPSTREAMFIELD_EXPIREON
, /* 29 - Contains the date the user expires on (00/00/00 if not set) */
989 UPSTREAMFIELD_USECOUNT
, /* 30 - Contains the use count (if user type is ONE_TIME) */
990 UPSTREAMFIELD_TIMEZONE
, /* 31 - Contains the timezone bit map */
991 UPSTREAMFIELD_EXCEPTIONGROUP
, /* 32 - Contains the exception group */
992 UPSTREAMFIELD_PRIMARYPIN
, /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
993 UPSTREAMFIELD_AUXPIN
, /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
994 UPSTREAMFIELD_ALARMRECORDCOUNT
, /* 35 - Contains number of alarm log records */
995 UPSTREAMFIELD_ALARMRECORD
, /* 36 - Contains alarmLog_t alarm log record */
996 UPSTREAMFIELD_AUXCTLRVERSION
, /* 37 - Contains the version number of the auxiliary controller */
1003 USERTYPE_NONE
= 0, /* 0 - No user */
1004 USERTYPE_MASTER
, /* 1 - Master user (clears panic, relock, lockout and auto open) */
1005 USERTYPE_EMERGENCY
, /* 2 - Opens door regardless of state */
1006 USERTYPE_SUPERVISOR
, /* 3 - Like emergency user, except won't unlock when in panic mode */
1007 USERTYPE_USER
, /* 4 - Generic user */
1008 USERTYPE_EXTENDED
, /* 5 - Same as _USER, but strike can be kept open longer */
1009 USERTYPE_PASSAGE
, /* 6 - Toggles strike between passage and non-passage modes */
1010 USERTYPE_ONETIME
, /* 7 - User may be used one time */
1011 USERTYPE_PANIC
, /* 8 - Locks down locks, no user except master valid */
1012 USERTYPE_LOCKOUT
, /* 9 - Locks out regular, extended, passage, one time, and notify users */
1013 USERTYPE_RELOCK
, /* 10 - Relock cancels passage mode, but can't unlock */
1014 USERTYPE_NOTIFY
, /* 11 - Same as _USER, only sends unsolicited message to server */
1015 USERTYPE_COMM
, /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
1016 USERTYPE_SUSPENDED
, /* 13 - User is suspended */
1022 #define ASSA_R3_PORT_RANGE "2571,8023" /* Neither are IANA registered */
1025 * Wireshark ID of the R3 protocol
1027 static int proto_r3
;
1032 static int hf_r3_tildex3ds
; /* Got ~~~ds */
1034 static int hf_r3_header
; /* Packet header */
1035 static int hf_r3_payload
; /* Packet payload */
1036 static int hf_r3_tail
; /* Packet tail */
1038 static int hf_r3_sigil
; /* Packet sigil */
1039 static int hf_r3_address
; /* Packet address */
1040 static int hf_r3_packetnumber
; /* Packet number */
1041 static int hf_r3_packetlength
; /* Packet length */
1042 static int hf_r3_encryption
; /* Packet encryption scheme */
1043 static int hf_r3_crc
; /* Packet CRC */
1044 static int hf_r3_crc_bad
; /* Packet CRC bad (for filtering) */
1045 static int hf_r3_xor
; /* Packet Xor */
1046 static int hf_r3_xor_bad
; /* Packet Xor bad (for filtering) */
1048 static int hf_r3_commandlength
; /* Command length */
1049 static int hf_r3_command
; /* Command (cmdCommand_e) */
1050 static int hf_r3_commanddata
; /* Command data (not always present) */
1052 static int hf_r3_commandmfglength
; /* Mfg Command length */
1053 static int hf_r3_commandmfg
; /* Mfg Command (cmdCommand_e) */
1054 /*static int hf_r3_commandmfgdata;*/ /* Mfg Command data (not always present) */
1056 static int hf_r3_responselength
; /* Response length */
1057 static int hf_r3_responsecommand
; /* Response command */
1058 static int hf_r3_responsetype
; /* Response type (responseType_e) */
1059 static int hf_r3_responsetocommand
; /* Response to command (cmdCommand_e) */
1060 /*static int hf_r3_responsedata;*/ /* Response data (not always present) */
1062 static int hf_r3_upstreamcommand
;
1064 static int hf_r3_upstreamfield
; /* Upstream field (length + type + data) */
1065 static int hf_r3_upstreamfieldlength
; /* Upstream field length */
1066 static int hf_r3_upstreamfieldtype
; /* Upstream field type (upstreamField_e) */
1067 /*static int hf_r3_upstreamfielddatalen;*/ /* Upstream field data length */
1068 static int hf_r3_upstreamfielderror
; /* Upstream field is unknown type */
1069 static int hf_r3_upstreamfieldarray
[UPSTREAMFIELD_LAST
];
1071 static int hf_r3_configitems
;
1072 static int hf_r3_configitem
;
1073 /*static int hf_r3_configfield;*/
1074 static int hf_r3_configitemlength
;
1075 static int hf_r3_configitemtype
;
1076 static int hf_r3_configitemdata
;
1077 static int hf_r3_configitemdata_bool
;
1078 static int hf_r3_configitemdata_8
;
1079 static int hf_r3_configitemdata_16
;
1080 static int hf_r3_configitemdata_32
;
1081 static int hf_r3_configitemdata_string
;
1083 static int hf_r3_timezonearray0
;
1084 static int hf_r3_timezonearray1
;
1085 static int hf_r3_timezonearray2
;
1086 static int hf_r3_timezonearray3
;
1087 static int hf_r3_timezonearray4
;
1088 static int hf_r3_timezonearray5
;
1089 static int hf_r3_timezonearray6
;
1090 static int hf_r3_timezonearray7
;
1091 static int hf_r3_timezonearray8
;
1092 static int hf_r3_timezonearray9
;
1093 static int hf_r3_timezonearray10
;
1094 static int hf_r3_timezonearray11
;
1095 static int hf_r3_timezonearray12
;
1096 static int hf_r3_timezonearray13
;
1097 static int hf_r3_timezonearray14
;
1098 static int hf_r3_timezonearray15
;
1099 static int hf_r3_timezonearray16
;
1100 static int hf_r3_timezonearray17
;
1101 static int hf_r3_timezonearray18
;
1102 static int hf_r3_timezonearray19
;
1103 static int hf_r3_timezonearray20
;
1104 static int hf_r3_timezonearray21
;
1105 static int hf_r3_timezonearray22
;
1106 static int hf_r3_timezonearray23
;
1107 static int hf_r3_timezonearray24
;
1108 static int hf_r3_timezonearray25
;
1109 static int hf_r3_timezonearray26
;
1110 static int hf_r3_timezonearray27
;
1111 static int hf_r3_timezonearray28
;
1112 static int hf_r3_timezonearray29
;
1113 static int hf_r3_timezonearray30
;
1114 static int hf_r3_timezonearray31
;
1116 static int hf_r3_expireon_year
;
1117 static int hf_r3_expireon_month
;
1118 static int hf_r3_expireon_day
;
1120 static int hf_r3_datetime_year
;
1121 static int hf_r3_datetime_month
;
1122 static int hf_r3_datetime_day
;
1123 static int hf_r3_datetime_dow
;
1124 static int hf_r3_datetime_hours
;
1125 static int hf_r3_datetime_minutes
;
1126 static int hf_r3_datetime_seconds
;
1127 static int hf_r3_datetime_dst
;
1129 static int hf_r3_eventlog_recordnumber
;
1130 static int hf_r3_eventlog_year
;
1131 static int hf_r3_eventlog_month
;
1132 static int hf_r3_eventlog_day
;
1133 static int hf_r3_eventlog_hour
;
1134 static int hf_r3_eventlog_minute
;
1135 static int hf_r3_eventlog_second
;
1136 static int hf_r3_eventlog_usernumber
;
1137 static int hf_r3_eventlog_event
;
1139 static int hf_r3_declinedlog_recordnumber
;
1140 static int hf_r3_declinedlog_year
;
1141 static int hf_r3_declinedlog_month
;
1142 static int hf_r3_declinedlog_day
;
1143 static int hf_r3_declinedlog_hour
;
1144 static int hf_r3_declinedlog_minute
;
1145 static int hf_r3_declinedlog_second
;
1146 static int hf_r3_declinedlog_usernumber
;
1147 static int hf_r3_declinedlog_cred1type
;
1148 static int hf_r3_declinedlog_cred2type
;
1149 static int hf_r3_declinedlog_cred1
;
1150 static int hf_r3_declinedlog_cred2
;
1152 static int hf_r3_alarmlog_recordnumber
;
1153 static int hf_r3_alarmlog_year
;
1154 static int hf_r3_alarmlog_month
;
1155 static int hf_r3_alarmlog_day
;
1156 static int hf_r3_alarmlog_hour
;
1157 static int hf_r3_alarmlog_minute
;
1158 static int hf_r3_alarmlog_second
;
1159 static int hf_r3_alarmlog_id
;
1160 static int hf_r3_alarmlog_usernumber
;
1162 static int hf_r3_debugmsg
;
1164 static int hf_r3_setdate_year
;
1165 static int hf_r3_setdate_month
;
1166 static int hf_r3_setdate_day
;
1167 static int hf_r3_setdate_dow
;
1168 static int hf_r3_setdate_hours
;
1169 static int hf_r3_setdate_minutes
;
1170 static int hf_r3_setdate_seconds
;
1172 static int hf_r3_deleteusers
;
1174 static int hf_r3_defineexception_number
;
1175 static int hf_r3_defineexception_startdate_month
;
1176 static int hf_r3_defineexception_startdate_day
;
1177 static int hf_r3_defineexception_startdate_hours
;
1178 static int hf_r3_defineexception_startdate_minutes
;
1179 static int hf_r3_defineexception_enddate_month
;
1180 static int hf_r3_defineexception_enddate_day
;
1181 static int hf_r3_defineexception_enddate_hours
;
1182 static int hf_r3_defineexception_enddate_minutes
;
1184 static int hf_r3_defineexceptiongroup_number
;
1185 static int hf_r3_defineexceptiongroup_bits
;
1187 static int hf_r3_definecalendar_number
;
1188 static int hf_r3_definecalendar_bits
;
1190 static int hf_r3_definetimezone_number
;
1191 static int hf_r3_definetimezone_starttime_hours
;
1192 static int hf_r3_definetimezone_starttime_minutes
;
1193 static int hf_r3_definetimezone_endtime_hours
;
1194 static int hf_r3_definetimezone_endtime_minutes
;
1195 static int hf_r3_definetimezone_daymap
;
1196 static int hf_r3_definetimezone_daymap0
;
1197 static int hf_r3_definetimezone_daymap1
;
1198 static int hf_r3_definetimezone_daymap2
;
1199 static int hf_r3_definetimezone_daymap3
;
1200 static int hf_r3_definetimezone_daymap4
;
1201 static int hf_r3_definetimezone_daymap5
;
1202 static int hf_r3_definetimezone_daymap6
;
1203 static int hf_r3_definetimezone_exceptiongroup
;
1204 static int hf_r3_definetimezone_mode
;
1205 static int hf_r3_definetimezone_calendar
;
1207 static int hf_r3_rmtauthretry_sequence
;
1208 static int hf_r3_rmtauthretry_retry
;
1210 static int hf_r3_eventlogdump_starttime_year
;
1211 static int hf_r3_eventlogdump_starttime_month
;
1212 static int hf_r3_eventlogdump_starttime_day
;
1213 static int hf_r3_eventlogdump_starttime_hours
;
1214 static int hf_r3_eventlogdump_starttime_minutes
;
1215 static int hf_r3_eventlogdump_endtime_year
;
1216 static int hf_r3_eventlogdump_endtime_month
;
1217 static int hf_r3_eventlogdump_endtime_day
;
1218 static int hf_r3_eventlogdump_endtime_hours
;
1219 static int hf_r3_eventlogdump_endtime_minutes
;
1220 static int hf_r3_eventlogdump_user
;
1222 static int hf_r3_declinedlogdump_starttime_year
;
1223 static int hf_r3_declinedlogdump_starttime_month
;
1224 static int hf_r3_declinedlogdump_starttime_day
;
1225 static int hf_r3_declinedlogdump_starttime_hours
;
1226 static int hf_r3_declinedlogdump_starttime_minutes
;
1227 static int hf_r3_declinedlogdump_endtime_year
;
1228 static int hf_r3_declinedlogdump_endtime_month
;
1229 static int hf_r3_declinedlogdump_endtime_day
;
1230 static int hf_r3_declinedlogdump_endtime_hours
;
1231 static int hf_r3_declinedlogdump_endtime_minutes
;
1233 static int hf_r3_alarmlogdump_starttime_year
;
1234 static int hf_r3_alarmlogdump_starttime_month
;
1235 static int hf_r3_alarmlogdump_starttime_day
;
1236 static int hf_r3_alarmlogdump_starttime_hours
;
1237 static int hf_r3_alarmlogdump_starttime_minutes
;
1238 static int hf_r3_alarmlogdump_endtime_year
;
1239 static int hf_r3_alarmlogdump_endtime_month
;
1240 static int hf_r3_alarmlogdump_endtime_day
;
1241 static int hf_r3_alarmlogdump_endtime_hours
;
1242 static int hf_r3_alarmlogdump_endtime_minutes
;
1244 static int hf_r3_nvramclearoptions
;
1245 static int hf_r3_nvramclearoptions0
;
1246 static int hf_r3_nvramclearoptions1
;
1247 static int hf_r3_nvramclearoptions2
;
1248 static int hf_r3_nvramclearoptions3
;
1249 static int hf_r3_nvramclearoptions4
;
1250 static int hf_r3_nvramclearoptions5
;
1251 static int hf_r3_nvramclearoptions6
;
1252 static int hf_r3_nvramclearoptions7
;
1253 static int hf_r3_nvramclearoptions8
;
1254 static int hf_r3_nvramclearoptions9
;
1255 static int hf_r3_nvramclearoptions10
;
1256 static int hf_r3_nvramclearoptions11
;
1257 static int hf_r3_nvramclearoptions12
;
1258 static int hf_r3_nvramclearoptions13
;
1259 static int hf_r3_nvramclearoptions14
;
1260 static int hf_r3_nvramclearoptions15
;
1262 static int hf_r3_writeeventlog_user
;
1263 static int hf_r3_writeeventlog_event
;
1265 static int hf_r3_powertableselection
;
1267 static int hf_r3_filter_type
;
1268 static int hf_r3_filter_list
;
1270 static int hf_r3_alarm_length
;
1271 static int hf_r3_alarm_id
;
1272 static int hf_r3_alarm_state
;
1274 static int hf_r3_dpac_action
;
1275 static int hf_r3_dpac_waittime
;
1276 static int hf_r3_dpac_command
;
1278 static int hf_r3_dpacreply_stuff
;
1279 static int hf_r3_dpacreply_length
;
1280 static int hf_r3_dpacreply_reply
;
1282 static int hf_r3_mfgfield_length
;
1283 static int hf_r3_mfgfield
;
1284 /*static int hf_r3_mfgfield_data;*/
1286 static int hf_r3_mfgsetserialnumber
;
1287 static int hf_r3_mfgsetcryptkey
;
1288 static int hf_r3_mfgdumpnvram
;
1289 static int hf_r3_mfgremoteunlock
;
1290 static int hf_r3_mfgtestpreserve
;
1292 static int hf_r3_adc
[8];
1294 static int hf_r3_hardwareid_board
;
1295 static int hf_r3_hardwareid_cpuid
;
1296 static int hf_r3_hardwareid_cpurev
;
1298 static int hf_r3_testkeypad
;
1299 static int hf_r3_testmagcard
;
1300 static int hf_r3_testproxcard
;
1302 static int hf_r3_nvramdump_record
;
1303 static int hf_r3_nvramdump_length
;
1304 static int hf_r3_nvramdump_data
;
1306 static int hf_r3_nvramdumprle_record
;
1307 static int hf_r3_nvramdumprle_length
;
1308 static int hf_r3_nvramdumprle_data
;
1310 static int hf_r3_iopins_lat
;
1311 static int hf_r3_iopins_port
;
1312 static int hf_r3_iopins_tris
;
1314 static int hf_r3_mortisepins_s1
;
1315 static int hf_r3_mortisepins_s2
;
1316 static int hf_r3_mortisepins_s3
;
1317 static int hf_r3_mortisepins_s4
;
1319 static int hf_r3_checksumresults
;
1320 static int hf_r3_checksumresults_field
;
1321 static int hf_r3_checksumresults_length
;
1322 static int hf_r3_checksumresults_state
;
1324 static int hf_r3_forceoptions_length
;
1325 static int hf_r3_forceoptions_item
;
1326 static int hf_r3_forceoptions_state_8
;
1327 static int hf_r3_forceoptions_state_16
;
1328 static int hf_r3_forceoptions_state_24
;
1329 static int hf_r3_forceoptions_state_32
;
1331 static int hf_r3_peekpoke_operation
;
1332 static int hf_r3_peekpoke_address
;
1333 static int hf_r3_peekpoke_length
;
1334 static int hf_r3_peekpoke_poke8
;
1335 static int hf_r3_peekpoke_poke16
;
1336 static int hf_r3_peekpoke_poke24
;
1337 static int hf_r3_peekpoke_poke32
;
1338 static int hf_r3_peekpoke_pokestring
;
1340 static int hf_r3_firmwaredownload_length
;
1341 static int hf_r3_firmwaredownload_record
;
1342 static int hf_r3_firmwaredownload_action
;
1343 static int hf_r3_firmwaredownload_timeout
;
1344 static int hf_r3_firmwaredownload_nvram
;
1345 static int hf_r3_firmwaredownload_address
;
1346 static int hf_r3_firmwaredownload_bytes
;
1347 static int hf_r3_firmwaredownload_data
;
1348 static int hf_r3_firmwaredownload_crc
;
1349 static int hf_r3_firmwaredownload_crc_bad
;
1351 static int hf_r3_nvramchecksumvalue
;
1352 static int hf_r3_nvramchecksumvalue_fixup
;
1354 static int hf_r3_capabilities
;
1355 static int hf_r3_capabilities_length
;
1356 static int hf_r3_capabilities_type
;
1357 static int hf_r3_capabilities_value
;
1359 static int hf_r3_lockstate
;
1360 static int hf_r3_lockstate_passage
;
1361 static int hf_r3_lockstate_panic
;
1362 static int hf_r3_lockstate_lockout
;
1363 static int hf_r3_lockstate_relock
;
1364 static int hf_r3_lockstate_autoopen
;
1365 static int hf_r3_lockstate_nextauto
;
1366 static int hf_r3_lockstate_lockstate
;
1367 static int hf_r3_lockstate_wantstate
;
1368 static int hf_r3_lockstate_remote
;
1369 static int hf_r3_lockstate_update
;
1370 static int hf_r3_lockstate_exceptionspresent
;
1371 static int hf_r3_lockstate_exceptionsactive
;
1372 static int hf_r3_lockstate_timezonespresent
;
1373 static int hf_r3_lockstate_timezonesactive
;
1374 static int hf_r3_lockstate_autounlockspresent
;
1375 static int hf_r3_lockstate_autounlocksactive
;
1376 static int hf_r3_lockstate_uapmspresent
;
1377 static int hf_r3_lockstate_uapmsactive
;
1378 static int hf_r3_lockstate_uapmrelockspresent
;
1379 static int hf_r3_lockstate_uapmreslocksactive
;
1380 static int hf_r3_lockstate_nvramprotect
;
1381 static int hf_r3_lockstate_nvramchecksum
;
1383 /*static int hf_r3_mortisestatelog;*/
1384 static int hf_r3_mortisestatelog_pointer
;
1385 static int hf_r3_mortisestatelog_mortisetype
;
1386 static int hf_r3_mortisestatelog_waiting
;
1387 static int hf_r3_mortisestatelog_state
;
1388 static int hf_r3_mortisestatelog_last
;
1389 static int hf_r3_mortisestatelog_event
;
1391 static int hf_r3_timerchain_newtick
;
1392 static int hf_r3_timerchain_currentboundary
;
1393 static int hf_r3_timerchain_tasktag
;
1394 static int hf_r3_timerchain_address
;
1395 static int hf_r3_timerchain_reload
;
1396 static int hf_r3_timerchain_boundary
;
1397 static int hf_r3_timerchain_count
;
1398 static int hf_r3_timerchain_flags
;
1400 static int hf_r3_taskflags_taskid
;
1401 static int hf_r3_taskflags_flags
;
1403 static int hf_r3_checkpointlog_entryptr
;
1404 static int hf_r3_checkpointlog_rcon
;
1405 static int hf_r3_checkpointlog_checkpoint
;
1407 static int hf_r3_cpuregisters_intcon
;
1408 static int hf_r3_cpuregisters_intcon2
;
1409 static int hf_r3_cpuregisters_intcon3
;
1410 static int hf_r3_cpuregisters_pir1
;
1411 static int hf_r3_cpuregisters_pir2
;
1412 static int hf_r3_cpuregisters_pir3
;
1413 static int hf_r3_cpuregisters_pie1
;
1414 static int hf_r3_cpuregisters_pie2
;
1415 static int hf_r3_cpuregisters_pie3
;
1416 static int hf_r3_cpuregisters_ipr1
;
1417 static int hf_r3_cpuregisters_ipr2
;
1418 static int hf_r3_cpuregisters_ipr3
;
1419 static int hf_r3_cpuregisters_rcon
;
1420 static int hf_r3_cpuregisters_osccon
;
1421 static int hf_r3_cpuregisters_rcsta
;
1422 static int hf_r3_cpuregisters_txsta
;
1423 static int hf_r3_cpuregisters_rcsta2
;
1424 static int hf_r3_cpuregisters_txsta2
;
1425 static int hf_r3_cpuregisters_wdtcon
;
1427 static int hf_r3_cpuregisters_intcon_rbif
;
1428 static int hf_r3_cpuregisters_intcon_int0if
;
1429 static int hf_r3_cpuregisters_intcon_tmr0if
;
1430 static int hf_r3_cpuregisters_intcon_rbie
;
1431 static int hf_r3_cpuregisters_intcon_int0ie
;
1432 static int hf_r3_cpuregisters_intcon_tmr0ie
;
1433 static int hf_r3_cpuregisters_intcon_giel
;
1434 static int hf_r3_cpuregisters_intcon_gieh
;
1435 static int hf_r3_cpuregisters_intcon2_rbip
;
1436 static int hf_r3_cpuregisters_intcon2_int3ip
;
1437 static int hf_r3_cpuregisters_intcon2_tmr0ip
;
1438 static int hf_r3_cpuregisters_intcon2_intedg3
;
1439 static int hf_r3_cpuregisters_intcon2_intedg2
;
1440 static int hf_r3_cpuregisters_intcon2_intedg1
;
1441 static int hf_r3_cpuregisters_intcon2_intedg0
;
1442 static int hf_r3_cpuregisters_intcon2_rbpu
;
1443 static int hf_r3_cpuregisters_intcon3_int1if
;
1444 static int hf_r3_cpuregisters_intcon3_int2if
;
1445 static int hf_r3_cpuregisters_intcon3_int3if
;
1446 static int hf_r3_cpuregisters_intcon3_int1ie
;
1447 static int hf_r3_cpuregisters_intcon3_int2ie
;
1448 static int hf_r3_cpuregisters_intcon3_int3ie
;
1449 static int hf_r3_cpuregisters_intcon3_int1ip
;
1450 static int hf_r3_cpuregisters_intcon3_int2ip
;
1451 static int hf_r3_cpuregisters_pir1_tmr1if
;
1452 static int hf_r3_cpuregisters_pir1_tmr2if
;
1453 static int hf_r3_cpuregisters_pir1_ccp1if
;
1454 static int hf_r3_cpuregisters_pir1_ssp1if
;
1455 static int hf_r3_cpuregisters_pir1_tx1if
;
1456 static int hf_r3_cpuregisters_pir1_rc1if
;
1457 static int hf_r3_cpuregisters_pir1_adif
;
1458 static int hf_r3_cpuregisters_pir1_pspif
;
1459 static int hf_r3_cpuregisters_pir2_ccp2if
;
1460 static int hf_r3_cpuregisters_pir2_tmr3if
;
1461 static int hf_r3_cpuregisters_pir2_hlvdif
;
1462 static int hf_r3_cpuregisters_pir2_bcl1if
;
1463 static int hf_r3_cpuregisters_pir2_eeif
;
1464 static int hf_r3_cpuregisters_pir2_unused5
;
1465 static int hf_r3_cpuregisters_pir2_cmif
;
1466 static int hf_r3_cpuregisters_pir2_oscfif
;
1467 static int hf_r3_cpuregisters_pir3_ccp3if
;
1468 static int hf_r3_cpuregisters_pir3_ccp4if
;
1469 static int hf_r3_cpuregisters_pir3_ccp5if
;
1470 static int hf_r3_cpuregisters_pir3_tmr4if
;
1471 static int hf_r3_cpuregisters_pir3_tx2if
;
1472 static int hf_r3_cpuregisters_pir3_rc2if
;
1473 static int hf_r3_cpuregisters_pir3_bcl2if
;
1474 static int hf_r3_cpuregisters_pir3_ssp2if
;
1475 static int hf_r3_cpuregisters_pie1_tmr1ie
;
1476 static int hf_r3_cpuregisters_pie1_tmr2ie
;
1477 static int hf_r3_cpuregisters_pie1_ccp1ie
;
1478 static int hf_r3_cpuregisters_pie1_ssp1ie
;
1479 static int hf_r3_cpuregisters_pie1_tx1ie
;
1480 static int hf_r3_cpuregisters_pie1_rc1ie
;
1481 static int hf_r3_cpuregisters_pie1_adie
;
1482 static int hf_r3_cpuregisters_pie1_pspie
;
1483 static int hf_r3_cpuregisters_pie2_oscfie
;
1484 static int hf_r3_cpuregisters_pie2_cmie
;
1485 static int hf_r3_cpuregisters_pie2_unused2
;
1486 static int hf_r3_cpuregisters_pie2_eeie
;
1487 static int hf_r3_cpuregisters_pie2_bcl1ie
;
1488 static int hf_r3_cpuregisters_pie2_hlvdie
;
1489 static int hf_r3_cpuregisters_pie2_tmr3ie
;
1490 static int hf_r3_cpuregisters_pie2_ccp2ie
;
1491 static int hf_r3_cpuregisters_pie3_ccp3ie
;
1492 static int hf_r3_cpuregisters_pie3_ccp4ie
;
1493 static int hf_r3_cpuregisters_pie3_ccp5ie
;
1494 static int hf_r3_cpuregisters_pie3_tmr4ie
;
1495 static int hf_r3_cpuregisters_pie3_tx2ie
;
1496 static int hf_r3_cpuregisters_pie3_rc2ie
;
1497 static int hf_r3_cpuregisters_pie3_bcl2ie
;
1498 static int hf_r3_cpuregisters_pie3_ssp2ie
;
1499 static int hf_r3_cpuregisters_ipr1_tmr1ip
;
1500 static int hf_r3_cpuregisters_ipr1_tmr2ip
;
1501 static int hf_r3_cpuregisters_ipr1_ccp1ip
;
1502 static int hf_r3_cpuregisters_ipr1_ssp1ip
;
1503 static int hf_r3_cpuregisters_ipr1_tx1ip
;
1504 static int hf_r3_cpuregisters_ipr1_rc1ip
;
1505 static int hf_r3_cpuregisters_ipr1_adip
;
1506 static int hf_r3_cpuregisters_ipr1_pspip
;
1507 static int hf_r3_cpuregisters_ipr2_ccp2ip
;
1508 static int hf_r3_cpuregisters_ipr2_tmr3ip
;
1509 static int hf_r3_cpuregisters_ipr2_hlvdip
;
1510 static int hf_r3_cpuregisters_ipr2_bcl1ip
;
1511 static int hf_r3_cpuregisters_ipr2_eeip
;
1512 static int hf_r3_cpuregisters_ipr2_unused5
;
1513 static int hf_r3_cpuregisters_ipr2_cmip
;
1514 static int hf_r3_cpuregisters_ipr2_oscfip
;
1515 static int hf_r3_cpuregisters_ipr3_ccp2ip
;
1516 static int hf_r3_cpuregisters_ipr3_ccp4ip
;
1517 static int hf_r3_cpuregisters_ipr3_ccp5ip
;
1518 static int hf_r3_cpuregisters_ipr3_tmr4ip
;
1519 static int hf_r3_cpuregisters_ipr3_tx2ip
;
1520 static int hf_r3_cpuregisters_ipr3_rc2ip
;
1521 static int hf_r3_cpuregisters_ipr3_bcl2ip
;
1522 static int hf_r3_cpuregisters_ipr3_ssp2ip
;
1523 static int hf_r3_cpuregisters_rcon_bor
;
1524 static int hf_r3_cpuregisters_rcon_por
;
1525 static int hf_r3_cpuregisters_rcon_pd
;
1526 static int hf_r3_cpuregisters_rcon_to
;
1527 static int hf_r3_cpuregisters_rcon_unused4
;
1528 static int hf_r3_cpuregisters_rcon_ri
;
1529 static int hf_r3_cpuregisters_rcon_sboren
;
1530 static int hf_r3_cpuregisters_rcon_ipen
;
1531 static int hf_r3_cpuregisters_osccon_scs0
;
1532 static int hf_r3_cpuregisters_osccon_scs1
;
1533 static int hf_r3_cpuregisters_osccon_iofs
;
1534 static int hf_r3_cpuregisters_osccon_osts
;
1535 static int hf_r3_cpuregisters_osccon_ircf0
;
1536 static int hf_r3_cpuregisters_osccon_ircf1
;
1537 static int hf_r3_cpuregisters_osccon_ircf2
;
1538 static int hf_r3_cpuregisters_osccon_idlen
;
1539 static int hf_r3_cpuregisters_rcsta_rx9d
;
1540 static int hf_r3_cpuregisters_rcsta_oerr
;
1541 static int hf_r3_cpuregisters_rcsta_ferr
;
1542 static int hf_r3_cpuregisters_rcsta_adden
;
1543 static int hf_r3_cpuregisters_rcsta_cren
;
1544 static int hf_r3_cpuregisters_rcsta_sren
;
1545 static int hf_r3_cpuregisters_rcsta_rx9
;
1546 static int hf_r3_cpuregisters_rcsta_spen
;
1547 static int hf_r3_cpuregisters_txsta_tx9d
;
1548 static int hf_r3_cpuregisters_txsta_trmt
;
1549 static int hf_r3_cpuregisters_txsta_brgh
;
1550 static int hf_r3_cpuregisters_txsta_sendb
;
1551 static int hf_r3_cpuregisters_txsta_sync
;
1552 static int hf_r3_cpuregisters_txsta_txen
;
1553 static int hf_r3_cpuregisters_txsta_tx9
;
1554 static int hf_r3_cpuregisters_txsta_csrc
;
1555 static int hf_r3_cpuregisters_rcsta2_rx9d
;
1556 static int hf_r3_cpuregisters_rcsta2_oerr
;
1557 static int hf_r3_cpuregisters_rcsta2_ferr
;
1558 static int hf_r3_cpuregisters_rcsta2_adden
;
1559 static int hf_r3_cpuregisters_rcsta2_cren
;
1560 static int hf_r3_cpuregisters_rcsta2_sren
;
1561 static int hf_r3_cpuregisters_rcsta2_rx9
;
1562 static int hf_r3_cpuregisters_rcsta2_spen
;
1563 static int hf_r3_cpuregisters_txsta2_tx9d
;
1564 static int hf_r3_cpuregisters_txsta2_trmt
;
1565 static int hf_r3_cpuregisters_txsta2_brgh
;
1566 static int hf_r3_cpuregisters_txsta2_sendb
;
1567 static int hf_r3_cpuregisters_txsta2_sync
;
1568 static int hf_r3_cpuregisters_txsta2_txen
;
1569 static int hf_r3_cpuregisters_txsta2_tx9
;
1570 static int hf_r3_cpuregisters_txsta2_csrc
;
1571 static int hf_r3_cpuregisters_wdtcon_swdten
;
1572 static int hf_r3_cpuregisters_wdtcon_unused1
;
1573 static int hf_r3_cpuregisters_wdtcon_unused2
;
1574 static int hf_r3_cpuregisters_wdtcon_unused3
;
1575 static int hf_r3_cpuregisters_wdtcon_unused4
;
1576 static int hf_r3_cpuregisters_wdtcon_unused5
;
1577 static int hf_r3_cpuregisters_wdtcon_unused6
;
1578 static int hf_r3_cpuregisters_wdtcon_unused7
;
1580 static int hf_r3_dumpm41t81_reg00
;
1581 static int hf_r3_dumpm41t81_reg01
;
1582 static int hf_r3_dumpm41t81_reg02
;
1583 static int hf_r3_dumpm41t81_reg03
;
1584 static int hf_r3_dumpm41t81_reg04
;
1585 static int hf_r3_dumpm41t81_reg05
;
1586 static int hf_r3_dumpm41t81_reg06
;
1587 static int hf_r3_dumpm41t81_reg07
;
1588 static int hf_r3_dumpm41t81_reg08
;
1589 static int hf_r3_dumpm41t81_reg09
;
1590 static int hf_r3_dumpm41t81_reg0a
;
1591 static int hf_r3_dumpm41t81_reg0b
;
1592 static int hf_r3_dumpm41t81_reg0c
;
1593 static int hf_r3_dumpm41t81_reg0d
;
1594 static int hf_r3_dumpm41t81_reg0e
;
1595 static int hf_r3_dumpm41t81_reg0f
;
1596 static int hf_r3_dumpm41t81_reg10
;
1597 static int hf_r3_dumpm41t81_reg11
;
1598 static int hf_r3_dumpm41t81_reg12
;
1599 static int hf_r3_dumpm41t81_reg13
;
1601 static int hf_r3_dumpm41t81_reg00_sec1
;
1602 static int hf_r3_dumpm41t81_reg00_sec01
;
1603 static int hf_r3_dumpm41t81_reg01_st
;
1604 static int hf_r3_dumpm41t81_reg01_10sec
;
1605 static int hf_r3_dumpm41t81_reg01_1sec
;
1606 static int hf_r3_dumpm41t81_reg02_notused
;
1607 static int hf_r3_dumpm41t81_reg02_10min
;
1608 static int hf_r3_dumpm41t81_reg02_1min
;
1609 static int hf_r3_dumpm41t81_reg03_cbe
;
1610 static int hf_r3_dumpm41t81_reg03_cb
;
1611 static int hf_r3_dumpm41t81_reg03_10hour
;
1612 static int hf_r3_dumpm41t81_reg03_1hour
;
1613 static int hf_r3_dumpm41t81_reg04_notused
;
1614 static int hf_r3_dumpm41t81_reg04_dow
;
1615 static int hf_r3_dumpm41t81_reg05_notused
;
1616 static int hf_r3_dumpm41t81_reg05_10day
;
1617 static int hf_r3_dumpm41t81_reg05_1day
;
1618 static int hf_r3_dumpm41t81_reg06_notused
;
1619 static int hf_r3_dumpm41t81_reg06_10month
;
1620 static int hf_r3_dumpm41t81_reg06_1month
;
1621 static int hf_r3_dumpm41t81_reg07_10year
;
1622 static int hf_r3_dumpm41t81_reg07_1year
;
1623 static int hf_r3_dumpm41t81_reg08_out
;
1624 static int hf_r3_dumpm41t81_reg08_ft
;
1625 static int hf_r3_dumpm41t81_reg08_s
;
1626 static int hf_r3_dumpm41t81_reg08_cal
;
1627 static int hf_r3_dumpm41t81_reg09_notused
;
1628 static int hf_r3_dumpm41t81_reg09_bmb
;
1629 static int hf_r3_dumpm41t81_reg09_rb
;
1630 static int hf_r3_dumpm41t81_reg0a_afe
;
1631 static int hf_r3_dumpm41t81_reg0a_sqwe
;
1632 static int hf_r3_dumpm41t81_reg0a_abe
;
1633 static int hf_r3_dumpm41t81_reg0a_10monthalm
;
1634 static int hf_r3_dumpm41t81_reg0a_1monthalm
;
1635 static int hf_r3_dumpm41t81_reg0b_rpt5
;
1636 static int hf_r3_dumpm41t81_reg0b_rpt4
;
1637 static int hf_r3_dumpm41t81_reg0b_10dayalm
;
1638 static int hf_r3_dumpm41t81_reg0b_1dayalm
;
1639 static int hf_r3_dumpm41t81_reg0c_rpt3
;
1640 static int hf_r3_dumpm41t81_reg0c_ht
;
1641 static int hf_r3_dumpm41t81_reg0c_10houralm
;
1642 static int hf_r3_dumpm41t81_reg0c_1houralm
;
1643 static int hf_r3_dumpm41t81_reg0d_rpt2
;
1644 static int hf_r3_dumpm41t81_reg0d_10minalm
;
1645 static int hf_r3_dumpm41t81_reg0d_1minalm
;
1646 static int hf_r3_dumpm41t81_reg0e_rpt1
;
1647 static int hf_r3_dumpm41t81_reg0e_10secalm
;
1648 static int hf_r3_dumpm41t81_reg0e_1secalm
;
1649 static int hf_r3_dumpm41t81_reg0f_wdf
;
1650 static int hf_r3_dumpm41t81_reg0f_af
;
1651 static int hf_r3_dumpm41t81_reg0f_notused
;
1652 static int hf_r3_dumpm41t81_reg10_notused
;
1653 static int hf_r3_dumpm41t81_reg11_notused
;
1654 static int hf_r3_dumpm41t81_reg12_notused
;
1655 static int hf_r3_dumpm41t81_reg13_rs
;
1656 static int hf_r3_dumpm41t81_reg13_notused
;
1658 static int hf_r3_sn_manufacturer
;
1659 static int hf_r3_sn_year
;
1660 static int hf_r3_sn_week
;
1661 static int hf_r3_sn_model
;
1662 static int hf_r3_sn_sequence
;
1663 static int hf_r3_sn_group
;
1664 static int hf_r3_sn_nid
;
1665 static int hf_r3_sn_hid
;
1666 static int hf_r3_sn_power_supply
;
1667 static int hf_r3_sn_mortise
;
1669 static int hf_r3_debuglog_recordnumber
;
1670 static int hf_r3_debuglog_flags
;
1671 static int hf_r3_debuglog_tick
;
1673 static int hf_r3_adduserparamtype
;
1674 static int hf_r3_adduserparamtypelength
;
1675 static int hf_r3_adduserparamtypetype
;
1676 /*static int hf_r3_adduserparamtypedatalen;*/
1677 /*static int hf_r3_adduserparamtypeerror;*/
1678 static int hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_LAST
];
1681 static int ett_r3header
;
1682 static int ett_r3tail
;
1683 static int ett_r3payload
;
1684 static int ett_r3cmd
;
1685 static int ett_r3configitem
;
1686 static int ett_r3upstreamcommand
;
1687 static int ett_r3upstreamfield
;
1688 static int ett_r3timezone
;
1689 static int ett_r3expireon
;
1690 static int ett_r3datetime
;
1691 static int ett_r3eventlogrecord
;
1692 static int ett_r3declinedlogrecord
;
1693 static int ett_r3alarmlogrecord
;
1694 static int ett_r3debugmsg
;
1695 static int ett_r3defineexceptionstartdate
;
1696 static int ett_r3defineexceptionenddate
;
1697 static int ett_r3defineexceptiongroupbits
;
1698 static int ett_r3definecalendarmonth
[13];
1699 static int ett_r3definetimezonestarttime
;
1700 static int ett_r3definetimezoneendtime
;
1701 static int ett_r3definetimezonedaymap
;
1702 static int ett_r3eventlogdumpstarttime
;
1703 static int ett_r3eventlogdumpendtime
;
1704 static int ett_r3declinedlogdumpstarttime
;
1705 static int ett_r3declinedlogdumpendtime
;
1706 static int ett_r3alarmlogdumpstarttime
;
1707 static int ett_r3alarmlogdumpendtime
;
1708 static int ett_r3clearnvram
;
1709 static int ett_r3filters
;
1710 static int ett_r3alarmlist
;
1711 static int ett_r3alarmcfg
;
1712 static int ett_r3commandmfg
;
1713 static int ett_r3serialnumber
;
1714 static int ett_r3iopins
;
1715 static int ett_r3checksumresults
;
1716 static int ett_r3checksumresultsfield
;
1717 static int ett_r3forceoptions
;
1718 static int ett_r3peekpoke
;
1719 static int ett_r3downloadfirmware
;
1720 static int ett_r3capabilities
;
1721 static int ett_r3lockstate
;
1722 static int ett_r3mortisestatelog
;
1723 static int ett_r3timerchain
;
1724 static int ett_r3taskflags
;
1725 static int ett_r3taskflagsentry
;
1726 static int ett_r3checkpointlog
;
1727 static int ett_r3checkpointlogentry
;
1728 static int ett_r3cpuregisters
;
1729 static int ett_r3cpuregister
;
1730 static int ett_r3m41t81registers
;
1731 static int ett_r3m41t81register
;
1732 static int ett_r3debuglogrecord
;
1733 static int ett_r3setdatetime
;
1734 static int ett_r3manageuser
;
1736 static expert_field ei_r3_response_hasdata_octet_2
;
1737 static expert_field ei_r3_mfgfield_too_many_adc_values
;
1738 static expert_field ei_r3_peekpoke_operation
;
1739 static expert_field ei_r3_response_hasdata_octet_1
;
1740 static expert_field ei_r3_reserved_upstream_command_value
;
1741 static expert_field ei_r3_firmwaredownload_action
;
1742 static expert_field ei_r3_malformed_length
;
1743 static expert_field ei_r3_mfgfield
;
1744 static expert_field ei_r3_unknown_command_value
;
1745 static expert_field ei_r3_response_hasdata_octet_3
;
1746 static expert_field ei_r3_cmd_downloadfirmwaretimeout
;
1748 static dissector_handle_t r3_handle
;
1751 * Indicates next command to be processed as a manufacturing command
1753 static int mfgCommandFlag
;
1756 * Some enums that don't exist in public.h and should
1760 CHECKPOINT_NONE
= 0,
1813 CHECKPOINT_WANDERING
,
1814 CHECKPOINT_STRAYHPINT
,
1815 CHECKPOINT_STRAYLPINT
,
1817 CHECKPOINT_DPACDEBUG
,
1824 CONFIGTYPE_NONE
= 0,
1836 DOWNLOADFIRMWARE_START
= 0,
1837 DOWNLOADFIRMWARE_DATA
,
1838 DOWNLOADFIRMWARE_COMPLETE
,
1839 DOWNLOADFIRMWARE_ABORT
,
1840 DOWNLOADFIRMWARE_RESET
,
1841 DOWNLOADFIRMWARE_LAST
1847 MORTISEEVENT_DX_THROWN
= 0,
1848 MORTISEEVENT_DX_RETRACTED
,
1849 MORTISEEVENT_LX_RETRACTED
,
1850 MORTISEEVENT_LX_EXTENDED
,
1851 MORTISEEVENT_AX_EXTENDED
,
1852 MORTISEEVENT_AX_RETRACTED
,
1853 MORTISEEVENT_RX_DEPRESSED
,
1854 MORTISEEVENT_RX_RELEASED
,
1855 MORTISEEVENT_PX_OPEN
,
1856 MORTISEEVENT_PX_CLOSED
,
1857 MORTISEEVENT_MX_UNLOCKED
,
1858 MORTISEEVENT_MX_LOCKED
,
1865 * Print things with nice textual names
1867 static const value_string r3_accessmodenames
[] =
1869 { ACCESSMODE_NONE
, "ACCESMODE_NONE" },
1870 { ACCESSMODE_PRIMARYONLY
, "ACCESSMODE_PRIMARYONLY" },
1871 { ACCESSMODE_PRIMARYORAUX
, "ACCESSMODE_PRIMARYORAUX" },
1872 { ACCESSMODE_PRIMARYANDAUX
, "ACCESSMODE_PRIMARYANDAUX" },
1873 { ACCESSMODE_PRIMARYTHENAUX
, "ACCESSMODE_PRIMARYTHENAUX" },
1876 static value_string_ext r3_accessmodenames_ext
= VALUE_STRING_EXT_INIT(r3_accessmodenames
);
1878 static const value_string r3_adduserparamtypenames
[] =
1880 { ADDUSERPARAMTYPE_DISPOSITION
, "ADDUSERPARAMTYPE_DISPOSITION" },
1881 { ADDUSERPARAMTYPE_USERNO
, "ADDUSERPARAMTYPE_USERNO" },
1882 { ADDUSERPARAMTYPE_ACCESSALWAYS
, "ADDUSERPARAMTYPE_ACCESSALWAYS" },
1883 { ADDUSERPARAMTYPE_ACCESSMODE
, "ADDUSERPARAMTYPE_ACCESSMODE" },
1884 { ADDUSERPARAMTYPE_CACHED
, "ADDUSERPARAMTYPE_CACHED" },
1885 { ADDUSERPARAMTYPE_USERTYPE
, "ADDUSERPARAMTYPE_USERTYPE" },
1886 { ADDUSERPARAMTYPE_PRIMARYFIELD
, "ADDUSERPARAMTYPE_PRIMARYFIELD" },
1887 { ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
, "ADDUSERPARAMTYPE_PRIMARYFIELDTYPE" },
1888 { ADDUSERPARAMTYPE_AUXFIELD
, "ADDUSERPARAMTYPE_AUXFIELD" },
1889 { ADDUSERPARAMTYPE_AUXFIELDTYPE
, "ADDUSERPARAMTYPE_AUXFIELDTYPE" },
1890 { ADDUSERPARAMTYPE_TIMEZONE
, "ADDUSERPARAMTYPE_TIMEZONE" },
1891 { ADDUSERPARAMTYPE_EXPIREON
, "ADDUSERPARAMTYPE_EXPIREON" },
1892 { ADDUSERPARAMTYPE_USECOUNT
, "ADDUSERPARAMTYPE_USECOUNT" },
1893 { ADDUSERPARAMTYPE_EXCEPTIONGROUP
, "ADDUSERPARAMTYPE_EXCEPTIONGROUP" },
1896 static value_string_ext r3_adduserparamtypenames_ext
= VALUE_STRING_EXT_INIT(r3_adduserparamtypenames
);
1898 static const value_string r3_alarmidnames
[] =
1900 { ALARMID_NONE
, "ALARMID_NONE" },
1901 { ALARMID_VALIDIN
, "ALARMID_VALIDIN" },
1902 { ALARMID_DENIEDACCESS
, "ALARMID_DENIEDACCESS" },
1903 { ALARMID_SECURED
, "ALARMID_SECURED" },
1904 { ALARMID_DOORFORCED
, "ALARMID_DOORFORCED" },
1905 { ALARMID_KEYOVERRIDE
, "ALARMID_KEYOVERRIDE" },
1906 { ALARMID_INVALIDENTRY
, "ALARMID_INVALIDENTRY" },
1907 { ALARMID_DOORAJAR
, "ALARMID_DOORAJAR" },
1908 { ALARMID_LOWBATTERY
, "ALARMID_LOWBATTERY" },
1909 { ALARMID_RXHELD
, "ALARMID_RXHELD" },
1912 static value_string_ext r3_alarmidnames_ext
= VALUE_STRING_EXT_INIT(r3_alarmidnames
);
1914 static const value_string r3_capabilitiesnames
[] =
1916 { CAPABILITIES_USERS
, "CAPABILITIES_USERS" },
1917 { CAPABILITIES_TIMEZONES
, "CAPABILITIES_TIMEZONES" },
1918 { CAPABILITIES_EXCEPTIONS
, "CAPABILITIES_EXCEPTIONS" },
1919 { CAPABILITIES_EXCEPTIONGROUPS
, "CAPABILITIES_EXCEPTIONGROUPS" },
1920 { CAPABILITIES_EVENTLOG
, "CAPABILITIES_EVENTLOG" },
1921 { CAPABILITIES_DECLINEDLOG
, "CAPABILITIES_DECLINEDLOG" },
1922 { CAPABILITIES_ALARMLOG
, "CAPABILITIES_ALARMLOG" },
1923 { CAPABILITIES_TOTALEVENTS
, "CAPABILITIES_TOTALEVENTS" },
1926 static value_string_ext r3_capabilitiesnames_ext
= VALUE_STRING_EXT_INIT(r3_capabilitiesnames
);
1928 static const value_string r3_checkpointnames
[] =
1930 { CHECKPOINT_NONE
, "CHECKPOINT_NONE" },
1931 { CHECKPOINT_ADC
, "CHECKPOINT_ADC" },
1932 { CHECKPOINT_DPAC1
, "CHECKPOINT_DPAC1" },
1933 { CHECKPOINT_DPAC2
, "CHECKPOINT_DPAC2" },
1934 { CHECKPOINT_I2C1
, "CHECKPOINT_I2C1" },
1935 { CHECKPOINT_I2C2
, "CHECKPOINT_I2C2" },
1936 { CHECKPOINT_I2C3
, "CHECKPOINT_I2C3" },
1937 { CHECKPOINT_I2C4
, "CHECKPOINT_I2C4" },
1938 { CHECKPOINT_I2C5
, "CHECKPOINT_I2C5" },
1939 { CHECKPOINT_I2C6
, "CHECKPOINT_I2C6" },
1940 { CHECKPOINT_I2C7
, "CHECKPOINT_I2C7" },
1941 { CHECKPOINT_I2C8
, "CHECKPOINT_I2C8" },
1942 { CHECKPOINT_I2C9
, "CHECKPOINT_I2C9" },
1943 { CHECKPOINT_I2C10
, "CHECKPOINT_I2C10" },
1944 { CHECKPOINT_I2C11
, "CHECKPOINT_I2C11" },
1945 { CHECKPOINT_I2C12
, "CHECKPOINT_I2C12" },
1946 { CHECKPOINT_I2C13
, "CHECKPOINT_I2C13" },
1947 { CHECKPOINT_I2C14
, "CHECKPOINT_I2C14" },
1948 { CHECKPOINT_I2C15
, "CHECKPOINT_I2C15" },
1949 { CHECKPOINT_I2C16
, "CHECKPOINT_I2C16" },
1950 { CHECKPOINT_I2C17
, "CHECKPOINT_I2C17" },
1951 { CHECKPOINT_I2C18
, "CHECKPOINT_I2C18" },
1952 { CHECKPOINT_I2C19
, "CHECKPOINT_I2C19" },
1953 { CHECKPOINT_I2C20
, "CHECKPOINT_I2C20" },
1954 { CHECKPOINT_I2C21
, "CHECKPOINT_I2C21" },
1955 { CHECKPOINT_I2C22
, "CHECKPOINT_I2C22" },
1956 { CHECKPOINT_I2C23
, "CHECKPOINT_I2C23" },
1957 { CHECKPOINT_I2C24
, "CHECKPOINT_I2C24" },
1958 { CHECKPOINT_I2C25
, "CHECKPOINT_I2C25" },
1959 { CHECKPOINT_I2C26
, "CHECKPOINT_I2C26" },
1960 { CHECKPOINT_I2C27
, "CHECKPOINT_I2C27" },
1961 { CHECKPOINT_I2C28
, "CHECKPOINT_I2C28" },
1962 { CHECKPOINT_I2C29
, "CHECKPOINT_I2C29" },
1963 { CHECKPOINT_I2C30
, "CHECKPOINT_I2C30" },
1964 { CHECKPOINT_I2C31
, "CHECKPOINT_I2C31" },
1965 { CHECKPOINT_I2C32
, "CHECKPOINT_I2C32" },
1966 { CHECKPOINT_I2C33
, "CHECKPOINT_I2C33" },
1967 { CHECKPOINT_I2C34
, "CHECKPOINT_I2C34" },
1968 { CHECKPOINT_I2C35
, "CHECKPOINT_I2C35" },
1969 { CHECKPOINT_I2C36
, "CHECKPOINT_I2C36" },
1970 { CHECKPOINT_I2C37
, "CHECKPOINT_I2C37" },
1971 { CHECKPOINT_I2C38
, "CHECKPOINT_I2C38" },
1972 { CHECKPOINT_I2C39
, "CHECKPOINT_I2C39" },
1973 { CHECKPOINT_I2C40
, "CHECKPOINT_I2C40" },
1974 { CHECKPOINT_I2C41
, "CHECKPOINT_I2C41" },
1975 { CHECKPOINT_I2C42
, "CHECKPOINT_I2C42" },
1976 { CHECKPOINT_I2C43
, "CHECKPOINT_I2C43" },
1977 { CHECKPOINT_I2C44
, "CHECKPOINT_I2C44" },
1978 { CHECKPOINT_I2C45
, "CHECKPOINT_I2C45" },
1979 { CHECKPOINT_NVRAM
, "CHECKPOINT_NVRAM" },
1980 { CHECKPOINT_SERIAL1
, "CHECKPOINT_SERIAL1" },
1981 { CHECKPOINT_SERIAL2
, "CHECKPOINT_SERIAL2" },
1982 { CHECKPOINT_SERIAL3
, "CHECKPOINT_SERIAL3" },
1983 { CHECKPOINT_WANDERING
, "CHECKPOINT_WANDERING" },
1984 { CHECKPOINT_STRAYHPINT
, "CHECKPOINT_STRAYHPINT" },
1985 { CHECKPOINT_STRAYLPINT
, "CHECKPOINT_STRAYLPINT" },
1986 { CHECKPOINT_TESTWDT
, "CHECKPOINT_TESTWDT" },
1987 { CHECKPOINT_DPACDEBUG
, "CHECKPOINT_DPACDEBUG" },
1990 static value_string_ext r3_checkpointnames_ext
= VALUE_STRING_EXT_INIT(r3_checkpointnames
);
1992 static const value_string r3_checksumresultnames
[] =
1994 { CHECKSUMRESULT_CONFIGURATIONNVRAM
, "CHECKSUMRESULT_CONFIGURATIONNVRAM" },
1995 { CHECKSUMRESULT_EXCEPTIONS
, "CHECKSUMRESULT_EXCEPTIONS" },
1996 { CHECKSUMRESULT_EXCEPTIONGROUPS
, "CHECKSUMRESULT_EXCEPTIONGROUPS" },
1997 { CHECKSUMRESULT_TZCALENDARS
, "CHECKSUMRESULT_TZCALENDARS" },
1998 { CHECKSUMRESULT_TIMEZONES
, "CHECKSUMRESULT_TIMEZONES" },
1999 { CHECKSUMRESULT_USERS
, "CHECKSUMRESULT_USERS" },
2000 { CHECKSUMRESULT_CACHELRU
, "CHECKSUMRESULT_CACHELRU" },
2003 static value_string_ext r3_checksumresultnames_ext
= VALUE_STRING_EXT_INIT(r3_checksumresultnames
);
2005 static const value_string r3_cmdnames
[] =
2007 { CMD_RESPONSE
, "CMD_RESPONSE" },
2008 { CMD_HANDSHAKE
, "CMD_HANDSHAKE" },
2009 { CMD_KILLSESSION
, "CMD_KILLSESSION" },
2010 { CMD_QUERYSERIALNUMBER
, "CMD_QUERYSERIALNUMBER" },
2011 { CMD_QUERYVERSION
, "CMD_QUERYVERSION" },
2012 { CMD_SETDATETIME
, "CMD_SETDATETIME" },
2013 { CMD_QUERYDATETIME
, "CMD_QUERYDATETIME" },
2014 { CMD_SETCONFIG
, "CMD_SETCONFIG" },
2015 { CMD_GETCONFIG
, "CMD_GETCONFIG" },
2016 { CMD_MANAGEUSER
, "CMD_MANAGEUSER" },
2017 { CMD_DELETEUSERS
, "CMD_DELETEUSERS" },
2018 { CMD_DEFINEEXCEPTION
, "CMD_DEFINEEXCEPTION" },
2019 { CMD_DEFINEEXCEPTIONGROUP
, "CMD_DEFINEEXCEPTIONGROUP" },
2020 { CMD_DEFINECALENDAR
, "CMD_DEFINECALENDAR" },
2021 { CMD_DEFINETIMEZONE
, "CMD_DEFINETIMEZONE" },
2022 { CMD_RMTAUTHRETRY
, "CMD_RMTAUTHRETRY" },
2023 { CMD_FILTERS
, "CMD_FILTERS" },
2024 { CMD_ALARMCONFIGURE
, "CMD_ALARMCONFIGURE" },
2025 { CMD_EVENTLOGDUMP
, "CMD_EVENTLOGDUMP" },
2026 { CMD_DECLINEDLOGDUMP
, "CMD_DECLINEDLOGDUMP" },
2027 { CMD_ALARMLOGDUMP
, "CMD_ALARMLOGDUMP" },
2028 { CMD_DOWNLOADFIRMWARE
, "CMD_DOWNLOADFIRMWARE" },
2029 { CMD_DOWNLOADFIRMWARETIMEOUT
, "CMD_DOWNLOADFIRMWARETIMEOUT" },
2030 { CMD_POWERTABLESELECTION
, "CMD_POWERTABLESELECTION" },
2031 { CMD_CLEARNVRAM
, "CMD_CLEARNVRAM" },
2032 { CMD_DPAC
, "CMD_DPAC" },
2033 { CMD_SELFTEST
, "CMD_SELFTEST" },
2034 { CMD_RESET
, "CMD_RESET" },
2035 { CMD_LOGWRITE
, "CMD_LOGWRITE" },
2036 { CMD_MFGCOMMAND
, "CMD_MFGCOMMAND" },
2037 { CMD_NVRAMBACKUP
, "CMD_NVRAMBACKUP" },
2038 { CMD_EXTENDEDRESPONSE
, "CMD_EXTENDEDRESPONSE" },
2041 static value_string_ext r3_cmdnames_ext
= VALUE_STRING_EXT_INIT(r3_cmdnames
);
2043 static const value_string r3_cmdmfgnames
[] =
2045 { CMDMFG_SETSERIALNUMBER
, "CMDMFG_SETSERIALNUMBER" },
2046 { CMDMFG_SETCRYPTKEY
, "CMDMFG_SETCRYPTKEY" },
2047 { CMDMFG_DUMPNVRAM
, "CMDMFG_DUMPNVRAM" },
2048 { CMDMFG_TERMINAL
, "CMDMFG_TERMINAL" },
2049 { CMDMFG_REMOTEUNLOCK
, "CMDMFG_REMOTEUNLOCK" },
2050 { CMDMFG_AUXCTLRVERSION
, "CMDMFG_AUXCTLRVERSION" },
2051 { CMDMFG_IOPINS
, "CMDMFG_IOPINS" },
2052 { CMDMFG_ADCS
, "CMDMFG_ADCS" },
2053 { CMDMFG_HARDWAREID
, "CMDMFG_HARDWAREID" },
2054 { CMDMFG_CHECKPOINTLOGDUMP
, "CMDMFG_CHECKPOINTLOGDUMP" },
2055 { CMDMFG_CHECKPOINTLOGCLEAR
, "CMDMFG_CHECKPOINTLOGCLEAR" },
2056 { CMDMFG_READREGISTERS
, "CMDMFG_READREGISTERS" },
2057 { CMDMFG_FORCEOPTIONS
, "CMDMFG_FORCEOPTIONS" },
2058 { CMDMFG_COMMUSER
, "CMDMFG_COMMUSER" },
2059 { CMDMFG_DUMPKEYPAD
, "CMDMFG_DUMPKEYPAD" },
2060 { CMDMFG_BATTERYCHECK
, "CMDMFG_BATTERYCHECK" },
2061 { CMDMFG_RAMREFRESH
, "CMDMFG_RAMREFRESH" },
2062 { CMDMFG_TASKFLAGS
, "CMDMFG_TASKFLAGS" },
2063 { CMDMFG_TIMERCHAIN
, "CMDMFG_TIMERCHAIN" },
2064 { CMDMFG_PEEKPOKE
, "CMDMFG_PEEKPOKE" },
2065 { CMDMFG_LOCKSTATE
, "CMDMFG_LOCKSTATE" },
2066 { CMDMFG_CAPABILITIES
, "CMDMFG_CAPABILITIES" },
2067 { CMDMFG_DUMPM41T81
, "CMDMFG_DUMPM41T81" },
2068 { CMDMFG_DEBUGLOGDUMP
, "CMDMFG_DEBUGLOGDUMP" },
2069 { CMDMFG_DEBUGLOGCLEAR
, "CMDMFG_DEBUGLOGCLEAR" },
2070 { CMDMFG_TESTWDT
, "CMDMFG_TESTWDT" },
2071 { CMDMFG_QUERYCKSUM
, "CMDMFG_QUERYCKSUM" },
2072 { CMDMFG_VALIDATECHECKSUMS
, "CMDMFG_VALIDATECHECKSUMS" },
2073 { CMDMFG_REBUILDLRUCACHE
, "CMDMFG_REBUILDLRUCACHE" },
2074 { CMDMFG_TZUPDATE
, "CMDMFG_TZUPDATE" },
2075 { CMDMFG_TESTPRESERVE
, "CMDMFG_TESTPRESERVE" },
2076 { CMDMFG_MORTISESTATELOGDUMP
, "CMDMFG_MORTISESTATELOGDUMP" },
2077 { CMDMFG_MORTISESTATELOGCLEAR
, "CMDMFG_MORTISESTATELOGCLEAR" },
2078 { CMDMFG_MORTISEPINS
, "CMDMFG_MORTISEPINS" },
2079 { CMDMFG_HALTANDCATCHFIRE
, "CMDMFG_HALTANDCATCHFIRE" },
2082 static value_string_ext r3_cmdmfgnames_ext
= VALUE_STRING_EXT_INIT(r3_cmdmfgnames
);
2084 static const value_string r3_configitemnames
[] =
2086 { CONFIGITEM_SERIAL_NUMBER
, "CONFIGITEM_SERIAL_NUMBER" },
2087 { CONFIGITEM_CRYPT_KEY
, "CONFIGITEM_CRYPT_KEY" },
2088 { CONFIGITEM_HARDWARE_OPTIONS_MFG
, "CONFIGITEM_HARDWARE_OPTIONS_MFG" },
2089 { CONFIGITEM_HARDWARE_OPTIONS
, "CONFIGITEM_HARDWARE_OPTIONS" },
2090 { CONFIGITEM_NVRAM_CHANGES
, "CONFIGITEM_NVRAM_CHANGES" },
2091 { CONFIGITEM_NVRAMDIRTY
, "CONFIGITEM_NVRAMDIRTY" },
2092 { CONFIGITEM_NVRAM_WV
, "CONFIGITEM_NVRAM_WV" },
2093 { CONFIGITEM_ENABLE_WDT
, "CONFIGITEM_ENABLE_WDT" },
2094 { CONFIGITEM_EARLY_ACK
, "CONFIGITEM_EARLY_ACK" },
2095 { CONFIGITEM_CONSOLE_AES_ONLY
, "CONFIGITEM_CONSOLE_AES_ONLY" },
2096 { CONFIGITEM_RADIO_AES_ONLY
, "CONFIGITEM_RADIO_AES_ONLY" },
2097 { CONFIGITEM_NDRLE
, "CONFIGITEM_NDRLE" },
2098 { CONFIGITEM_SOMF
, "CONFIGITEM_SOMF" },
2099 { CONFIGITEM_NOGAF
, "CONFIGITEM_NOGAF" },
2100 { CONFIGITEM_CARD_READER_POWER
, "CONFIGITEM_CARD_READER_POWER" },
2101 { CONFIGITEM_PROX_ENABLE
, "CONFIGITEM_PROX_ENABLE" },
2102 { CONFIGITEM_CKSUMCONFIG
, "CONFIGITEM_CKSUMCONFIG" },
2103 { CONFIGITEM_DAILY_BATTERY_CHECK
, "CONFIGITEM_DAILY_BATTERY_CHECK" },
2104 { CONFIGITEM_DAILY_BATTERY_CHECK_HOUR
, "CONFIGITEM_DAILY_BATTERY_CHECK_HOUR" },
2105 { CONFIGITEM_BATTERY_LOW
, "CONFIGITEM_BATTERY_LOW" },
2106 { CONFIGITEM_LRU_HEAD
, "CONFIGITEM_LRU_HEAD" },
2107 { CONFIGITEM_LRU_TAIL
, "CONFIGITEM_LRU_TAIL" },
2108 { CONFIGITEM_RTC_CALIBRATION
, "CONFIGITEM_RTC_CALIBRATION" },
2109 { CONFIGITEM_ACVREQUESTER
, "CONFIGITEM_ACVREQUESTER" },
2110 { CONFIGITEM_LOCAL_LED
, "CONFIGITEM_LOCAL_LED" },
2111 { CONFIGITEM_ERRCNT_XORLEN
, "CONFIGITEM_ERRCNT_XORLEN" },
2112 { CONFIGITEM_ERRCNT_CRC
, "CONFIGITEM_ERRCNT_CRC" },
2113 { CONFIGITEM_ERRCNT_NOTSIGIL
, "CONFIGITEM_ERRCNT_NOTSIGIL" },
2114 { CONFIGITEM_ERRCNT_TIMEOUT
, "CONFIGITEM_ERRCNT_TIMEOUT" },
2115 { CONFIGITEM_ERRCNT_TOOLONG
, "CONFIGITEM_ERRCNT_TOOLONG" },
2116 { CONFIGITEM_ERRCNT_TOOSHORT
, "CONFIGITEM_ERRCNT_TOOSHORT" },
2117 { CONFIGITEM_ERRCNT_HITDEFAULT
, "CONFIGITEM_ERRCNT_HITDEFAULT" },
2118 { CONFIGITEM_ERRCNT_OVERRUN
, "CONFIGITEM_ERRCNT_OVERRUN" },
2119 { CONFIGITEM_ERRCNT_UARTFE
, "CONFIGITEM_ERRCNT_UARTFE" },
2120 { CONFIGITEM_ERRCNT_UARTOE
, "CONFIGITEM_ERRCNT_UARTOE" },
2121 { CONFIGITEM_DST_SET
, "CONFIGITEM_DST_SET" },
2122 { CONFIGITEM_DST_MODE
, "CONFIGITEM_DST_MODE" },
2123 { CONFIGITEM_DST_FORWARD_MONTH
, "CONFIGITEM_DST_FORWARD_MONTH" },
2124 { CONFIGITEM_DST_FORWARD_DOM
, "CONFIGITEM_DST_FORWARD_DOM" },
2125 { CONFIGITEM_DST_FORWARD_OOD
, "CONFIGITEM_DST_FORWARD_OOD" },
2126 { CONFIGITEM_DST_FORWARD_DOW
, "CONFIGITEM_DST_FORWARD_DOW" },
2127 { CONFIGITEM_DST_FORWARD_HOUR
, "CONFIGITEM_DST_FORWARD_HOUR" },
2128 { CONFIGITEM_DST_FORWARD_MINUTE
, "CONFIGITEM_DST_FORWARD_MINUTE" },
2129 { CONFIGITEM_DST_FORWARD_ADJUST
, "CONFIGITEM_DST_FORWARD_ADJUST" },
2130 { CONFIGITEM_DST_BACK_MONTH
, "CONFIGITEM_DST_BACK_MONTH" },
2131 { CONFIGITEM_DST_BACK_DOM
, "CONFIGITEM_DST_BACK_DOM" },
2132 { CONFIGITEM_DST_BACK_OOD
, "CONFIGITEM_DST_BACK_OOD" },
2133 { CONFIGITEM_DST_BACK_DOW
, "CONFIGITEM_DST_BACK_DOW" },
2134 { CONFIGITEM_DST_BACK_HOUR
, "CONFIGITEM_DST_BACK_HOUR" },
2135 { CONFIGITEM_DST_BACK_MINUTE
, "CONFIGITEM_DST_BACK_MINUTE" },
2136 { CONFIGITEM_DST_BACK_ADJUST
, "CONFIGITEM_DST_BACK_ADJUST" },
2137 { CONFIGITEM_EVENTLOG_ZEROMEM
, "CONFIGITEM_EVENTLOG_ZEROMEM" },
2138 { CONFIGITEM_EVENTLOG_BEGIN
, "CONFIGITEM_EVENTLOG_BEGIN" },
2139 { CONFIGITEM_EVENTLOG_RECORD
, "CONFIGITEM_EVENTLOG_RECORD" },
2140 { CONFIGITEM_EVENTLOG_ENTRIES
, "CONFIGITEM_EVENTLOG_ENTRIES" },
2141 { CONFIGITEM_EVENTLOG_WARNDEVICE
, "CONFIGITEM_EVENTLOG_WARNDEVICE" },
2142 { CONFIGITEM_EVENTLOG_WARNEVERY
, "CONFIGITEM_EVENTLOG_WARNEVERY" },
2143 { CONFIGITEM_EVENTLOG_RMTDEVICE
, "CONFIGITEM_EVENTLOG_RMTDEVICE" },
2144 { CONFIGITEM_DECLINEDLOG_ZEROMEM
, "CONFIGITEM_DECLINEDLOG_ZEROMEM" },
2145 { CONFIGITEM_DECLINEDLOG_BEGIN
, "CONFIGITEM_DECLINEDLOG_BEGIN" },
2146 { CONFIGITEM_DECLINEDLOG_RECORD
, "CONFIGITEM_DECLINEDLOG_RECORD" },
2147 { CONFIGITEM_DECLINEDLOG_ENTRIES
, "CONFIGITEM_DECLINEDLOG_ENTRIES" },
2148 { CONFIGITEM_DECLINEDLOG_WARNDEVICE
, "CONFIGITEM_DECLINEDLOG_WARNDEVICE" },
2149 { CONFIGITEM_DECLINEDLOG_WARNEVERY
, "CONFIGITEM_DECLINEDLOG_WARNEVERY" },
2150 { CONFIGITEM_DECLINEDLOG_RMTDEVICE
, "CONFIGITEM_DECLINEDLOG_RMTDEVICE" },
2151 { CONFIGITEM_ALARMLOG_ZEROMEM
, "CONFIGITEM_ALARMLOG_ZEROMEM" },
2152 { CONFIGITEM_ALARMLOG_BEGIN
, "CONFIGITEM_ALARMLOG_BEGIN" },
2153 { CONFIGITEM_ALARMLOG_RECORD
, "CONFIGITEM_ALARMLOG_RECORD" },
2154 { CONFIGITEM_ALARMLOG_ENTRIES
, "CONFIGITEM_ALARMLOG_ENTRIES" },
2155 { CONFIGITEM_ALARMLOG_WARNDEVICE
, "CONFIGITEM_ALARMLOG_WARNDEVICE" },
2156 { CONFIGITEM_ALARMLOG_WARNEVERY
, "CONFIGITEM_ALARMLOG_WARNEVERY" },
2157 { CONFIGITEM_ALARMLOG_RMTDEVICE
, "CONFIGITEM_ALARMLOG_RMTDEVICE" },
2158 { CONFIGITEM_VISIBLE_FEEDBACK
, "CONFIGITEM_VISIBLE_FEEDBACK" },
2159 { CONFIGITEM_AUDIBLE_FEEDBACK
, "CONFIGITEM_AUDIBLE_FEEDBACK" },
2160 { CONFIGITEM_VISIBLE_INDICATORS
, "CONFIGITEM_VISIBLE_INDICATORS" },
2161 { CONFIGITEM_AUDIBLE_INDICATORS
, "CONFIGITEM_AUDIBLE_INDICATORS" },
2162 { CONFIGITEM_2NDPINDURATION
, "CONFIGITEM_2NDPINDURATION" },
2163 { CONFIGITEM_LOCKOUT_ATTEMPTS
, "CONFIGITEM_LOCKOUT_ATTEMPTS" },
2164 { CONFIGITEM_LOCKOUT_DURATION
, "CONFIGITEM_LOCKOUT_DURATION" },
2165 { CONFIGITEM_KEYPAD_INACTIVITY
, "CONFIGITEM_KEYPAD_INACTIVITY" },
2166 { CONFIGITEM_ICIDLE_DURATION
, "CONFIGITEM_ICIDLE_DURATION" },
2167 { CONFIGITEM_WRITE_DECLINED_LOG
, "CONFIGITEM_WRITE_DECLINED_LOG" },
2168 { CONFIGITEM_LOW_BATTERY_INDICATOR
, "CONFIGITEM_LOW_BATTERY_INDICATOR" },
2169 { CONFIGITEM_PANIC_MODE
, "CONFIGITEM_PANIC_MODE" },
2170 { CONFIGITEM_TIMEZONE_ENABLE
, "CONFIGITEM_TIMEZONE_ENABLE" },
2171 { CONFIGITEM_EXCEPTION_ENABLE
, "CONFIGITEM_EXCEPTION_ENABLE" },
2172 { CONFIGITEM_AUTOUNLOCK_ENABLE
, "CONFIGITEM_AUTOUNLOCK_ENABLE" },
2173 { CONFIGITEM_LOCK_PRIORITY_EMERGENCY
, "CONFIGITEM_LOCK_PRIORITY_EMERGENCY" },
2174 { CONFIGITEM_LOCK_PRIORITY_SUPERVISOR
, "CONFIGITEM_LOCK_PRIORITY_SUPERVISOR" },
2175 { CONFIGITEM_LOCK_PRIORITY_USER
, "CONFIGITEM_LOCK_PRIORITY_USER" },
2176 { CONFIGITEM_LOCK_PRIORITY_PASSAGE
, "CONFIGITEM_LOCK_PRIORITY_PASSAGE" },
2177 { CONFIGITEM_LOCK_PRIORITY_PANIC
, "CONFIGITEM_LOCK_PRIORITY_PANIC" },
2178 { CONFIGITEM_LOCK_PRIORITY_LOCKOUT
, "CONFIGITEM_LOCK_PRIORITY_LOCKOUT" },
2179 { CONFIGITEM_LOCK_PRIORITY_RELOCK
, "CONFIGITEM_LOCK_PRIORITY_RELOCK" },
2180 { CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN
, "CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN" },
2181 { CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE
, "CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE" },
2182 { CONFIGITEM_LOCK_PRIORITY_REMOTE
, "CONFIGITEM_LOCK_PRIORITY_REMOTE" },
2183 { CONFIGITEM_LOCK_TYPE
, "CONFIGITEM_LOCK_TYPE" },
2184 { CONFIGITEM_DOUBLE_PULSE
, "CONFIGITEM_DOUBLE_PULSE" },
2185 { CONFIGITEM_DOUBLE_DELAY
, "CONFIGITEM_DOUBLE_DELAY" },
2186 { CONFIGITEM_MOTOR_DURATION
, "CONFIGITEM_MOTOR_DURATION" },
2187 { CONFIGITEM_MORTISE_TYPE
, "CONFIGITEM_MORTISE_TYPE" },
2188 { CONFIGITEM_UNLOCK_TIME
, "CONFIGITEM_UNLOCK_TIME" },
2189 { CONFIGITEM_EXT_UNLOCK_TIME
, "CONFIGITEM_EXT_UNLOCK_TIME" },
2190 { CONFIGITEM_DOOR_AJAR_TIME
, "CONFIGITEM_DOOR_AJAR_TIME" },
2191 { CONFIGITEM_SESSION_TIMEOUT
, "CONFIGITEM_SESSION_TIMEOUT" },
2192 { CONFIGITEM_RETRY_ON_TIMEOUT
, "CONFIGITEM_RETRY_ON_TIMEOUT" },
2193 { CONFIGITEM_UNSOLICITED_ENCRYPT
, "CONFIGITEM_UNSOLICITED_ENCRYPT" },
2194 { CONFIGITEM_RMT_AUTH_TIMEOUT
, "CONFIGITEM_RMT_AUTH_TIMEOUT" },
2195 { CONFIGITEM_RMT_AUTH_DEVICE
, "CONFIGITEM_RMT_AUTH_DEVICE" },
2196 { CONFIGITEM_ALARM_DEVICE
, "CONFIGITEM_ALARM_DEVICE" },
2197 { CONFIGITEM_NOTIFY_DEVICE
, "CONFIGITEM_NOTIFY_DEVICE" },
2198 { CONFIGITEM_COMMUSER_DEVICE
, "CONFIGITEM_COMMUSER_DEVICE" },
2199 { CONFIGITEM_SCHEDULER_DEVICE
, "CONFIGITEM_SCHEDULER_DEVICE" },
2200 { CONFIGITEM_SCHEDULER_TYPE
, "CONFIGITEM_SCHEDULER_TYPE" },
2201 { CONFIGITEM_SCHEDULER_AWAKE
, "CONFIGITEM_SCHEDULER_AWAKE" },
2202 { CONFIGITEM_SCHEDULER_PERIOD
, "CONFIGITEM_SCHEDULER_PERIOD" },
2203 { CONFIGITEM_SCHEDULER_HOD
, "CONFIGITEM_SCHEDULER_HOD" },
2204 { CONFIGITEM_SCHEDULER_DOW
, "CONFIGITEM_SCHEDULER_DOW" },
2205 { CONFIGITEM_SCHEDULER_DOM
, "CONFIGITEM_SCHEDULER_DOM" },
2206 { CONFIGITEM_SCHEDULER_HM1
, "CONFIGITEM_SCHEDULER_HM1" },
2207 { CONFIGITEM_SCHEDULER_HM2
, "CONFIGITEM_SCHEDULER_HM2" },
2208 { CONFIGITEM_SCHEDULER_HM3
, "CONFIGITEM_SCHEDULER_HM3" },
2209 { CONFIGITEM_SCHEDULER_HM4
, "CONFIGITEM_SCHEDULER_HM4" },
2210 { CONFIGITEM_RADIO_TYPE
, "CONFIGITEM_RADIO_TYPE" },
2211 { CONFIGITEM_RADIO_MODE
, "CONFIGITEM_RADIO_MODE" },
2212 { CONFIGITEM_RADIO_TIMEOUT
, "CONFIGITEM_RADIO_TIMEOUT" },
2213 { CONFIGITEM_RADIO_ATTEMPTS
, "CONFIGITEM_RADIO_ATTEMPTS" },
2214 { CONFIGITEM_RADIO_HOUSEKEEPING
, "CONFIGITEM_RADIO_HOUSEKEEPING" },
2215 { CONFIGITEM_RADIO_LEAPUSERNAME
, "CONFIGITEM_RADIO_LEAPUSERNAME" },
2216 { CONFIGITEM_RADIO_LEAPPASSWORD
, "CONFIGITEM_RADIO_LEAPPASSWORD" },
2217 { CONFIGITEM_INHIBIT_VOLTAGE
, "CONFIGITEM_INHIBIT_VOLTAGE" },
2218 { CONFIGITEM_LOW_VOLTAGE
, "CONFIGITEM_LOW_VOLTAGE" },
2219 { CONFIGITEM_PT_RANGE_1
, "CONFIGITEM_PT_RANGE_1" },
2220 { CONFIGITEM_PT_RANGE_2
, "CONFIGITEM_PT_RANGE_2" },
2221 { CONFIGITEM_PT_RANGE_3
, "CONFIGITEM_PT_RANGE_3" },
2222 { CONFIGITEM_PT_RANGE_4
, "CONFIGITEM_PT_RANGE_4" },
2223 { CONFIGITEM_PT_RANGE_5
, "CONFIGITEM_PT_RANGE_5" },
2224 { CONFIGITEM_PT_RANGE_6
, "CONFIGITEM_PT_RANGE_6" },
2225 { CONFIGITEM_PT_RANGE_7
, "CONFIGITEM_PT_RANGE_7" },
2226 { CONFIGITEM_PT_RANGE_8
, "CONFIGITEM_PT_RANGE_8" },
2227 { CONFIGITEM_MAGCARD_IFS
, "CONFIGITEM_MAGCARD_IFS" },
2228 { CONFIGITEM_MAGCARD_FIELDS
, "CONFIGITEM_MAGCARD_FIELDS" },
2229 { CONFIGITEM_MAGCARD_OFFSET
, "CONFIGITEM_MAGCARD_OFFSET" },
2230 { CONFIGITEM_MAGCARD_DIGITS
, "CONFIGITEM_MAGCARD_DIGITS" },
2231 { CONFIGITEM_ALARMS
, "CONFIGITEM_ALARMS" },
2232 { CONFIGITEM_FILTERS
, "CONFIGITEM_FILTERS" },
2233 { CONFIGITEM_ALARMSTATE
, "CONFIGITEM_ALARMSTATE" },
2234 { CONFIGITEM_DOORSTATE
, "CONFIGITEM_DOORSTATE" },
2235 { CONFIGITEM_DPACDEBUG
, "CONFIGITEM_DPACDEBUG" },
2236 { CONFIGITEM_FAILOPENSECURE
, "CONFIGITEM_FAILOPENSECURE" },
2237 { CONFIGITEM_REPLACED_VOLTAGE
, "CONFIGITEM_REPLACED_VOLTAGE" },
2238 { CONFIGITEM_RX_HELD_TIME
, "CONFIGITEM_RX_HELD_TIME" },
2239 { CONFIGITEM_PACKET_TIMEOUT
, "CONFIGITEM_PACKET_TIMEOUT" },
2240 { CONFIGITEM_EXTENDEDRESPONSE
, "CONFIGITEM_EXTENDEDRESPONSE" },
2241 { CONFIGITEM_PASSAGEMODEINDICATOR
, "CONFIGITEM_PASSAGEMODEINDICATOR" },
2242 { CONFIGITEM_PFMRETURNTIME
, "CONFIGITEM_PFMRETURNTIME" },
2245 static value_string_ext r3_configitemnames_ext
= VALUE_STRING_EXT_INIT(r3_configitemnames
);
2247 static const value_string r3_configtypenames
[] =
2249 { CONFIGTYPE_NONE
, "CONFIGTYPE_NONE" },
2250 { CONFIGTYPE_BOOL
, "CONFIGTYPE_BOOL" },
2251 { CONFIGTYPE_8
, "CONFIGTYPE_8" },
2252 { CONFIGTYPE_16
, "CONFIGTYPE_16" },
2253 { CONFIGTYPE_32
, "CONFIGTYPE_32" },
2254 { CONFIGTYPE_STRING
, "CONFIGTYPE_STRING" },
2257 static value_string_ext r3_configtypenames_ext
= VALUE_STRING_EXT_INIT(r3_configtypenames
);
2259 static const value_string r3_dispositionnames
[] =
2261 { DISPOSITION_ADD
, "DISPOSITION_ADD" },
2262 { DISPOSITION_REPLACE
, "DISPOSITION_REPLACE" },
2263 { DISPOSITION_UPDATE
, "DISPOSITION_UPDATE" },
2264 { DISPOSITION_DELETE
, "DISPOSITION_DELETE" },
2265 { DISPOSITION_RETRIEVE
, "DISPOSITION_RETRIEVE" },
2268 static value_string_ext r3_dispositionnames_ext
= VALUE_STRING_EXT_INIT(r3_dispositionnames
);
2270 static const value_string r3_deleteusersnames
[] =
2272 { DELETEUSERS_ALL
, "DELETEUSER_ALL" },
2273 { DELETEUSERS_CACHED
, "DELETEUSER_CACHED" },
2276 static value_string_ext r3_deleteusersnames_ext
= VALUE_STRING_EXT_INIT(r3_deleteusersnames
);
2278 static const value_string r3_downloadfirmwarenames
[] =
2280 { DOWNLOADFIRMWARE_START
, "DOWNLOADFIRMWARE_START" },
2281 { DOWNLOADFIRMWARE_DATA
, "DOWNLOADFIRMWARE_DATA" },
2282 { DOWNLOADFIRMWARE_COMPLETE
, "DOWNLOADFIRMWARE_COMPLETE" },
2283 { DOWNLOADFIRMWARE_ABORT
, "DOWNLOADFIRMWARE_ABORT" },
2284 { DOWNLOADFIRMWARE_RESET
, "DOWNLOADFIRMWARE_RESET" },
2287 static value_string_ext r3_downloadfirmwarenames_ext
= VALUE_STRING_EXT_INIT(r3_downloadfirmwarenames
);
2289 static const value_string r3_encryptionschemenames
[] =
2291 { ENCRYPTIONSCHEME_NONE
, "ENCRYPTIONSCHEME_NONE" },
2292 { ENCRYPTIONSCHEME_ROLLING
, "ENCRYPTIONSCHEME_ROLLING" },
2293 { ENCRYPTIONSCHEME_SN
, "ENCRYPTIONSCHEME_SN" },
2294 { ENCRYPTIONSCHEME_AESIV
, "ENCRYPTIONSCHEME_AESIV" },
2295 { ENCRYPTIONSCHEME_AES
, "ENCRYPTIONSCHEME_AES" },
2298 static value_string_ext r3_encryptionschemenames_ext
= VALUE_STRING_EXT_INIT(r3_encryptionschemenames
);
2300 static const value_string r3_eventnames
[] =
2302 { EVENT_INVALIDPIN
, "EVENT_INVALIDPIN" },
2303 { EVENT_USER
, "EVENT_USER" },
2304 { EVENT_ONETIME
, "EVENT_ONETIME" },
2305 { EVENT_PASSAGEBEGIN
, "EVENT_PASSAGEBEGIN" },
2306 { EVENT_PASSAGEEND
, "EVENT_PASSAGEEND" },
2307 { EVENT_BADTIME
, "EVENT_BADTIME" },
2308 { EVENT_LOCKEDOUT
, "EVENT_LOCKEDOUT" },
2309 { EVENT_LOWBATTERY
, "EVENT_LOWBATTERY" },
2310 { EVENT_DEADBATTERY
, "EVENT_DEADBATTERY" },
2311 { EVENT_BATTERYREPLACED
, "EVENT_BATTERYREPLACED" },
2312 { EVENT_USERADDED
, "EVENT_USERADDED" },
2313 { EVENT_USERDELETED
, "EVENT_USERDELETED" },
2314 { EVENT_EMERGENCY
, "EVENT_EMERGENCY" },
2315 { EVENT_PANIC
, "EVENT_PANIC" },
2316 { EVENT_RELOCK
, "EVENT_RELOCK" },
2317 { EVENT_LOCKOUTBEGIN
, "EVENT_LOCKOUTBEGIN" },
2318 { EVENT_LOCKOUTEND
, "EVENT_LOCKOUTEND" },
2319 { EVENT_RESET
, "EVENT_RESET" },
2320 { EVENT_DATETIMESET
, "EVENT_DATETIMESET" },
2321 { EVENT_LOGCLEARED
, "EVENT_LOGCLEARED" },
2322 { EVENT_DBRESET
, "EVENT_DBRESET" },
2323 { EVENT_COMMSTARTED
, "EVENT_COMMSTARTED" },
2324 { EVENT_COMMENDED
, "EVENT_COMMENDED" },
2325 { EVENT_FIRMWAREABORT
, "EVENT_FIRMWAREABORT" },
2326 { EVENT_FIRMWAREERROR
, "EVENT_FIRMWAREERROR" },
2327 { EVENT_FIRMWARETIMEOUT
, "EVENT_FIRMWARETIMEOUT" },
2328 { EVENT_DSTFALLBACK
, "EVENT_DSTFALLBACK" },
2329 { EVENT_DSTSPRINGFORWARD
, "EVENT_DSTSPRINGFORWARD" },
2330 { EVENT_BOLTTHROWN
, "EVENT_BOLTTHROWN" },
2331 { EVENT_BOLTRETRACTED
, "EVENT_BOLTRETRACTED" },
2332 { EVENT_MASTERCODE
, "EVENT_MASTERCODE" },
2333 { EVENT_COMMUSER
, "EVENT_COMMUSER" },
2334 { EVENT_DPACDISABLED
, "EVENT_DPACDISABLED" },
2335 { EVENT_NOTIFY
, "EVENT_NOTIFY" },
2336 { EVENT_EXPIRED
, "EVENT_EXPIRED" },
2337 { EVENT_SUPERVISOR
, "EVENT_SUPERVISOR" },
2338 { EVENT_MCCENTER
, "EVENT_MCCENTER" },
2339 { EVENT_MCCEXIT
, "EVENT_MCCEXIT" },
2340 { EVENT_SERIALRXOVERRUN
, "EVENT_SERIALRXOVERRUN" },
2341 { EVENT_DPACRXOVERRUN
, "EVENT_DPACRXOVERRUN" },
2342 { EVENT_NVRAMPBCLEAR
, "EVENT_NVRAMPBCLEAR" },
2343 { EVENT_NVRAMLAYOUTCHANGE
, "EVENT_NVRAMLAYOUTCHANGE" },
2344 { EVENT_NVRAMOK
, "EVENT_NVRAMOK" },
2345 { EVENT_USERREPLACED
, "EVENT_USERREPLACED" },
2346 { EVENT_RADIOTIMEOUT
, "EVENT_RADIOTIMEOUT" },
2347 { EVENT_SUSPENDEDUSER
, "EVENT_SUSPENDEDUSER" },
2348 { EVENT_USERUPDATED
, "EVENT_USERUPDATED" },
2349 { EVENT_DOORBOLTED
, "EVENT_DOORBOLTED" },
2350 { EVENT_PANICACTIVE
, "EVENT_PANICACTIVE" },
2351 { EVENT_PASSAGEACTIVE
, "EVENT_PASSAGEACTIVE" },
2352 { EVENT_PASSAGEINACTIVE
, "EVENT_PASSAGEINACTIVE" },
2353 { EVENT_BADACCESSMODE
, "EVENT_BADACCESSMODE" },
2354 { EVENT_CLOCKERR
, "EVENT_CLOCKERR" },
2355 { EVENT_REMOTEUNLOCK
, "EVENT_REMOTEUNLOCK" },
2356 { EVENT_TZHAUDISABLED
, "EVENT_TZHAUDISABLED" },
2357 { EVENT_EVENTLOGWRAPPED
, "EVENT_EVENTLOGWRAPPED" },
2358 { EVENT_DECLINEDLOGWRAPPED
, "EVENT_DECLINEDLOGWRAPPED" },
2359 { EVENT_ALARMLOGWRAPPED
, "EVENT_ALARMLOGWRAPPED" },
2360 { EVENT_RADIOBUSYEMERGENCY
, "EVENT_RADIOBUSYEMERGENCY" },
2361 { EVENT_RADIOBUSYSUPERVISOR
, "EVENT_RADIOBUSYSUPERVISOR" },
2362 { EVENT_RADIOBUSYONETIME
, "EVENT_RADIOBUSYONETIME" },
2363 { EVENT_RADIOBUSYUSER
, "EVENT_RADIOBUSYUSER" },
2364 { EVENT_RADIOBUSYPANIC
, "EVENT_RADIOBUSYPANIC" },
2365 { EVENT_RADIOBUSYREX
, "EVENT_RADIOBUSYREX" },
2366 { EVENT_RADIOBUSYLOCKOUT
, "EVENT_RADIOBUSYLOCKOUT" },
2367 { EVENT_RADIOBUSYRELOCK
, "EVENT_RADIOBUSYRELOCK" },
2368 { EVENT_BATTERYCHECKHELDOFF
, "EVENT_BATTERYCHECKHELDOFF" },
2369 { EVENT_RMTAUTHREQUEST
, "EVENT_RMTAUTHREQUEST" },
2370 { EVENT_FIRMWAREUPDATE
, "EVENT_FIRMWAREUPDATE" },
2371 { EVENT_FIRMWAREUPDATEFAILED
, "EVENT_FIRMWAREUPDATEFAILED" },
2372 { EVENT_MSMFAILURE
, "EVENT_MSMFAILURE" },
2373 { EVENT_CLOCKRESET
, "EVENT_CLOCKRESET" },
2374 { EVENT_POWERFAIL
, "EVENT_POWERFAIL" },
2375 { EVENT_DPAC501WENTSTUPID
, "EVENT_DPAC501WENTSTUPID" },
2376 { EVENT_CHECKSUMCONFIG
, "EVENT_CHECKSUMCONFIG" },
2377 { EVENT_CHECKSUMTZ
, "EVENT_CHECKSUMTZ" },
2378 { EVENT_DEBUG
, "EVENT_DEBUG" },
2381 static value_string_ext r3_eventnames_ext
= VALUE_STRING_EXT_INIT(r3_eventnames
);
2383 static const value_string r3_fieldtypenames
[] =
2385 { FIELDTYPE_NONE
, "FIELDTYPE_NONE" },
2386 { FIELDTYPE_PIN
, "FIELDTYPE_PIN" },
2387 { FIELDTYPE_PROX
, "FIELDTYPE_PROX" },
2388 { FIELDTYPE_MAGCARD
, "FIELDTYPE_MAGCARD" },
2391 static value_string_ext r3_fieldtypenames_ext
= VALUE_STRING_EXT_INIT(r3_fieldtypenames
);
2393 static const value_string r3_filtereventnames
[] =
2395 { EVENT_INVALIDPIN
, "EVENT_INVALIDPIN" },
2396 { EVENT_USER
, "EVENT_USER" },
2397 { EVENT_ONETIME
, "EVENT_ONETIME" },
2398 { EVENT_PASSAGEBEGIN
, "EVENT_PASSAGEBEGIN" },
2399 { EVENT_PASSAGEEND
, "EVENT_PASSAGEEND" },
2400 { EVENT_BADTIME
, "EVENT_BADTIME" },
2401 { EVENT_LOCKEDOUT
, "EVENT_LOCKEDOUT" },
2402 { EVENT_LOWBATTERY
, "EVENT_LOWBATTERY" },
2403 { EVENT_DEADBATTERY
, "EVENT_DEADBATTERY" },
2404 { EVENT_BATTERYREPLACED
, "EVENT_BATTERYREPLACED" },
2405 { EVENT_USERADDED
, "EVENT_USERADDED" },
2406 { EVENT_USERDELETED
, "EVENT_USERDELETED" },
2407 { EVENT_EMERGENCY
, "EVENT_EMERGENCY" },
2408 { EVENT_PANIC
, "EVENT_PANIC" },
2409 { EVENT_RELOCK
, "EVENT_RELOCK" },
2410 { EVENT_LOCKOUTBEGIN
, "EVENT_LOCKOUTBEGIN" },
2411 { EVENT_LOCKOUTEND
, "EVENT_LOCKOUTEND" },
2412 { EVENT_RESET
, "EVENT_RESET" },
2413 { EVENT_DATETIMESET
, "EVENT_DATETIMESET" },
2414 { EVENT_LOGCLEARED
, "EVENT_LOGCLEARED" },
2415 { EVENT_DBRESET
, "EVENT_DBRESET" },
2416 { EVENT_COMMSTARTED
, "EVENT_COMMSTARTED" },
2417 { EVENT_COMMENDED
, "EVENT_COMMENDED" },
2418 { EVENT_FIRMWAREABORT
, "EVENT_FIRMWAREABORT" },
2419 { EVENT_FIRMWAREERROR
, "EVENT_FIRMWAREERROR" },
2420 { EVENT_FIRMWARETIMEOUT
, "EVENT_FIRMWARETIMEOUT" },
2421 { EVENT_DSTFALLBACK
, "EVENT_DSTFALLBACK" },
2422 { EVENT_DSTSPRINGFORWARD
, "EVENT_DSTSPRINGFORWARD" },
2423 { EVENT_BOLTTHROWN
, "EVENT_BOLTTHROWN" },
2424 { EVENT_BOLTRETRACTED
, "EVENT_BOLTRETRACTED" },
2425 { EVENT_MASTERCODE
, "EVENT_MASTERCODE" },
2426 { EVENT_COMMUSER
, "EVENT_COMMUSER" },
2427 { EVENT_DPACDISABLED
, "EVENT_DPACDISABLED" },
2428 { EVENT_NOTIFY
, "EVENT_NOTIFY" },
2429 { EVENT_EXPIRED
, "EVENT_EXPIRED" },
2430 { EVENT_SUPERVISOR
, "EVENT_SUPERVISOR" },
2431 { EVENT_MCCENTER
, "EVENT_MCCENTER" },
2432 { EVENT_MCCEXIT
, "EVENT_MCCEXIT" },
2433 { EVENT_SERIALRXOVERRUN
, "EVENT_SERIALRXOVERRUN" },
2434 { EVENT_DPACRXOVERRUN
, "EVENT_DPACRXOVERRUN" },
2435 { EVENT_NVRAMPBCLEAR
, "EVENT_NVRAMPBCLEAR" },
2436 { EVENT_NVRAMLAYOUTCHANGE
, "EVENT_NVRAMLAYOUTCHANGE" },
2437 { EVENT_NVRAMOK
, "EVENT_NVRAMOK" },
2438 { EVENT_USERREPLACED
, "EVENT_USERREPLACED" },
2439 { EVENT_RADIOTIMEOUT
, "EVENT_RADIOTIMEOUT" },
2440 { EVENT_SUSPENDEDUSER
, "EVENT_SUSPENDEDUSER" },
2441 { EVENT_USERUPDATED
, "EVENT_USERUPDATED" },
2442 { EVENT_DOORBOLTED
, "EVENT_DOORBOLTED" },
2443 { EVENT_PANICACTIVE
, "EVENT_PANICACTIVE" },
2444 { EVENT_PASSAGEACTIVE
, "EVENT_PASSAGEACTIVE" },
2445 { EVENT_PASSAGEINACTIVE
, "EVENT_PASSAGEINACTIVE" },
2446 { EVENT_BADACCESSMODE
, "EVENT_BADACCESSMODE" },
2447 { EVENT_CLOCKERR
, "EVENT_CLOCKERR" },
2448 { EVENT_REMOTEUNLOCK
, "EVENT_REMOTEUNLOCK" },
2449 { EVENT_TZHAUDISABLED
, "EVENT_TZHAUDISABLED" },
2450 { EVENT_EVENTLOGWRAPPED
, "EVENT_EVENTLOGWRAPPED" },
2451 { EVENT_DECLINEDLOGWRAPPED
, "EVENT_DECLINEDLOGWRAPPED" },
2452 { EVENT_ALARMLOGWRAPPED
, "EVENT_ALARMLOGWRAPPED" },
2453 { EVENT_RADIOBUSYEMERGENCY
, "EVENT_RADIOBUSYEMERGENCY" },
2454 { EVENT_RADIOBUSYSUPERVISOR
, "EVENT_RADIOBUSYSUPERVISOR" },
2455 { EVENT_RADIOBUSYONETIME
, "EVENT_RADIOBUSYONETIME" },
2456 { EVENT_RADIOBUSYUSER
, "EVENT_RADIOBUSYUSER" },
2457 { EVENT_RADIOBUSYPANIC
, "EVENT_RADIOBUSYPANIC" },
2458 { EVENT_RADIOBUSYREX
, "EVENT_RADIOBUSYREX" },
2459 { EVENT_RADIOBUSYLOCKOUT
, "EVENT_RADIOBUSYLOCKOUT" },
2460 { EVENT_RADIOBUSYRELOCK
, "EVENT_RADIOBUSYRELOCK" },
2461 { EVENT_BATTERYCHECKHELDOFF
, "EVENT_BATTERYCHECKHELDOFF" },
2462 { EVENT_RMTAUTHREQUEST
, "EVENT_RMTAUTHREQUEST" },
2463 { EVENT_FIRMWAREUPDATE
, "EVENT_FIRMWAREUPDATE" },
2464 { EVENT_FIRMWAREUPDATEFAILED
, "EVENT_FIRMWAREUPDATEFAILED" },
2465 { EVENT_MSMFAILURE
, "EVENT_MSMFAILURE" },
2466 { EVENT_CLOCKRESET
, "EVENT_CLOCKRESET" },
2467 { EVENT_POWERFAIL
, "EVENT_POWERFAIL" },
2468 { EVENT_DPAC501WENTSTUPID
, "EVENT_DPAC501WENTSTUPID" },
2469 { EVENT_CHECKSUMCONFIG
, "EVENT_CHECKSUMCONFIG" },
2470 { EVENT_CHECKSUMTZ
, "EVENT_CHECKSUMTZ" },
2471 { EVENT_DEBUG
, "EVENT_DEBUG" },
2472 { 0xfe, "(Enable All Filters)" },
2473 { 0xff, "(Disable All Filters)" },
2476 static value_string_ext r3_filtereventnames_ext
= VALUE_STRING_EXT_INIT(r3_filtereventnames
);
2478 static const value_string r3_filtertypenames
[] =
2480 { FILTERSELECT_RECORDING
, "FILTERSELECT_RECORDING" },
2481 { FILTERSELECT_REPORTING
, "FILTERSELECT_REPORTING" },
2484 static value_string_ext r3_filtertypenames_ext
= VALUE_STRING_EXT_INIT(r3_filtertypenames
);
2486 static const value_string r3_forceitemnames
[] =
2488 { FORCEITEM_RADIOPOWER
, "FORCEITEM_RADIOPOWER" },
2489 { FORCEITEM_RADIOENABLE
, "FORCEITEM_RADIOENABLE" },
2490 { FORCEITEM_LEDRED
, "FORCEITEM_LEDRED" },
2491 { FORCEITEM_LEDGREEN
, "FORCEITEM_LEDGREEN" },
2492 { FORCEITEM_LEDYELLOW
, "FORCEITEM_LEDYELLOW" },
2493 { FORCEITEM_PIEZO
, "FORCEITEM_PIEZO" },
2494 { FORCEITEM_MAGPOWER
, "FORCEITEM_MAGPOWER" },
2495 { FORCEITEM_MAGLEDA
, "FORCEITEM_MAGLEDA" },
2496 { FORCEITEM_MAGLEDB
, "FORCEITEM_MAGLEDB" },
2497 { FORCEITEM_PROXPOWER
, "FORCEITEM_PROXPOWER" },
2498 { FORCEITEM_PROXPING
, "FORCEITEM_PROXPING" },
2499 { FORCEITEM_PROXMODE
, "FORCEITEM_PROXMODE" },
2500 { FORCEITEM_I2CPOWER
, "FORCEITEM_I2CPOWER" },
2501 { FORCEITEM_MOTORARUN
, "FORCEITEM_MOTORARUN" },
2502 { FORCEITEM_MOTORBRUN
, "FORCEITEM_MOTORBRUN" },
2503 { FORCEITEM_VMON
, "FORCEITEM_VMON" },
2504 { FORCEITEM_PROX
, "FORCEITEM_PROX" },
2505 { FORCEITEM_MORTISETEST
, "FORCEITEM_MORTISETEST" },
2506 { FORCEITEM_KEYPADTEST
, "FORCEITEM_KEYPADTEST" },
2507 { FORCEITEM_MAGTEST
, "FORCEITEM_MAGTEST" },
2508 { FORCEITEM_PROXTEST
, "FORCEITEM_PROXTEST" },
2511 static value_string_ext r3_forceitemnames_ext
= VALUE_STRING_EXT_INIT(r3_forceitemnames
);
2513 static const value_string r3_mfgfieldnames
[] =
2515 { MFGFIELD_IOPINS
, "MFGFIELD_IOPINS" },
2516 { MFGFIELD_ADCS
, "MFGFIELD_ADCS" },
2517 { MFGFIELD_HARDWAREID
, "MFGFIELD_HARDWAREID" },
2518 { MFGFIELD_CHECKPOINTLOG
, "MFGFIELD_CHECKPOINTLOG" },
2519 { MFGFIELD_CPUREGISTERS
, "MFGFIELD_CPUREGISTERS" },
2520 { MFGFIELD_TASKFLAGS
, "MFGFIELD_TASKFLAGS" },
2521 { MFGFIELD_TIMERCHAIN
, "MFGFIELD_TIMERCHAIN" },
2522 { MFGFIELD_PEEKPOKE
, "MFGFIELD_PEEKPOKE" },
2523 { MFGFIELD_LOCKSTATE
, "MFGFIELD_LOCKSTATE" },
2524 { MFGFIELD_CAPABILITIES
, "MFGFIELD_CAPABILITIES" },
2525 { MFGFIELD_DUMPM41T81
, "MFGFIELD_DUMPM41T81" },
2526 { MFGFIELD_NVRAMCHECKSUMVALUE
, "MFGFIELD_NVRAMCHECKSUMVALUE" },
2527 { MFGFIELD_CHECKSUMRESULTS
, "MFGFIELD_CHECKSUMRESULTS" },
2528 { MFGFIELD_MORTISESTATELOG
, "MFGFIELD_MORTISESTATELOG" },
2529 { MFGFIELD_MORTISEPINS
, "MFGFIELD_MORTISEPINS" },
2530 { MFGFIELD_KEYPADCHAR
, "MFGFIELD_KEYPADCHAR" },
2531 { MFGFIELD_MAGCARD
, "MFGFIELD_MAGCARD" },
2532 { MFGFIELD_PROXCARD
, "MFGFIELD_PROXCARD" },
2535 static value_string_ext r3_mfgfieldnames_ext
= VALUE_STRING_EXT_INIT(r3_mfgfieldnames
);
2537 static const value_string r3_mortiseeventnames
[] =
2539 { MORTISEEVENT_DX_THROWN
, "MORTISEEVENT_DX_THROWN" },
2540 { MORTISEEVENT_DX_RETRACTED
, "MORTISEEVENT_DX_RETRACTED" },
2541 { MORTISEEVENT_LX_RETRACTED
, "MORTISEEVENT_LX_RETRACTED" },
2542 { MORTISEEVENT_LX_EXTENDED
, "MORTISEEVENT_LX_EXTENDED" },
2543 { MORTISEEVENT_AX_EXTENDED
, "MORTISEEVENT_AX_EXTENDED" },
2544 { MORTISEEVENT_AX_RETRACTED
, "MORTISEEVENT_AX_RETRACTED" },
2545 { MORTISEEVENT_RX_DEPRESSED
, "MORTISEEVENT_RX_DEPRESSED" },
2546 { MORTISEEVENT_RX_RELEASED
, "MORTISEEVENT_RX_RELEASED" },
2547 { MORTISEEVENT_PX_OPEN
, "MORTISEEVENT_PX_OPEN" },
2548 { MORTISEEVENT_PX_CLOSED
, "MORTISEEVENT_PX_CLOSED" },
2549 { MORTISEEVENT_MX_UNLOCKED
, "MORTISEEVENT_MX_UNLOCKED" },
2550 { MORTISEEVENT_MX_LOCKED
, "MORTISEEVENT_MX_LOCKED" },
2551 { MORTISEEVENT_LAST
, "MORTISEEVENT_LAST" },
2552 { MORTISEEVENT_IGNORE
, "MORTISEEVENT_IGNORE" },
2555 static value_string_ext r3_mortiseeventnames_ext
= VALUE_STRING_EXT_INIT(r3_mortiseeventnames
);
2557 static const value_string r3_mortisetypenames
[] =
2559 { MORTISETYPE_NONE
, "MORTISETYPE_NONE" },
2560 { MORTISETYPE_S82276
, "MORTISETYPE_S82276" },
2561 { MORTISETYPE_S82277
, "MORTISETYPE_S82277" },
2562 { MORTISETYPE_S82278
, "MORTISETYPE_S82278" },
2563 { MORTISETYPE_S82279
, "MORTISETYPE_S82279" },
2564 { MORTISETYPE_S10G77
, "MORTISETYPE_S10G77" },
2565 { MORTISETYPE_S8877
, "MORTISETYPE_S8877" },
2566 { MORTISETYPE_S8878
, "MORTISETYPE_S8878" },
2567 { MORTISETYPE_S8977
, "MORTISETYPE_S8977" },
2568 { MORTISETYPE_S8978
, "MORTISETYPE_S8978" },
2569 { MORTISETYPE_CRML20x36
, "MORTISETYPE_CRML20x36" },
2570 { MORTISETYPE_CRML20x35
, "MORTISETYPE_CRML20x35" },
2571 { MORTISETYPE_CRML20x34
, "MORTISETYPE_CRML20x34" },
2572 { MORTISETYPE_CRML20x33
, "MORTISETYPE_CRML20x33" },
2573 { MORTISETYPE_CRCL33x34
, "MORTISETYPE_CRCL33x34" },
2574 { MORTISETYPE_CR9X34
, "MORTISETYPE_CR9X34" },
2575 { MORTISETYPE_CR9X33
, "MORTISETYPE_CR9X33" },
2576 { MORTISETYPE_CR9MX34
, "MORTISETYPE_CR9MX34" },
2577 { MORTISETYPE_CR9MX33
, "MORTISETYPE_CR9MX33" },
2580 static value_string_ext r3_mortisetypenames_ext
= VALUE_STRING_EXT_INIT(r3_mortisetypenames
);
2582 static const value_string r3_peekpokenames
[] =
2584 { PEEKPOKE_READU8
, "PEEKPOKE_READU8" },
2585 { PEEKPOKE_READU16
, "PEEKPOKE_READU16" },
2586 { PEEKPOKE_READU24
, "PEEKPOKE_READU24" },
2587 { PEEKPOKE_READU32
, "PEEKPOKE_READU32" },
2588 { PEEKPOKE_READSTRING
, "PEEKPOKE_READSTRING" },
2589 { PEEKPOKE_WRITEU8
, "PEEKPOKE_WRITEU8" },
2590 { PEEKPOKE_WRITEU16
, "PEEKPOKE_WRITEU16" },
2591 { PEEKPOKE_WRITEU24
, "PEEKPOKE_WRITEU24" },
2592 { PEEKPOKE_WRITEU32
, "PEEKPOKE_WRITEU32" },
2593 { PEEKPOKE_WRITESTRING
, "PEEKPOKE_WRITESTRING" },
2596 static value_string_ext r3_peekpokenames_ext
= VALUE_STRING_EXT_INIT(r3_peekpokenames
);
2598 static const value_string r3_ppmisourcenames
[] =
2600 { PPMISOURCE_NONE
, "PPMISOURCE_NONE" },
2601 { PPMISOURCE_PIN
, "PPMISOURCE_PIN" },
2602 { PPMISOURCE_PROX
, "PPMISOURCE_PROX" },
2603 { PPMISOURCE_MAGCARD
, "PPMISOURCE_MAGCARD" },
2606 static value_string_ext r3_ppmisourcenames_ext
= VALUE_STRING_EXT_INIT(r3_ppmisourcenames
);
2608 static const value_string r3_responsetypenames
[] =
2610 { RESPONSETYPE_OK
, "RESPONSETYPE_OK" },
2611 { RESPONSETYPE_ERROR
, "RESPONSETYPE_ERROR" },
2612 { RESPONSETYPE_HASDATA
, "RESPONSETYPE_HASDATA" },
2613 { RESPONSETYPE_NOHANDLER
, "RESPONSETYPE_NOHANDLER" },
2614 { RESPONSETYPE_NOSESSION
, "RESPONSETYPE_NOSESSION" },
2615 { RESPONSETYPE_BADCOMMAND
, "RESPONSETYPE_BADCOMMAND" },
2616 { RESPONSETYPE_BADPARAMETER
, "RESPONSETYPE_BADPARAMETER" },
2617 { RESPONSETYPE_BADPARAMETERLEN
, "RESPONSETYPE_BADPARAMETERLEN" },
2618 { RESPONSETYPE_MISSINGPARAMETER
, "RESPONSETYPE_MISSINGPARAMETER" },
2619 { RESPONSETYPE_DUPLICATEPARAMETER
, "RESPONSETYPE_DUPLICATEPARAMETER" },
2620 { RESPONSETYPE_PARAMETERCONFLICT
, "RESPONSETYPE_PARAMETERCONFLICT" },
2621 { RESPONSETYPE_BADDEVICE
, "RESPONSETYPE_BADDEVICE" },
2622 { RESPONSETYPE_NVRAMERROR
, "RESPONSETYPE_NVRAMERROR" },
2623 { RESPONSETYPE_NVRAMERRORNOACK
, "RESPONSETYPE_NVRAMERRORNOACK" },
2624 { RESPONSETYPE_NVRAMERRORNOACK32
, "RESPONSETYPE_NVRAMERRORNOACK32" },
2625 { RESPONSETYPE_NOTI2CADDRESS
, "RESPONSETYPE_NOTI2CADDRESS" },
2626 { RESPONSETYPE_FIRMWAREERROR
, "RESPONSETYPE_FIRMWAREERROR" },
2627 { RESPONSETYPE_DUMPINPROGRESS
, "RESPONSETYPE_DUMPINPROGRESS" },
2628 { RESPONSETYPE_INTERNALERROR
, "RESPONSETYPE_INTERNALERROR" },
2629 { RESPONSETYPE_NOTIMPLEMENTED
, "RESPONSETYPE_NOTIMPLEMENTED" },
2630 { RESPONSETYPE_PINFORMATERROR
, "RESPONSETYPE_PINFORMATERROR" },
2631 { RESPONSETYPE_PINEXISTS
, "RESPONSETYPE_PINEXISTS" },
2632 { RESPONSETYPE_PINNOTFOUND
, "RESPONSETYPE_PINNOTFOUND" },
2633 { RESPONSETYPE_USERACTIVE
, "RESPONSETYPE_USERACTIVE" },
2634 { RESPONSETYPE_USERINACTIVE
, "RESPONSETYPE_USERINACTIVE" },
2635 { RESPONSETYPE_PARENTNOTFOUND
, "RESPONSETYPE_PARENTNOTFOUND" },
2636 { RESPONSETYPE_NOCHAIN
, "RESPONSETYPE_NOCHAIN" },
2637 { RESPONSETYPE_CAUGHTINLOOP
, "RESPONSETYPE_CAUGHTINLOOP" },
2638 { RESPONSETYPE_EVENTFILTERED
, "RESPONSETYPE_EVENTFILTERED" },
2639 { RESPONSETYPE_PAYLOADTOOLARGE
, "RESPONSETYPE_PAYLOADTOOLARGE" },
2640 { RESPONSETYPE_ENDOFDATA
, "RESPONSETYPE_ENDOFDATA" },
2641 { RESPONSETYPE_RMTAUTHREJECTED
, "RESPONSETYPE_RMTAUTHREJECTED" },
2642 { RESPONSETYPE_NVRAMVERSIONERROR
, "RESPONSETYPE_NVRAMVERSIONERROR" },
2643 { RESPONSETYPE_NOHARDWARE
, "RESPONSETYPE_NOHARDWARE" },
2644 { RESPONSETYPE_SCHEDULERCONFLICT
, "RESPONSETYPE_SCHEDULERCONFLICT" },
2645 { RESPONSETYPE_NVRAMWRITEERROR
, "RESPONSETYPE_NVRAMWRITEERROR" },
2646 { RESPONSETYPE_DECLINEDFILTERED
, "RESPONSETYPE_DECLINEDFILTERED" },
2647 { RESPONSETYPE_NECONFIGPARM
, "RESPONSETYPE_NECONFIGPARM" },
2648 { RESPONSETYPE_FLASHERASEERROR
, "RESPONSETYPE_FLASHERASEERROR" },
2649 { RESPONSETYPE_FLASHWRITEERROR
, "RESPONSETYPE_FLASHWRITEERROR" },
2650 { RESPONSETYPE_BADNVBACKUP
, "RESPONSETYPE_BADNVBACKUP" },
2651 { RESPONSETYPE_EARLYACK
, "RESPONSETYPE_EARLYACK" },
2652 { RESPONSETYPE_ALARMFILTERED
, "RESPONSETYPE_ALARMFILTERED" },
2653 { RESPONSETYPE_ACVFAILURE
, "RESPONSETYPE_ACVFAILURE" },
2654 { RESPONSETYPE_USERCHECKSUMERROR
, "RESPONSETYPE_USERCHECKSUMERROR" },
2655 { RESPONSETYPE_CHECKSUMERROR
, "RESPONSETYPE_CHECKSUMERROR" },
2656 { RESPONSETYPE_RTCSQWFAILURE
, "RESPONSETYPE_RTCSQWFAILURE" },
2657 { RESPONSETYPE_PRIORITYSHUTDOWN
, "RESPONSETYPE_PRIORITYSHUTDOWN" },
2658 { RESPONSETYPE_NOTMODIFIABLE
, "RESPONSETYPE_NOTMODIFIABLE" },
2659 { RESPONSETYPE_CANTPRESERVE
, "RESPONSETYPE_CANTPRESERVE" },
2660 { RESPONSETYPE_INPASSAGEMODE
, "RESPONSETYPE_INPASSAGEMODE" },
2663 static value_string_ext r3_responsetypenames_ext
= VALUE_STRING_EXT_INIT(r3_responsetypenames
);
2665 static const value_string r3_timezonemodenames
[] =
2667 { TIMEZONEMODE_NORMAL
, "TIMEZONEMODE_NORMAL" },
2668 { TIMEZONEMODE_EXCLUSION
, "TIMEZONEMODE_EXCLUSION" },
2669 { TIMEZONEMODE_AUTOTIME
, "TIMEZONEMODE_AUTOTIME" },
2670 { TIMEZONEMODE_AUTOFPT
, "TIMEZONEMODE_AUTOFPT" },
2671 { TIMEZONEMODE_UAPM
, "TIMEZONEMODE_UAPM" },
2674 static value_string_ext r3_timezonemodenames_ext
= VALUE_STRING_EXT_INIT(r3_timezonemodenames
);
2676 static const value_string r3_upstreamcommandnames
[] =
2678 { UPSTREAMCOMMAND_RESERVED
, "UPSTREAMCOMMAND_RESERVED" },
2679 { UPSTREAMCOMMAND_DEBUGMSG
, "UPSTREAMCOMMAND_DEBUGMSG" },
2680 { UPSTREAMCOMMAND_QUERYVERSION
, "UPSTREAMCOMMAND_QUERYVERSION" },
2681 { UPSTREAMCOMMAND_QUERYDATETIME
, "UPSTREAMCOMMAND_QUERYDATETIME" },
2682 { UPSTREAMCOMMAND_QUERYSERIALNUMBER
, "UPSTREAMCOMMAND_QUERYSERIALNUMBER" },
2683 { UPSTREAMCOMMAND_DUMPEVENTLOG
, "UPSTREAMCOMMAND_DUMPEVENTLOG" },
2684 { UPSTREAMCOMMAND_DUMPNVRAM
, "UPSTREAMCOMMAND_DUMPNVRAM" },
2685 { UPSTREAMCOMMAND_RMTAUTHREQUEST
, "UPSTREAMCOMMAND_RMTAUTHREQUEST" },
2686 { UPSTREAMCOMMAND_RETRIEVEUSER
, "UPSTREAMCOMMAND_RETRIEVEUSER" },
2687 { UPSTREAMCOMMAND_QUERYCONFIG
, "UPSTREAMCOMMAND_QUERYCONFIG" },
2688 { UPSTREAMCOMMAND_RMTEVENTLOGRECORD
, "UPSTREAMCOMMAND_RMTEVENTLOGRECORD" },
2689 { UPSTREAMCOMMAND_DPAC
, "UPSTREAMCOMMAND_DPAC" },
2690 { UPSTREAMCOMMAND_NOTIFY
, "UPSTREAMCOMMAND_NOTIFY" },
2691 { UPSTREAMCOMMAND_MFG
, "UPSTREAMCOMMAND_MFG" },
2692 { UPSTREAMCOMMAND_EVENTLOGWARNING
, "UPSTREAMCOMMAND_EVENTLOGWARNING" },
2693 { UPSTREAMCOMMAND_DUMPNVRAMRLE
, "UPSTREAMCOMMAND_DUMPNVRAMRLE" },
2694 { UPSTREAMCOMMAND_RMTDECLINEDRECORD
, "UPSTREAMCOMMAND_RMTDECLINEDRECORD" },
2695 { UPSTREAMCOMMAND_DECLINEDWARNING
, "UPSTREAMCOMMAND_DECLINEDWARNING" },
2696 { UPSTREAMCOMMAND_DUMPDECLINEDLOG
, "UPSTREAMCOMMAND_DUMPDECLINEDLOG" },
2697 { UPSTREAMCOMMAND_RMTALARMRECORD
, "UPSTREAMCOMMAND_RMTALARMRECORD" },
2698 { UPSTREAMCOMMAND_ALARMWARNING
, "UPSTREAMCOMMAND_ALARMWARNING" },
2699 { UPSTREAMCOMMAND_DUMPALARMLOG
, "UPSTREAMCOMMAND_DUMPALARMLOG" },
2700 { UPSTREAMCOMMAND_CONNECTSCHEDULER
, "UPSTREAMCOMMAND_CONNECTSCHEDULER" },
2701 { UPSTREAMCOMMAND_CONNECTCOMMUSER
, "UPSTREAMCOMMAND_CONNECTCOMMUSER" },
2702 { UPSTREAMCOMMAND_CONNECTALARM
, "UPSTREAMCOMMAND_CONNECTALARM" },
2703 { UPSTREAMCOMMAND_DUMPDEBUGLOG
, "UPSTREAMCOMMAND_DUMPDEBUGLOG" },
2706 static value_string_ext r3_upstreamcommandnames_ext
= VALUE_STRING_EXT_INIT(r3_upstreamcommandnames
);
2708 static const value_string r3_upstreamfieldnames
[] =
2710 { UPSTREAMFIELD_NOTUSED
, "UPSTREAMFIELD_NOTUSED" },
2711 { UPSTREAMFIELD_SERIALNUMBER
, "UPSTREAMFIELD_SERIALNUMBER" },
2712 { UPSTREAMFIELD_NAR
, "UPSTREAMFIELD_NAR" },
2713 { UPSTREAMFIELD_ENTRYDEVICE
, "UPSTREAMFIELD_ENTRYDEVICE" },
2714 { UPSTREAMFIELD_PPMIFIELDTYPE
, "UPSTREAMFIELD_PPMIFIELDTYPE" },
2715 { UPSTREAMFIELD_PIN
, "UPSTREAMFIELD_PIN" },
2716 { UPSTREAMFIELD_SEQUENCENUMBER
, "UPSTREAMFIELD_SEQUENCENUMBER" },
2717 { UPSTREAMFIELD_RESPONSEWINDOW
, "UPSTREAMFIELD_RESPONSEWINDOW" },
2718 { UPSTREAMFIELD_USERNUMBER
, "UPSTREAMFIELD_USERNUMBER" },
2719 { UPSTREAMFIELD_VERSION
, "UPSTREAMFIELD_VERSION" },
2720 { UPSTREAMFIELD_EVENTLOGRECORD
, "UPSTREAMFIELD_EVENTLOGRECORD" },
2721 { UPSTREAMFIELD_DATETIME
, "UPSTREAMFIELD_DATETIME" },
2722 { UPSTREAMFIELD_EVENTLOGRECORDCOUNT
, "UPSTREAMFIELD_EVENTLOGRECORDCOUNT" },
2723 { UPSTREAMFIELD_DECLINEDRECORDCOUNT
, "UPSTREAMFIELD_DECLINEDRECORDCOUNT" },
2724 { UPSTREAMFIELD_DECLINEDRECORD
, "UPSTREAMFIELD_DECLINEDRECORD" },
2725 { UPSTREAMFIELD_USERTYPE
, "UPSTREAMFIELD_USERTYPE" },
2726 { UPSTREAMFIELD_ACCESSALWAYS
, "UPSTREAMFIELD_ACCESSALWAYS" },
2727 { UPSTREAMFIELD_CACHED
, "UPSTREAMFIELD_CACHED" },
2728 { UPSTREAMFIELD_PRIMARYFIELDTYPE
, "UPSTREAMFIELD_PRIMARYFIELDTYPE" },
2729 { UPSTREAMFIELD_AUXFIELDTYPE
, "UPSTREAMFIELD_AUXFIELDTYPE" },
2730 { UPSTREAMFIELD_ACCESSMODE
, "UPSTREAMFIELD_ACCESSMODE" },
2731 { UPSTREAMFIELD_EXPIREON
, "UPSTREAMFIELD_EXPIREON" },
2732 { UPSTREAMFIELD_USECOUNT
, "UPSTREAMFIELD_USECOUNT" },
2733 { UPSTREAMFIELD_TIMEZONE
, "UPSTREAMFIELD_TIMEZONE" },
2734 { UPSTREAMFIELD_EXCEPTIONGROUP
, "UPSTREAMFIELD_EXCEPTIONGROUP" },
2735 { UPSTREAMFIELD_PRIMARYPIN
, "UPSTREAMFIELD_PRIMARYPIN" },
2736 { UPSTREAMFIELD_AUXPIN
, "UPSTREAMFIELD_AUXPIN" },
2737 { UPSTREAMFIELD_ALARMRECORDCOUNT
, "UPSTREAMFIELD_ALARMRECORDCOUNT" },
2738 { UPSTREAMFIELD_ALARMRECORD
, "UPSTREAMFIELD_ALARMRECORD" },
2739 { UPSTREAMFIELD_AUXCTLRVERSION
, "UPSTREAMFIELD_AUXCTLRVERSION" },
2742 static value_string_ext r3_upstreamfieldnames_ext
= VALUE_STRING_EXT_INIT(r3_upstreamfieldnames
);
2744 static const value_string r3_usertypenames
[] =
2746 { USERTYPE_NONE
, "USERTYPE_NONE" },
2747 { USERTYPE_MASTER
, "USERTYPE_MASTER" },
2748 { USERTYPE_EMERGENCY
, "USERTYPE_EMERGENCY" },
2749 { USERTYPE_SUPERVISOR
, "USERTYPE_SUPERVISOR" },
2750 { USERTYPE_USER
, "USERTYPE_USER" },
2751 { USERTYPE_EXTENDED
, "USERTYPE_EXTENDED" },
2752 { USERTYPE_PASSAGE
, "USERTYPE_PASSAGE" },
2753 { USERTYPE_ONETIME
, "USERTYPE_ONETIME" },
2754 { USERTYPE_PANIC
, "USERTYPE_PANIC" },
2755 { USERTYPE_LOCKOUT
, "USERTYPE_LOCKOUT" },
2756 { USERTYPE_RELOCK
, "USERTYPE_RELOCK" },
2757 { USERTYPE_NOTIFY
, "USERTYPE_NOTIFY" },
2758 { USERTYPE_COMM
, "USERTYPE_COMM" },
2759 { USERTYPE_SUSPENDED
, "USERTYPE_SUSPENDED" },
2762 static value_string_ext r3_usertypenames_ext
= VALUE_STRING_EXT_INIT(r3_usertypenames
);
2764 static const value_string r3_mfgnvramdumpnames
[] =
2772 static value_string_ext r3_mfgnvramdumpnames_ext
= VALUE_STRING_EXT_INIT(r3_mfgnvramdumpnames
);
2774 static const value_string r3_mfgremoteunlocknames
[] =
2781 static value_string_ext r3_mfgremoteunlocknames_ext
= VALUE_STRING_EXT_INIT(r3_mfgremoteunlocknames
);
2783 static const value_string r3_mfgtestpreservenames
[] =
2789 static value_string_ext r3_mfgtestpreservenames_ext
= VALUE_STRING_EXT_INIT(r3_mfgtestpreservenames
);
2791 static const value_string r3_daynames
[] =
2802 static value_string_ext r3_daynames_ext
= VALUE_STRING_EXT_INIT(r3_daynames
);
2804 static const value_string r3_monthnames
[] =
2821 static value_string_ext r3_monthnames_ext
= VALUE_STRING_EXT_INIT(r3_monthnames
);
2823 static const value_string r3_monthdaynames
[] =
2859 static value_string_ext r3_monthdaynames_ext
= VALUE_STRING_EXT_INIT(r3_monthdaynames
);
2861 static const value_string r3_powertablenames
[] =
2863 { 1, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2864 { 2, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2865 { 3, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2866 { 4, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2867 { 5, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {13, 12, 12, 11, 11, 10, 10, 9}" },
2868 { 6, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {14, 13, 13, 12, 12, 11, 11, 10}" },
2869 { 7, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {15, 14, 14, 13, 13, 12, 12, 11}" },
2870 { 8, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {16, 15, 15, 14, 14, 13, 13, 12}" },
2873 static value_string_ext r3_powertablenames_ext
= VALUE_STRING_EXT_INIT(r3_powertablenames
);
2875 static const true_false_string tfs_rmtauthretry_flags
=
2881 static const true_false_string tfs_errornoerror_flags
=
2887 static const string_string r3_snmanufacturernames
[] =
2890 { "KC", "Kimchuk" },
2894 static const string_string r3_snyearnames
[] =
2909 static const string_string r3_snmodelnames
[] =
2911 { "H", "Sx controller" },
2912 { "J", "Px controller" },
2913 { "D", "PG offline interface board" },
2914 { "E", "Px online interface board" },
2915 { "N", "Ethernet-PD board" },
2916 { "O", "CAM board" },
2920 static const string_string r3_sngroupnames
[] =
2924 { "C", "Corbin-Russwin" },
2928 static const string_string r3_snnidnames
[] =
2930 { "A", "Ethernet" },
2931 { "B", "DPAC 802.11b" },
2932 { "C", "DPAC 802.11bg" },
2938 static const string_string r3_snhidnames
[] =
2943 { "03", "eProx, Keypad" },
2945 { "05", "iProx, Keypad" },
2946 { "06", "iProx, eProx" },
2947 { "07", "iProx, eProx, Keypad" },
2948 { "08", "Mag Card" },
2949 { "09", "Mag Card, Keypad" },
2950 { "0a", "Mag Card, eProx" },
2951 { "0b", "Mag Card, eProx, Keypad" },
2952 { "0c", "Mag Card, iProx" },
2953 { "0d", "Mag Card, iProx, Keypad" },
2954 { "0e", "Mag Card, iProx, eProx" },
2955 { "0f", "Mag Card, iProx, eProx, Keypad" },
2956 { "10", "Biometric" },
2957 { "11", "Biometric, Keypad" },
2958 { "12", "Biometric, eProx" },
2959 { "13", "Biometric, eProx, Keypad" },
2960 { "14", "Biometric, iProx" },
2961 { "15", "Biometric, iProx, Keypad" },
2962 { "16", "Biometric, iProx, eProx" },
2963 { "17", "Biometric, iProx, eProx, Keypad" },
2964 { "18", "Biometric, Mag Card" },
2965 { "19", "Biometric, Mag Card, Keypad" },
2966 { "1a", "Biometric, Mag Card, eProx" },
2967 { "1b", "Biometric, Mag Card, eProx, Keypad" },
2968 { "1c", "Biometric, Mag Card, iProx" },
2969 { "1d", "Biometric, Mag Card, iProx, Keypad" },
2970 { "1e", "Biometric, Mag Card, iProx, eProx" },
2971 { "1f", "Biometric, Mag Card, iProx, eProx, Keypad" },
2975 static const string_string r3_snpowersupplynames
[] =
2977 { "A", "Batteries" },
2978 { "B", "External power" },
2979 { "C", "Power over Ethernet" },
2980 { "D", "External power w/ backup" },
2981 { "E", "Power over Ethernet w/ backup" },
2985 static const string_string r3_snmortisenames
[] =
2987 { "A", "Sargent 82276 mortise" },
2988 { "B", "Sargent 82277 mortise" },
2989 { "C", "Sargent 82278 mortise" },
2990 { "D", "Sargent 82279 mortise" },
2991 { "E", "Sargent 10G77 bored" },
2992 { "F", "Sargent 8877 exit" },
2993 { "G", "Sargent 8878 exit" },
2994 { "H", "Sargent 8977 exit" },
2995 { "I", "Sargent 8878 exit" },
2996 { "J", "Corbin-Russwin ML20736/ML20836 mortise" },
2997 { "K", "Corbin-Russwin ML20735/ML20835 mortise" },
2998 { "L", "Corbin-Russwin ML20734/ML20834 mortise" },
2999 { "M", "Corbin-Russwin ML20733/ML20833 mortise" },
3000 { "N", "Corbin-Russwin CL33734/CL33834 bored" },
3001 { "O", "Corbin-Russwin 9734/9834 exit" },
3002 { "P", "Corbin-Russwin 9733/9833 exit" },
3003 { "Q", "Corbin-Russwin 9M734/9M834 exit" },
3004 { "R", "Corbin-Russwin 9M733/9M833 exit" },
3008 static int * const r3_timezonearray
[] = {
3009 &hf_r3_timezonearray0
,
3010 &hf_r3_timezonearray1
,
3011 &hf_r3_timezonearray2
,
3012 &hf_r3_timezonearray3
,
3013 &hf_r3_timezonearray4
,
3014 &hf_r3_timezonearray5
,
3015 &hf_r3_timezonearray6
,
3016 &hf_r3_timezonearray7
,
3017 &hf_r3_timezonearray8
,
3018 &hf_r3_timezonearray9
,
3019 &hf_r3_timezonearray10
,
3020 &hf_r3_timezonearray11
,
3021 &hf_r3_timezonearray12
,
3022 &hf_r3_timezonearray13
,
3023 &hf_r3_timezonearray14
,
3024 &hf_r3_timezonearray15
,
3025 &hf_r3_timezonearray16
,
3026 &hf_r3_timezonearray17
,
3027 &hf_r3_timezonearray18
,
3028 &hf_r3_timezonearray19
,
3029 &hf_r3_timezonearray20
,
3030 &hf_r3_timezonearray21
,
3031 &hf_r3_timezonearray22
,
3032 &hf_r3_timezonearray23
,
3033 &hf_r3_timezonearray24
,
3034 &hf_r3_timezonearray25
,
3035 &hf_r3_timezonearray26
,
3036 &hf_r3_timezonearray27
,
3037 &hf_r3_timezonearray28
,
3038 &hf_r3_timezonearray29
,
3039 &hf_r3_timezonearray30
,
3040 &hf_r3_timezonearray31
,
3044 static int * const r3_definetimezone_daymap
[] = {
3045 &hf_r3_definetimezone_daymap0
,
3046 &hf_r3_definetimezone_daymap1
,
3047 &hf_r3_definetimezone_daymap2
,
3048 &hf_r3_definetimezone_daymap3
,
3049 &hf_r3_definetimezone_daymap4
,
3050 &hf_r3_definetimezone_daymap5
,
3051 &hf_r3_definetimezone_daymap6
,
3055 static int * const r3_nvramclearoptions
[] = {
3056 &hf_r3_nvramclearoptions0
,
3057 &hf_r3_nvramclearoptions1
,
3058 &hf_r3_nvramclearoptions2
,
3059 &hf_r3_nvramclearoptions3
,
3060 &hf_r3_nvramclearoptions4
,
3061 &hf_r3_nvramclearoptions5
,
3062 &hf_r3_nvramclearoptions6
,
3063 &hf_r3_nvramclearoptions7
,
3064 &hf_r3_nvramclearoptions8
,
3065 &hf_r3_nvramclearoptions9
,
3066 &hf_r3_nvramclearoptions10
,
3067 &hf_r3_nvramclearoptions11
,
3068 &hf_r3_nvramclearoptions12
,
3069 &hf_r3_nvramclearoptions13
,
3070 &hf_r3_nvramclearoptions14
,
3071 &hf_r3_nvramclearoptions15
,
3076 * Mapping table so dissect_r3_cmd_setconfig() knows what the configuration item type is
3078 static configType_e configMap
[] =
3080 /* CONFIGITEM_SERIAL_NUMBER */ CONFIGTYPE_STRING
,
3081 /* CONFIGITEM_CRYPT_KEY */ CONFIGTYPE_STRING
,
3082 /* CONFIGITEM_HARDWARE_OPTIONS_MFG */ CONFIGTYPE_16
,
3083 /* CONFIGITEM_HARDWARE_OPTIONS */ CONFIGTYPE_16
,
3084 /* CONFIGITEM_NVRAM_CHANGES */ CONFIGTYPE_16
,
3085 /* CONFIGITEM_NVRAMDIRTY */ CONFIGTYPE_BOOL
,
3086 /* CONFIGITEM_NVRAM_WV */ CONFIGTYPE_BOOL
,
3087 /* CONFIGITEM_ENABLE_WDT */ CONFIGTYPE_BOOL
,
3088 /* CONFIGITEM_EARLY_ACK */ CONFIGTYPE_BOOL
,
3089 /* CONFIGITEM_CONSOLE_AES_ONLY */ CONFIGTYPE_BOOL
,
3090 /* CONFIGITEM_RADIO_AES_ONLY */ CONFIGTYPE_BOOL
,
3091 /* CONFIGITEM_NDRLE */ CONFIGTYPE_BOOL
,
3092 /* CONFIGITEM_SOMF */ CONFIGTYPE_BOOL
,
3093 /* CONFIGITEM_NOGAF */ CONFIGTYPE_BOOL
,
3094 /* CONFIGITEM_CARD_READER_POWER */ CONFIGTYPE_BOOL
,
3095 /* CONFIGITEM_PROX_ENABLE */ CONFIGTYPE_BOOL
,
3096 /* CONFIGITEM_CKSUMCONFIG */ CONFIGTYPE_BOOL
,
3097 /* CONFIGITEM_DAILY_BATTERY_CHECK */ CONFIGTYPE_BOOL
,
3098 /* CONFIGITEM_DAILY_BATTERY_CHECK_HOUR */ CONFIGTYPE_8
,
3099 /* CONFIGITEM_BATTERY_LOW */ CONFIGTYPE_BOOL
,
3100 /* CONFIGITEM_LRU_HEAD */ CONFIGTYPE_16
,
3101 /* CONFIGITEM_LRU_TAIL */ CONFIGTYPE_16
,
3102 /* CONFIGITEM_RTC_CALIBRATION */ CONFIGTYPE_8
,
3103 /* CONFIGITEM_ACVREQUESTER */ CONFIGTYPE_8
,
3104 /* CONFIGITEM_LOCAL_LED */ CONFIGTYPE_8
,
3105 /* CONFIGITEM_ERRCNT_XORLEN */ CONFIGTYPE_16
,
3106 /* CONFIGITEM_ERRCNT_CRC */ CONFIGTYPE_16
,
3107 /* CONFIGITEM_ERRCNT_NOTSIGIL */ CONFIGTYPE_16
,
3108 /* CONFIGITEM_ERRCNT_TIMEOUT */ CONFIGTYPE_16
,
3109 /* CONFIGITEM_ERRCNT_TOOLONG */ CONFIGTYPE_16
,
3110 /* CONFIGITEM_ERRCNT_TOOSHORT */ CONFIGTYPE_16
,
3111 /* CONFIGITEM_ERRCNT_HITDEFAULT */ CONFIGTYPE_16
,
3112 /* CONFIGITEM_ERRCNT_OVERRUN */ CONFIGTYPE_16
,
3113 /* CONFIGITEM_ERRCNT_UARTFE */ CONFIGTYPE_16
,
3114 /* CONFIGITEM_ERRCNT_UARTOE */ CONFIGTYPE_16
,
3115 /* CONFIGITEM_DST_SET */ CONFIGTYPE_BOOL
,
3116 /* CONFIGITEM_DST_MODE */ CONFIGTYPE_8
,
3117 /* CONFIGITEM_DST_FORWARD_MONTH */ CONFIGTYPE_8
,
3118 /* CONFIGITEM_DST_FORWARD_DOM */ CONFIGTYPE_8
,
3119 /* CONFIGITEM_DST_FORWARD_OOD */ CONFIGTYPE_8
,
3120 /* CONFIGITEM_DST_FORWARD_DOW */ CONFIGTYPE_8
,
3121 /* CONFIGITEM_DST_FORWARD_HOUR */ CONFIGTYPE_8
,
3122 /* CONFIGITEM_DST_FORWARD_MINUTE */ CONFIGTYPE_8
,
3123 /* CONFIGITEM_DST_FORWARD_ADJUST */ CONFIGTYPE_8
,
3124 /* CONFIGITEM_DST_BACK_MONTH */ CONFIGTYPE_8
,
3125 /* CONFIGITEM_DST_BACK_DOM */ CONFIGTYPE_8
,
3126 /* CONFIGITEM_DST_BACK_OOD */ CONFIGTYPE_8
,
3127 /* CONFIGITEM_DST_BACK_DOW */ CONFIGTYPE_8
,
3128 /* CONFIGITEM_DST_BACK_HOUR */ CONFIGTYPE_8
,
3129 /* CONFIGITEM_DST_BACK_MINUTE */ CONFIGTYPE_8
,
3130 /* CONFIGITEM_DST_BACK_ADJUST */ CONFIGTYPE_8
,
3131 /* CONFIGITEM_EVENTLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3132 /* CONFIGITEM_EVENTLOG_BEGIN */ CONFIGTYPE_16
,
3133 /* CONFIGITEM_EVENTLOG_RECORD */ CONFIGTYPE_16
,
3134 /* CONFIGITEM_EVENTLOG_ENTRIES */ CONFIGTYPE_16
,
3135 /* CONFIGITEM_EVENTLOG_WARNDEVICE */ CONFIGTYPE_8
,
3136 /* CONFIGITEM_EVENTLOG_WARNEVERY */ CONFIGTYPE_16
,
3137 /* CONFIGITEM_EVENTLOG_RMTDEVICE */ CONFIGTYPE_8
,
3138 /* CONFIGITEM_DECLINEDLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3139 /* CONFIGITEM_DECLINEDLOG_BEGIN */ CONFIGTYPE_16
,
3140 /* CONFIGITEM_DECLINEDLOG_RECORD */ CONFIGTYPE_16
,
3141 /* CONFIGITEM_DECLINEDLOG_ENTRIES */ CONFIGTYPE_16
,
3142 /* CONFIGITEM_DECLINEDLOG_WARNDEVICE */ CONFIGTYPE_8
,
3143 /* CONFIGITEM_DECLINEDLOG_WARNEVERY */ CONFIGTYPE_16
,
3144 /* CONFIGITEM_DECLINEDLOG_RMTDEVICE */ CONFIGTYPE_8
,
3145 /* CONFIGITEM_ALARMLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3146 /* CONFIGITEM_ALARMLOG_BEGIN */ CONFIGTYPE_16
,
3147 /* CONFIGITEM_ALARMLOG_RECORD */ CONFIGTYPE_16
,
3148 /* CONFIGITEM_ALARMLOG_ENTRIES */ CONFIGTYPE_16
,
3149 /* CONFIGITEM_ALARMLOG_WARNDEVICE */ CONFIGTYPE_8
,
3150 /* CONFIGITEM_ALARMLOG_WARNEVERY */ CONFIGTYPE_16
,
3151 /* CONFIGITEM_ALARMLOG_RMTDEVICE */ CONFIGTYPE_8
,
3152 /* CONFIGITEM_VISIBLE_FEEDBACK */ CONFIGTYPE_BOOL
,
3153 /* CONFIGITEM_AUDIBLE_FEEDBACK */ CONFIGTYPE_BOOL
,
3154 /* CONFIGITEM_VISIBLE_INDICATORS */ CONFIGTYPE_BOOL
,
3155 /* CONFIGITEM_AUDIBLE_INDICATORS */ CONFIGTYPE_BOOL
,
3156 /* CONFIGITEM_2NDPINDURATION */ CONFIGTYPE_8
,
3157 /* CONFIGITEM_LOCKOUT_ATTEMPTS */ CONFIGTYPE_8
,
3158 /* CONFIGITEM_LOCKOUT_DURATION */ CONFIGTYPE_8
,
3159 /* CONFIGITEM_KEYPAD_INACTIVITY */ CONFIGTYPE_8
,
3160 /* CONFIGITEM_ICIDLE_DURATION */ CONFIGTYPE_8
,
3161 /* CONFIGITEM_WRITE_DECLINED_LOG */ CONFIGTYPE_BOOL
,
3162 /* CONFIGITEM_LOW_BATTERY_INDICATOR */ CONFIGTYPE_BOOL
,
3163 /* CONFIGITEM_PANIC_MODE */ CONFIGTYPE_BOOL
,
3164 /* CONFIGITEM_TIMEZONE_ENABLE */ CONFIGTYPE_BOOL
,
3165 /* CONFIGITEM_EXCEPTION_ENABLE */ CONFIGTYPE_BOOL
,
3166 /* CONFIGITEM_AUTOUNLOCK_ENABLE */ CONFIGTYPE_BOOL
,
3167 /* CONFIGITEM_LOCK_PRIORITY_EMERGENCY */ CONFIGTYPE_8
,
3168 /* CONFIGITEM_LOCK_PRIORITY_SUPERVISOR */ CONFIGTYPE_8
,
3169 /* CONFIGITEM_LOCK_PRIORITY_USER */ CONFIGTYPE_8
,
3170 /* CONFIGITEM_LOCK_PRIORITY_PASSAGE */ CONFIGTYPE_8
,
3171 /* CONFIGITEM_LOCK_PRIORITY_PANIC */ CONFIGTYPE_8
,
3172 /* CONFIGITEM_LOCK_PRIORITY_LOCKOUT */ CONFIGTYPE_8
,
3173 /* CONFIGITEM_LOCK_PRIORITY_RELOCK */ CONFIGTYPE_8
,
3174 /* CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN */ CONFIGTYPE_8
,
3175 /* CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE */ CONFIGTYPE_8
,
3176 /* CONFIGITEM_LOCK_PRIORITY_REMOTE */ CONFIGTYPE_8
,
3177 /* CONFIGITEM_LOCK_TYPE */ CONFIGTYPE_8
,
3178 /* CONFIGITEM_DOUBLE_PULSE */ CONFIGTYPE_BOOL
,
3179 /* CONFIGITEM_DOUBLE_DELAY */ CONFIGTYPE_8
,
3180 /* CONFIGITEM_MOTOR_DURATION */ CONFIGTYPE_8
,
3181 /* CONFIGITEM_MORTISE_TYPE */ CONFIGTYPE_8
,
3182 /* CONFIGITEM_UNLOCK_TIME */ CONFIGTYPE_8
,
3183 /* CONFIGITEM_EXT_UNLOCK_TIME */ CONFIGTYPE_8
,
3184 /* CONFIGITEM_DOOR_AJAR_TIME */ CONFIGTYPE_8
,
3185 /* CONFIGITEM_SESSION_TIMEOUT */ CONFIGTYPE_8
,
3186 /* CONFIGITEM_RETRY_ON_TIMEOUT */ CONFIGTYPE_BOOL
,
3187 /* CONFIGITEM_UNSOLICITED_ENCRYPT */ CONFIGTYPE_8
,
3188 /* CONFIGITEM_RMT_AUTH_TIMEOUT */ CONFIGTYPE_8
,
3189 /* CONFIGITEM_RMT_AUTH_DEVICE */ CONFIGTYPE_8
,
3190 /* CONFIGITEM_ALARM_DEVICE */ CONFIGTYPE_8
,
3191 /* CONFIGITEM_NOTIFY_DEVICE */ CONFIGTYPE_8
,
3192 /* CONFIGITEM_COMMUSER_DEVICE */ CONFIGTYPE_8
,
3193 /* CONFIGITEM_SCHEDULER_DEVICE */ CONFIGTYPE_8
,
3194 /* CONFIGITEM_SCHEDULER_TYPE */ CONFIGTYPE_8
,
3195 /* CONFIGITEM_SCHEDULER_AWAKE */ CONFIGTYPE_8
,
3196 /* CONFIGITEM_SCHEDULER_PERIOD */ CONFIGTYPE_16
,
3197 /* CONFIGITEM_SCHEDULER_HOD */ CONFIGTYPE_STRING
,
3198 /* CONFIGITEM_SCHEDULER_DOW */ CONFIGTYPE_8
,
3199 /* CONFIGITEM_SCHEDULER_DOM */ CONFIGTYPE_32
,
3200 /* CONFIGITEM_SCHEDULER_HM1 */ CONFIGTYPE_16
,
3201 /* CONFIGITEM_SCHEDULER_HM2 */ CONFIGTYPE_16
,
3202 /* CONFIGITEM_SCHEDULER_HM3 */ CONFIGTYPE_16
,
3203 /* CONFIGITEM_SCHEDULER_HM4 */ CONFIGTYPE_16
,
3204 /* CONFIGITEM_RADIO_TYPE */ CONFIGTYPE_8
,
3205 /* CONFIGITEM_RADIO_MODE */ CONFIGTYPE_8
,
3206 /* CONFIGITEM_RADIO_TIMEOUT */ CONFIGTYPE_8
,
3207 /* CONFIGITEM_RADIO_ATTEMPTS */ CONFIGTYPE_8
,
3208 /* CONFIGITEM_RADIO_HOUSEKEEPING */ CONFIGTYPE_8
,
3209 /* CONFIGITEM_RADIO_LEAPUSERNAME */ CONFIGTYPE_STRING
,
3210 /* CONFIGITEM_RADIO_LEAPPASSWORD */ CONFIGTYPE_STRING
,
3211 /* CONFIGITEM_INHIBIT_VOLTAGE */ CONFIGTYPE_8
,
3212 /* CONFIGITEM_LOW_VOLTAGE */ CONFIGTYPE_8
,
3213 /* CONFIGITEM_PT_RANGE_1 */ CONFIGTYPE_8
,
3214 /* CONFIGITEM_PT_RANGE_2 */ CONFIGTYPE_8
,
3215 /* CONFIGITEM_PT_RANGE_3 */ CONFIGTYPE_8
,
3216 /* CONFIGITEM_PT_RANGE_4 */ CONFIGTYPE_8
,
3217 /* CONFIGITEM_PT_RANGE_5 */ CONFIGTYPE_8
,
3218 /* CONFIGITEM_PT_RANGE_6 */ CONFIGTYPE_8
,
3219 /* CONFIGITEM_PT_RANGE_7 */ CONFIGTYPE_8
,
3220 /* CONFIGITEM_PT_RANGE_8 */ CONFIGTYPE_8
,
3221 /* CONFIGITEM_MAGCARD_IFS */ CONFIGTYPE_BOOL
,
3222 /* CONFIGITEM_MAGCARD_FIELDS */ CONFIGTYPE_8
,
3223 /* CONFIGITEM_MAGCARD_OFFSET */ CONFIGTYPE_8
,
3224 /* CONFIGITEM_MAGCARD_DIGITS */ CONFIGTYPE_8
,
3225 /* CONFIGITEM_ALARMS */ CONFIGTYPE_STRING
,
3226 /* CONFIGITEM_FILTERS */ CONFIGTYPE_STRING
,
3227 /* CONFIGITEM_ALARMSTATE */ CONFIGTYPE_8
,
3228 /* CONFIGITEM_DOORSTATE */ CONFIGTYPE_8
,
3229 /* CONFIGITEM_DPACDEBUG */ CONFIGTYPE_BOOL
,
3230 /* CONFIGITEM_FAILOPENSECURE */ CONFIGTYPE_BOOL
,
3231 /* CONFIGITEM_REPLACED_VOLTAGE */ CONFIGTYPE_8
,
3232 /* CONFIGITEM_RX_HELD_TIME */ CONFIGTYPE_8
,
3233 /* CONFIGITEM_PACKET_TIMEOUT */ CONFIGTYPE_8
,
3234 /* CONFIGITEM_EXTENDEDRESPONSE */ CONFIGTYPE_BOOL
,
3235 /* CONFIGITEM_PASSAGEMODEINDICATOR */ CONFIGTYPE_BOOL
,
3236 /* CONFIGITEM_PFMRETURNTIME */ CONFIGTYPE_8
3241 * Dissectors for each command
3243 static void dissect_r3_cmd_response (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3244 static void dissect_r3_cmd_handshake (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3245 static void dissect_r3_cmd_killsession (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3246 static void dissect_r3_cmd_queryserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3247 static void dissect_r3_cmd_queryversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3248 static void dissect_r3_cmd_setdatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3249 static void dissect_r3_cmd_querydatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3250 static void dissect_r3_cmd_setconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3251 static void dissect_r3_cmd_getconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3252 static void dissect_r3_cmd_manageuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3253 static void dissect_r3_cmd_deleteusers (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3254 static void dissect_r3_cmd_defineexception (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3255 static void dissect_r3_cmd_defineexceptiongroup (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3256 static void dissect_r3_cmd_definecalendar (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3257 static void dissect_r3_cmd_definetimezone (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3258 static void dissect_r3_cmd_rmtauthretry (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3259 static void dissect_r3_cmd_filters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3260 static void dissect_r3_cmd_alarmconfigure (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3261 static void dissect_r3_cmd_eventlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3262 static void dissect_r3_cmd_declinedlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3263 static void dissect_r3_cmd_alarmlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3264 static void dissect_r3_cmd_downloadfirmware (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3265 static void dissect_r3_cmd_downloadfirmwaretimeout (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3266 static void dissect_r3_cmd_powertableselection (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3267 static void dissect_r3_cmd_clearnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3268 static void dissect_r3_cmd_dpac (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3269 static void dissect_r3_cmd_selftest (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3270 static void dissect_r3_cmd_reset (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3271 static void dissect_r3_cmd_logwrite (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3272 static void dissect_r3_cmd_mfgcommand (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3273 static void dissect_r3_cmd_nvrambackup (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3274 static void dissect_r3_cmd_extendedresponse (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3276 static void (*r3command_dissect
[]) (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3278 /* CMD_RESPONSE */ dissect_r3_cmd_response
,
3279 /* CMD_HANDSHAKE */ dissect_r3_cmd_handshake
,
3280 /* CMD_KILLSESSION */ dissect_r3_cmd_killsession
,
3281 /* CMD_QUERYSERIALNUMBER */ dissect_r3_cmd_queryserialnumber
,
3282 /* CMD_QUERYVERSION */ dissect_r3_cmd_queryversion
,
3283 /* CMD_SETDATETIME */ dissect_r3_cmd_setdatetime
,
3284 /* CMD_QUERYDATETIME */ dissect_r3_cmd_querydatetime
,
3285 /* CMD_SETCONFIG */ dissect_r3_cmd_setconfig
,
3286 /* CMD_GETCONFIG */ dissect_r3_cmd_getconfig
,
3287 /* CMD_MANAGEUSER */ dissect_r3_cmd_manageuser
,
3288 /* CMD_DELETEUSERS */ dissect_r3_cmd_deleteusers
,
3289 /* CMD_DEFINEEXCEPTION */ dissect_r3_cmd_defineexception
,
3290 /* CMD_DEFINEEXCEPTIONGROUP */ dissect_r3_cmd_defineexceptiongroup
,
3291 /* CMD_DEFINECALENDAR */ dissect_r3_cmd_definecalendar
,
3292 /* CMD_DEFINETIMEZONE */ dissect_r3_cmd_definetimezone
,
3293 /* CMD_RMTAUTHRETRY */ dissect_r3_cmd_rmtauthretry
,
3294 /* CMD_FILTERS */ dissect_r3_cmd_filters
,
3295 /* CMD_ALARMCONFIGURE */ dissect_r3_cmd_alarmconfigure
,
3296 /* CMD_EVENTLOGDUMP */ dissect_r3_cmd_eventlogdump
,
3297 /* CMD_DECLINEDLOGDUMP */ dissect_r3_cmd_declinedlogdump
,
3298 /* CMD_ALARMLOGDUMP */ dissect_r3_cmd_alarmlogdump
,
3299 /* CMD_DOWNLOADFIRMWARE */ dissect_r3_cmd_downloadfirmware
,
3300 /* CMD_DOWNLOADFIRMWARETIMEOUT */ dissect_r3_cmd_downloadfirmwaretimeout
,
3301 /* CMD_POWERTABLESELECTION */ dissect_r3_cmd_powertableselection
,
3302 /* CMD_CLEARNVRAM */ dissect_r3_cmd_clearnvram
,
3303 /* CMD_DPAC */ dissect_r3_cmd_dpac
,
3304 /* CMD_SELFTEST */ dissect_r3_cmd_selftest
,
3305 /* CMD_RESET */ dissect_r3_cmd_reset
,
3306 /* CMD_LOGWRITE */ dissect_r3_cmd_logwrite
,
3307 /* CMD_MFGCOMMAND */ dissect_r3_cmd_mfgcommand
,
3308 /* CMD_NVRAMBACKUP */ dissect_r3_cmd_nvrambackup
,
3309 /* CMD_EXTENDEDRESPONSE */ dissect_r3_cmd_extendedresponse
3312 static void dissect_r3_cmdmfg_setserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3313 static void dissect_r3_cmdmfg_setcryptkey (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3314 static void dissect_r3_cmdmfg_dumpnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3315 static void dissect_r3_cmdmfg_terminal (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3316 static void dissect_r3_cmdmfg_remoteunlock (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3317 static void dissect_r3_cmdmfg_auxctlrversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3318 static void dissect_r3_cmdmfg_iopins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3319 static void dissect_r3_cmdmfg_adcs (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3320 static void dissect_r3_cmdmfg_hardwareid (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3321 static void dissect_r3_cmdmfg_checkpointlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3322 static void dissect_r3_cmdmfg_checkpointlogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3323 static void dissect_r3_cmdmfg_readregisters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3324 static void dissect_r3_cmdmfg_forceoptions (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3325 static void dissect_r3_cmdmfg_commuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3326 static void dissect_r3_cmdmfg_dumpkeypad (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3327 static void dissect_r3_cmdmfg_batterycheck (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3328 static void dissect_r3_cmdmfg_ramrefresh (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3329 static void dissect_r3_cmdmfg_taskflags (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3330 static void dissect_r3_cmdmfg_timerchain (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3331 static void dissect_r3_cmdmfg_peekpoke (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3332 static void dissect_r3_cmdmfg_lockstate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3333 static void dissect_r3_cmdmfg_capabilities (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3334 static void dissect_r3_cmdmfg_dumpm41t81 (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3335 static void dissect_r3_cmdmfg_debuglogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3336 static void dissect_r3_cmdmfg_debuglogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3337 static void dissect_r3_cmdmfg_testwdt (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3338 static void dissect_r3_cmdmfg_querycksum (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3339 static void dissect_r3_cmdmfg_validatechecksums (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3340 static void dissect_r3_cmdmfg_rebuildlrucache (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3341 static void dissect_r3_cmdmfg_tzupdate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3342 static void dissect_r3_cmdmfg_testpreserve (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3343 static void dissect_r3_cmdmfg_mortisestatelogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3344 static void dissect_r3_cmdmfg_mortisestatelogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3345 static void dissect_r3_cmdmfg_mortisepins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3346 static void dissect_r3_cmdmfg_haltandcatchfire (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3348 static void (*r3commandmfg_dissect
[]) (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3350 /* CMDMFG_SETSERIALNUMBER */ dissect_r3_cmdmfg_setserialnumber
,
3351 /* CMDMFG_SETCRYPTKEY */ dissect_r3_cmdmfg_setcryptkey
,
3352 /* CMDMFG_DUMPNVRAM */ dissect_r3_cmdmfg_dumpnvram
,
3353 /* CMDMFG_TERMINAL */ dissect_r3_cmdmfg_terminal
,
3354 /* CMDMFG_REMOTEUNLOCK */ dissect_r3_cmdmfg_remoteunlock
,
3355 /* CMDMFG_AUXCTLRVERSION */ dissect_r3_cmdmfg_auxctlrversion
,
3356 /* CMDMFG_IOPINS */ dissect_r3_cmdmfg_iopins
,
3357 /* CMDMFG_ADCS */ dissect_r3_cmdmfg_adcs
,
3358 /* CMDMFG_HARDWAREID */ dissect_r3_cmdmfg_hardwareid
,
3359 /* CMDMFG_CHECKPOINTLOGDUMP */ dissect_r3_cmdmfg_checkpointlogdump
,
3360 /* CMDMFG_CHECKPOINTLOGCLEAR */ dissect_r3_cmdmfg_checkpointlogclear
,
3361 /* CMDMFG_READREGISTERS */ dissect_r3_cmdmfg_readregisters
,
3362 /* CMDMFG_FORCEOPTIONS */ dissect_r3_cmdmfg_forceoptions
,
3363 /* CMDMFG_COMMUSER */ dissect_r3_cmdmfg_commuser
,
3364 /* CMDMFG_DUMPKEYPAD */ dissect_r3_cmdmfg_dumpkeypad
,
3365 /* CMDMFG_BATTERYCHECK */ dissect_r3_cmdmfg_batterycheck
,
3366 /* CMDMFG_RAMREFRESH */ dissect_r3_cmdmfg_ramrefresh
,
3367 /* CMDMFG_TASKFLAGS */ dissect_r3_cmdmfg_taskflags
,
3368 /* CMDMFG_TIMERCHAIN */ dissect_r3_cmdmfg_timerchain
,
3369 /* CMDMFG_PEEKPOKE */ dissect_r3_cmdmfg_peekpoke
,
3370 /* CMDMFG_LOCKSTATE */ dissect_r3_cmdmfg_lockstate
,
3371 /* CMDMFG_CAPABILITIES */ dissect_r3_cmdmfg_capabilities
,
3372 /* CMDMFG_DUMPM41T81 */ dissect_r3_cmdmfg_dumpm41t81
,
3373 /* CMDMFG_DEBUGLOGDUMP */ dissect_r3_cmdmfg_debuglogdump
,
3374 /* CMDMFG_DEBUGLOGCLEAR */ dissect_r3_cmdmfg_debuglogclear
,
3375 /* CMDMFG_TESTWDT */ dissect_r3_cmdmfg_testwdt
,
3376 /* CMDMFG_QUERYCKSUM */ dissect_r3_cmdmfg_querycksum
,
3377 /* CMDMFG_VALIDATECHECKSUMS */ dissect_r3_cmdmfg_validatechecksums
,
3378 /* CMDMFG_REBUILDLRUCACHE */ dissect_r3_cmdmfg_rebuildlrucache
,
3379 /* CMDMFG_TZUPDATE */ dissect_r3_cmdmfg_tzupdate
,
3380 /* CMDMFG_TESTPRESERVE */ dissect_r3_cmdmfg_testpreserve
,
3381 /* CMDMFG_MORTISESTATELOGDUMP */ dissect_r3_cmdmfg_mortisestatelogdump
,
3382 /* CMDMFG_MORTISESTATELOGCLEAR */ dissect_r3_cmdmfg_mortisestatelogclear
,
3383 /* CMDMFG_MORTISEPINS */ dissect_r3_cmdmfg_mortisepins
,
3384 /* CMDMFG_HALTANDCATCHFIRE */ dissect_r3_cmdmfg_haltandcatchfire
3387 static void dissect_r3_response_singlebyte (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3388 static void dissect_r3_response_hasdata (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3390 static void (*r3response_dissect
[]) (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3392 /* RESPONSETYPE_OK */ dissect_r3_response_singlebyte
,
3393 /* RESPONSETYPE_ERROR */ dissect_r3_response_singlebyte
,
3394 /* RESPONSETYPE_HASDATA */ dissect_r3_response_hasdata
,
3395 /* RESPONSETYPE_NOHANDLER */ dissect_r3_response_singlebyte
,
3396 /* RESPONSETYPE_NOSESSION */ dissect_r3_response_singlebyte
,
3397 /* RESPONSETYPE_BADCOMMAND */ dissect_r3_response_singlebyte
,
3398 /* RESPONSETYPE_BADPARAMETER */ dissect_r3_response_singlebyte
,
3399 /* RESPONSETYPE_BADPARAMETERLEN */ dissect_r3_response_singlebyte
,
3400 /* RESPONSETYPE_MISSINGPARAMETER */ dissect_r3_response_singlebyte
,
3401 /* RESPONSETYPE_DUPLICATEPARAMETER */ dissect_r3_response_singlebyte
,
3402 /* RESPONSETYPE_PARAMETERCONFLICT */ dissect_r3_response_singlebyte
,
3403 /* RESPONSETYPE_BADDEVICE */ dissect_r3_response_singlebyte
,
3404 /* RESPONSETYPE_NVRAMERROR */ dissect_r3_response_singlebyte
,
3405 /* RESPONSETYPE_NVRAMERRORNOACK */ dissect_r3_response_singlebyte
,
3406 /* RESPONSETYPE_NVRAMERRORNOACK32 */ dissect_r3_response_singlebyte
,
3407 /* RESPONSETYPE_NOTI2CADDRESS */ dissect_r3_response_singlebyte
,
3408 /* RESPONSETYPE_FIRMWAREERROR */ dissect_r3_response_singlebyte
,
3409 /* RESPONSETYPE_DUMPINPROGRESS */ dissect_r3_response_singlebyte
,
3410 /* RESPONSETYPE_INTERNALERROR */ dissect_r3_response_singlebyte
,
3411 /* RESPONSETYPE_NOTIMPLEMENTED */ dissect_r3_response_singlebyte
,
3412 /* RESPONSETYPE_PINFORMATERROR */ dissect_r3_response_singlebyte
,
3413 /* RESPONSETYPE_PINEXISTS */ dissect_r3_response_singlebyte
,
3414 /* RESPONSETYPE_PINNOTFOUND */ dissect_r3_response_singlebyte
,
3415 /* RESPONSETYPE_USERACTIVE */ dissect_r3_response_singlebyte
,
3416 /* RESPONSETYPE_USERINACTIVE */ dissect_r3_response_singlebyte
,
3417 /* RESPONSETYPE_PARENTNOTFOUND */ dissect_r3_response_singlebyte
,
3418 /* RESPONSETYPE_NOCHAIN */ dissect_r3_response_singlebyte
,
3419 /* RESPONSETYPE_CAUGHTINLOOP */ dissect_r3_response_singlebyte
,
3420 /* RESPONSETYPE_EVENTFILTERED */ dissect_r3_response_singlebyte
,
3421 /* RESPONSETYPE_PAYLOADTOOLARGE */ dissect_r3_response_singlebyte
,
3422 /* RESPONSETYPE_ENDOFDATA */ dissect_r3_response_singlebyte
,
3423 /* RESPONSETYPE_RMTAUTHREJECTED */ dissect_r3_response_singlebyte
,
3424 /* RESPONSETYPE_NVRAMVERSIONERROR */ dissect_r3_response_singlebyte
,
3425 /* RESPONSETYPE_NOHARDWARE */ dissect_r3_response_singlebyte
,
3426 /* RESPONSETYPE_SCHEDULERCONFLICT */ dissect_r3_response_singlebyte
,
3427 /* RESPONSETYPE_NVRAMWRITEERROR */ dissect_r3_response_singlebyte
,
3428 /* RESPONSETYPE_DECLINEDFILTERED */ dissect_r3_response_singlebyte
,
3429 /* RESPONSETYPE_NECONFIGPARM */ dissect_r3_response_singlebyte
,
3430 /* RESPONSETYPE_FLASHERASEERROR */ dissect_r3_response_singlebyte
,
3431 /* RESPONSETYPE_FLASHWRITEERROR */ dissect_r3_response_singlebyte
,
3432 /* RESPONSETYPE_BADNVBACKUP */ dissect_r3_response_singlebyte
,
3433 /* RESPONSETYPE_EARLYACK */ dissect_r3_response_singlebyte
,
3434 /* RESPONSETYPE_ALARMFILTERED */ dissect_r3_response_singlebyte
,
3435 /* RESPONSETYPE_ACVFAILURE */ dissect_r3_response_singlebyte
,
3436 /* RESPONSETYPE_USERCHECKSUMERROR */ dissect_r3_response_singlebyte
,
3437 /* RESPONSETYPE_CHECKSUMERROR */ dissect_r3_response_singlebyte
,
3438 /* RESPONSETYPE_RTCSQWFAILURE */ dissect_r3_response_singlebyte
,
3439 /* RESPONSETYPE_PRIORITYSHUTDOWN */ dissect_r3_response_singlebyte
,
3440 /* RESPONSETYPE_NOTMODIFIABLE */ dissect_r3_response_singlebyte
,
3441 /* RESPONSETYPE_CANTPRESERVE */ dissect_r3_response_singlebyte
,
3442 /* RESPONSETYPE_INPASSAGEMODE */ dissect_r3_response_singlebyte
3445 static void dissect_r3_upstreamcommand_reserved (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3446 static void dissect_r3_upstreamcommand_debugmsg (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3447 static void dissect_r3_upstreamcommand_queryversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3448 static void dissect_r3_upstreamcommand_querydatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3449 static void dissect_r3_upstreamcommand_queryserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3450 static void dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3451 static void dissect_r3_upstreamcommand_dumpnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3452 static void dissect_r3_upstreamcommand_rmtquthrequest (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3453 static void dissect_r3_upstreamcommand_retrieveuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3454 static void dissect_r3_upstreamcommand_queryconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3455 static void dissect_r3_upstreamcommand_rmteventlogrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3456 static void dissect_r3_upstreamcommand_dpac (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3457 static void dissect_r3_upstreamcommand_notify (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3458 static void dissect_r3_upstreamcommand_mfg (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3459 static void dissect_r3_upstreamcommand_eventlogwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3460 static void dissect_r3_upstreamcommand_dumpnvramrle (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3461 static void dissect_r3_upstreamcommand_rmtdeclinedrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3462 static void dissect_r3_upstreamcommand_declinedwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3463 static void dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3464 static void dissect_r3_upstreamcommand_rmtalarmrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3465 static void dissect_r3_upstreamcommand_alarmwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3466 static void dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3467 static void dissect_r3_upstreamcommand_connectscheduler (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3468 static void dissect_r3_upstreamcommand_connectcommuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3469 static void dissect_r3_upstreamcommand_commandalarm (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3470 static void dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3472 static void (*r3upstreamcommand_dissect
[]) (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3474 /* UPSTREAMCOMMAND_RESERVED */ dissect_r3_upstreamcommand_reserved
,
3475 /* UPSTREAMCOMMAND_DEBUGMSG */ dissect_r3_upstreamcommand_debugmsg
,
3476 /* UPSTREAMCOMMAND_QUERYVERSION */ dissect_r3_upstreamcommand_queryversion
,
3477 /* UPSTREAMCOMMAND_QUERYDATETIME */ dissect_r3_upstreamcommand_querydatetime
,
3478 /* UPSTREAMCOMMAND_QUERYSERIALNUMBER */ dissect_r3_upstreamcommand_queryserialnumber
,
3479 /* UPSTREAMCOMMAND_DUMPEVENTLOG */ dissect_r3_upstreamcommand_dumpeventlog
,
3480 /* UPSTREAMCOMMAND_DUMPNVRAM */ dissect_r3_upstreamcommand_dumpnvram
,
3481 /* UPSTREAMCOMMAND_RMTAUTHREQUEST */ dissect_r3_upstreamcommand_rmtquthrequest
,
3482 /* UPSTREAMCOMMAND_RETRIEVEUSER */ dissect_r3_upstreamcommand_retrieveuser
,
3483 /* UPSTREAMCOMMAND_QUERYCONFIG */ dissect_r3_upstreamcommand_queryconfig
,
3484 /* UPSTREAMCOMMAND_RMTEVENTLOGRECORD */ dissect_r3_upstreamcommand_rmteventlogrecord
,
3485 /* UPSTREAMCOMMAND_DPAC */ dissect_r3_upstreamcommand_dpac
,
3486 /* UPSTREAMCOMMAND_NOTIFY */ dissect_r3_upstreamcommand_notify
,
3487 /* UPSTREAMCOMMAND_MFG */ dissect_r3_upstreamcommand_mfg
,
3488 /* UPSTREAMCOMMAND_EVENTLOGWARNING */ dissect_r3_upstreamcommand_eventlogwarning
,
3489 /* UPSTREAMCOMMAND_DUMPNVRAMRLE */ dissect_r3_upstreamcommand_dumpnvramrle
,
3490 /* UPSTREAMCOMMAND_RMTDECLINEDRECORD */ dissect_r3_upstreamcommand_rmtdeclinedrecord
,
3491 /* UPSTREAMCOMMAND_DECLINEDWARNING */ dissect_r3_upstreamcommand_declinedwarning
,
3492 /* UPSTREAMCOMMAND_DUMPDECLINEDLOG */ dissect_r3_upstreamcommand_dumpdeclinedlog
,
3493 /* UPSTREAMCOMMAND_RMTALARMRECORD */ dissect_r3_upstreamcommand_rmtalarmrecord
,
3494 /* UPSTREAMCOMMAND_ALARMWARNING */ dissect_r3_upstreamcommand_alarmwarning
,
3495 /* UPSTREAMCOMMAND_DUMPALARMLOG */ dissect_r3_upstreamcommand_dumpalarmlog
,
3496 /* UPSTREAMCOMMAND_CONNECTSCHEDULER */ dissect_r3_upstreamcommand_connectscheduler
,
3497 /* UPSTREAMCOMMAND_CONNECTCOMMUSER */ dissect_r3_upstreamcommand_connectcommuser
,
3498 /* UPSTREAMCOMMAND_CONNECTALARM */ dissect_r3_upstreamcommand_commandalarm
,
3499 /* UPSTREAMCOMMAND_DUMPDEBUGLOG */ dissect_r3_upstreamcommand_dumpdebuglog
3502 static void dissect_r3_upstreammfgfield_iopins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3503 static void dissect_r3_upstreammfgfield_adcs (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3504 static void dissect_r3_upstreammfgfield_hardwareid (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3505 static void dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3506 static void dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3507 static void dissect_r3_upstreammfgfield_taskflags (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3508 static void dissect_r3_upstreammfgfield_timerchain (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3509 static void dissect_r3_upstreammfgfield_peekpoke (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3510 static void dissect_r3_upstreammfgfield_lockstate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3511 static void dissect_r3_upstreammfgfield_capabilities (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3512 static void dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3513 static void dissect_r3_upstreammfgfield_nvramchecksumvalue (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3514 static void dissect_r3_upstreammfgfield_checksumresults (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3515 static void dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3516 static void dissect_r3_upstreammfgfield_mortisepins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3517 static void dissect_r3_upstreammfgfield_keypadchar (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3518 static void dissect_r3_upstreammfgfield_magcard (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3519 static void dissect_r3_upstreammfgfield_proxcard (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
);
3521 static void (*r3upstreammfgfield_dissect
[]) (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3523 /* MFGFIELD_IOPINS */ dissect_r3_upstreammfgfield_iopins
,
3524 /* MFGFIELD_ADCS */ dissect_r3_upstreammfgfield_adcs
,
3525 /* MFGFIELD_HARDWAREID */ dissect_r3_upstreammfgfield_hardwareid
,
3526 /* MFGFIELD_CHECKPOINTLOG */ dissect_r3_upstreammfgfield_checkpointlog
,
3527 /* MFGFIELD_CPUREGISTERS */ dissect_r3_upstreammfgfield_cpuregisters
,
3528 /* MFGFIELD_TASKFLAGS */ dissect_r3_upstreammfgfield_taskflags
,
3529 /* MFGFIELD_TIMERCHAIN */ dissect_r3_upstreammfgfield_timerchain
,
3530 /* MFGFIELD_PEEKPOKE */ dissect_r3_upstreammfgfield_peekpoke
,
3531 /* MFGFIELD_LOCKSTATE */ dissect_r3_upstreammfgfield_lockstate
,
3532 /* MFGFIELD_CAPABILITIES */ dissect_r3_upstreammfgfield_capabilities
,
3533 /* MFGFIELD_DUMPM41T81 */ dissect_r3_upstreammfgfield_dumpm41t81
,
3534 /* MFGFIELD_NVRAMCHECKSUMVALUE */ dissect_r3_upstreammfgfield_nvramchecksumvalue
,
3535 /* MFGFIELD_CHECKSUMRESULTS */ dissect_r3_upstreammfgfield_checksumresults
,
3536 /* MFGFIELD_MORTISESTATELOG */ dissect_r3_upstreammfgfield_mortisestatelog
,
3537 /* MFGFIELD_MORTISEPINS */ dissect_r3_upstreammfgfield_mortisepins
,
3538 /* MFGFIELD_KEYPADCHAR */ dissect_r3_upstreammfgfield_keypadchar
,
3539 /* MFGFIELD_MAGCARD */ dissect_r3_upstreammfgfield_magcard
,
3540 /* MFGFIELD_PROXCARD */ dissect_r3_upstreammfgfield_proxcard
3544 * ***************************************************************************
3547 dissect_serialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
, int hf_index
)
3549 proto_item
*sn_item
;
3550 proto_tree
*sn_tree
;
3553 tvb_ensure_bytes_exist (tvb
, start_offset
, 16);
3558 sn_item
= proto_tree_add_item (tree
, hf_index
, tvb
, start_offset
, 16, ENC_ASCII
|ENC_NA
);
3559 sn_tree
= proto_item_add_subtree (sn_item
, ett_r3serialnumber
);
3561 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 0, 2, ENC_ASCII
|ENC_NA
);
3562 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_manufacturer
, tvb
, start_offset
+ 0, 2, s
, "%s (%s)", s
, str_to_str (s
, r3_snmanufacturernames
, "[Unknown]"));
3563 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 2, 1, ENC_ASCII
|ENC_NA
);
3564 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_year
, tvb
, start_offset
+ 2, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_snyearnames
, "[Unknown]"));
3565 proto_tree_add_item(sn_tree
, hf_r3_sn_week
, tvb
, start_offset
+ 3, 2, ENC_ASCII
);
3566 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 5, 1, ENC_ASCII
|ENC_NA
);
3567 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_model
, tvb
, start_offset
+ 5, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_snmodelnames
, "[Unknown]"));
3568 proto_tree_add_item(sn_tree
, hf_r3_sn_sequence
, tvb
, start_offset
+ 6, 4, ENC_ASCII
);
3569 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 10, 1, ENC_ASCII
|ENC_NA
);
3570 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_group
, tvb
, start_offset
+ 10, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_sngroupnames
, "[Unknown]"));
3571 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 11, 1, ENC_ASCII
|ENC_NA
);
3572 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_nid
, tvb
, start_offset
+ 11, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_snnidnames
, "[Unknown]"));
3573 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 12, 2, ENC_ASCII
|ENC_NA
);
3574 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_hid
, tvb
, start_offset
+ 12, 2, s
, "%s (%s)", s
, str_to_str (s
, r3_snhidnames
, "[Unknown]"));
3575 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 14, 1, ENC_ASCII
|ENC_NA
);
3576 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_power_supply
, tvb
, start_offset
+ 14, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_snpowersupplynames
, "[Unknown]"));
3577 s
= tvb_get_string_enc (pinfo
->pool
, tvb
, start_offset
+ 15, 1, ENC_ASCII
|ENC_NA
);
3578 proto_tree_add_string_format_value(sn_tree
, hf_r3_sn_mortise
, tvb
, start_offset
+ 15, 1, s
, "%s (%s)", s
, str_to_str (s
, r3_snmortisenames
, "[Unknown]"));
3582 * ***************************************************************************
3584 * We've already ensured we have enough bytes in the table via tvb_ensure_bytes_exist()
3588 dissect_r3_upstreamfields (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3590 uint32_t offset
= 0;
3592 DISSECTOR_ASSERT(start_offset
== 0);
3594 while (offset
< tvb_reported_length (tvb
))
3596 uint32_t fieldLength
= tvb_get_uint8 (tvb
, offset
+ 0);
3597 uint32_t fieldType
= tvb_get_uint8 (tvb
, offset
+ 1);
3598 uint32_t dataLength
= fieldLength
- 2;
3599 proto_item
*upstreamfield_item
;
3600 proto_item
*upstreamfield_length
;
3601 proto_tree
*upstreamfield_tree
;
3604 usfn
= val_to_str_ext_const (fieldType
, &r3_upstreamfieldnames_ext
, "[Unknown Field]");
3606 upstreamfield_item
= proto_tree_add_none_format (tree
, hf_r3_upstreamfield
, tvb
, offset
+ 0, fieldLength
, "Upstream Field: %s (%u)", usfn
, fieldType
);
3607 upstreamfield_tree
= proto_item_add_subtree (upstreamfield_item
, ett_r3upstreamfield
);
3609 upstreamfield_length
= proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldlength
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3610 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldtype
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3612 if (fieldLength
< 2)
3615 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed length value -- all fields are at least 2 octets.");
3623 * Booleans, 8 & 16 bit values
3625 case UPSTREAMFIELD_PRIMARYPIN
:
3626 case UPSTREAMFIELD_AUXPIN
:
3627 case UPSTREAMFIELD_ACCESSALWAYS
:
3628 case UPSTREAMFIELD_CACHED
:
3629 case UPSTREAMFIELD_ENTRYDEVICE
:
3630 case UPSTREAMFIELD_PPMIFIELDTYPE
:
3631 case UPSTREAMFIELD_RESPONSEWINDOW
:
3632 case UPSTREAMFIELD_USERTYPE
:
3633 case UPSTREAMFIELD_PRIMARYFIELDTYPE
:
3634 case UPSTREAMFIELD_AUXFIELDTYPE
:
3635 case UPSTREAMFIELD_ACCESSMODE
:
3636 case UPSTREAMFIELD_USECOUNT
:
3637 case UPSTREAMFIELD_EXCEPTIONGROUP
:
3638 case UPSTREAMFIELD_NAR
:
3639 case UPSTREAMFIELD_SEQUENCENUMBER
:
3640 case UPSTREAMFIELD_USERNUMBER
:
3641 case UPSTREAMFIELD_EVENTLOGRECORDCOUNT
:
3642 case UPSTREAMFIELD_DECLINEDRECORDCOUNT
:
3643 case UPSTREAMFIELD_ALARMRECORDCOUNT
:
3644 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
], tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
3650 case UPSTREAMFIELD_PIN
:
3651 case UPSTREAMFIELD_VERSION
:
3652 case UPSTREAMFIELD_AUXCTLRVERSION
:
3653 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
], tvb
, offset
, dataLength
, ENC_ASCII
|ENC_NA
);
3659 case UPSTREAMFIELD_SERIALNUMBER
:
3661 tvbuff_t
*sn_tvb
= tvb_new_subset_length (tvb
, offset
, dataLength
);
3663 dissect_serialnumber (sn_tvb
, 0, length
, pinfo
, upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
]);
3667 case UPSTREAMFIELD_EVENTLOGRECORD
:
3669 if (dataLength
!= 9)
3671 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed event log field -- expected 9 octets");
3675 proto_tree
*eventlog_tree
;
3677 if (!upstreamfield_tree
)
3680 eventlog_tree
= proto_tree_add_subtree(upstreamfield_tree
, tvb
, offset
, 9, ett_r3eventlogrecord
, NULL
, "Event Log Record");
3682 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3683 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3684 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3685 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3686 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3687 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3688 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_usernumber
, tvb
, offset
+ 6, 2, ENC_LITTLE_ENDIAN
);
3689 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_event
, tvb
, offset
+ 8, 1, ENC_LITTLE_ENDIAN
);
3694 case UPSTREAMFIELD_DATETIME
:
3696 if (dataLength
!= 8)
3698 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed date/time field -- expected 8 octets");
3702 proto_tree
*datetime_tree
;
3704 if (!upstreamfield_tree
)
3707 datetime_tree
= proto_tree_add_subtree_format(upstreamfield_tree
, tvb
, offset
, 8, ett_r3datetime
, NULL
,
3708 "Date/Time: %02u/%02u/%02u-%u %02u:%02u:%02u %u",
3709 tvb_get_uint8 (tvb
, offset
+ 0), tvb_get_uint8 (tvb
, offset
+ 1), tvb_get_uint8 (tvb
, offset
+ 2), tvb_get_uint8 (tvb
, offset
+ 3),
3710 tvb_get_uint8 (tvb
, offset
+ 4), tvb_get_uint8 (tvb
, offset
+ 5), tvb_get_uint8 (tvb
, offset
+ 6), tvb_get_uint8 (tvb
, offset
+ 7));
3712 proto_tree_add_item (datetime_tree
, hf_r3_datetime_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3713 proto_tree_add_item (datetime_tree
, hf_r3_datetime_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3714 proto_tree_add_item (datetime_tree
, hf_r3_datetime_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3715 proto_tree_add_item (datetime_tree
, hf_r3_datetime_dow
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3716 proto_tree_add_item (datetime_tree
, hf_r3_datetime_hours
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3717 proto_tree_add_item (datetime_tree
, hf_r3_datetime_minutes
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3718 proto_tree_add_item (datetime_tree
, hf_r3_datetime_seconds
, tvb
, offset
+ 6, 1, ENC_LITTLE_ENDIAN
);
3719 proto_tree_add_item (datetime_tree
, hf_r3_datetime_dst
, tvb
, offset
+ 7, 1, ENC_LITTLE_ENDIAN
);
3724 case UPSTREAMFIELD_DECLINEDRECORD
:
3727 if (dataLength
!= 49)
3729 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed declined log field -- expected 49 octets");
3733 proto_tree
*declinedlog_tree
;
3737 if (!upstreamfield_tree
)
3740 declinedlog_tree
= proto_tree_add_subtree(upstreamfield_tree
, tvb
, offset
, 49, ett_r3declinedlogrecord
, NULL
, "Declined Log Record");
3742 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3743 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3744 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3745 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3746 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3747 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3748 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_usernumber
, tvb
, offset
+ 6, 2, ENC_LITTLE_ENDIAN
);
3750 cred1type
= tvb_get_uint8 (tvb
, offset
+ 8) & 0x07;
3751 cred2type
= (tvb_get_uint8 (tvb
, offset
+ 8) & 0x38) >> 3;
3753 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred1type
, tvb
, offset
, 1, cred1type
);
3754 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred2type
, tvb
, offset
, 1, cred2type
);
3755 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred1
, tvb
, offset
+ 9, 19, ENC_NA
);
3756 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred2
, tvb
, offset
+ 28, 19, ENC_NA
);
3761 case UPSTREAMFIELD_EXPIREON
:
3763 if (dataLength
!= 3)
3765 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed expiration field -- expected 3 octets");
3769 proto_tree
*expireon_tree
;
3771 if (!upstreamfield_tree
)
3774 expireon_tree
= proto_tree_add_subtree_format(upstreamfield_tree
, tvb
, offset
, 3, ett_r3expireon
, NULL
,
3775 "Expire YY/MM/DD: %02u/%02u/%02u",
3776 tvb_get_uint8 (tvb
, offset
+ 2), tvb_get_uint8 (tvb
, offset
+ 0), tvb_get_uint8 (tvb
, offset
+ 1));
3778 proto_tree_add_item (expireon_tree
, hf_r3_expireon_month
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3779 proto_tree_add_item (expireon_tree
, hf_r3_expireon_day
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3780 proto_tree_add_item (expireon_tree
, hf_r3_expireon_year
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3785 case UPSTREAMFIELD_TIMEZONE
:
3787 if (dataLength
!= 4)
3789 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed timezone field -- expected 4 octets");
3793 proto_tree_add_bitmask(upstreamfield_tree
, tvb
, offset
, hf_r3_upstreamfieldarray
[fieldType
], ett_r3timezone
, r3_timezonearray
, ENC_LITTLE_ENDIAN
);
3798 case UPSTREAMFIELD_ALARMRECORD
:
3800 if (dataLength
!= 9)
3802 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed alarm log field -- expected 9 octets");
3806 proto_tree
*alarmlog_tree
;
3808 if (!upstreamfield_tree
)
3811 alarmlog_tree
= proto_tree_add_subtree(upstreamfield_tree
, tvb
, offset
, 9, ett_r3alarmlogrecord
, NULL
, "Alarm Record");
3813 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3814 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3815 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3816 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3817 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3818 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3819 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_id
, tvb
, offset
+ 6, 1, ENC_LITTLE_ENDIAN
);
3820 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_usernumber
, tvb
, offset
+ 7, 2, ENC_LITTLE_ENDIAN
);
3825 case UPSTREAMFIELD_NOTUSED
:
3827 proto_tree_add_none_format (upstreamfield_tree
, hf_r3_upstreamfielderror
, tvb
, offset
, dataLength
, "Unknown Field Type");
3831 offset
+= dataLength
;
3836 * ***************************************************************************
3838 * These are passed a tvb that contains whatever occurs after the [UPSTREAMCOMMAND_*] byte
3841 dissect_r3_upstreamcommand_reserved (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3843 proto_tree_add_expert(tree
, pinfo
, &ei_r3_reserved_upstream_command_value
, tvb
, start_offset
, length
);
3847 dissect_r3_upstreamcommand_debugmsg (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3849 proto_tree
*debugmsg_tree
;
3854 DISSECTOR_ASSERT(start_offset
== 0);
3856 debugmsg_tree
= proto_tree_add_subtree(tree
, tvb
, 0, -1, ett_r3debugmsg
, NULL
, "Debug message");
3858 proto_tree_add_item (debugmsg_tree
, hf_r3_debugmsg
, tvb
, 1, -1, ENC_ASCII
);
3862 dissect_r3_upstreamcommand_queryversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3864 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3868 dissect_r3_upstreamcommand_querydatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3870 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3874 dissect_r3_upstreamcommand_queryserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3876 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3880 dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3882 DISSECTOR_ASSERT(start_offset
== 0);
3884 tvb_ensure_bytes_exist (tvb
, 0, 11);
3888 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Malformed event log record -- expected 10 octets");
3892 proto_tree
*eventlog_tree
;
3898 en
= val_to_str_ext_const (tvb_get_uint8 (tvb
, 10), &r3_eventnames_ext
, "[Unknown Event]");
3900 eventlog_tree
= proto_tree_add_subtree_format(tree
, tvb
, start_offset
, 10, ett_r3eventlogrecord
, NULL
,
3901 "Event Log Record %u (%s)", tvb_get_letohs (tvb
, 0), en
);
3903 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
3904 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
3905 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
3906 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
3907 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
3908 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
3909 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
3910 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_usernumber
, tvb
, 8, 2, ENC_LITTLE_ENDIAN
);
3911 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_event
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
3916 dissect_r3_upstreamcommand_dumpnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3918 DISSECTOR_ASSERT(start_offset
== 0);
3920 tvb_ensure_bytes_exist (tvb
, 0, 3);
3925 proto_tree_add_item (tree
, hf_r3_nvramdump_record
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
3926 proto_tree_add_item (tree
, hf_r3_nvramdump_length
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
3927 proto_tree_add_item (tree
, hf_r3_nvramdump_data
, tvb
, 3, tvb_get_uint8 (tvb
, 2), ENC_NA
);
3931 dissect_r3_upstreamcommand_rmtquthrequest (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3933 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3937 dissect_r3_upstreamcommand_retrieveuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
3939 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3943 dissect_r3_upstreamcommand_queryconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
3945 uint32_t offset
= 0;
3947 DISSECTOR_ASSERT(start_offset
== 0);
3952 while (offset
< tvb_reported_length (tvb
))
3955 proto_tree
*upstreamfield_tree
;
3957 uint8_t item_length
;
3959 ci
= val_to_str_ext_const (tvb_get_uint8 (tvb
, offset
+ 1), &r3_configitemnames_ext
, "[Unknown Configuration Item]");
3961 item_length
= tvb_get_uint8 (tvb
, offset
+ 0);
3962 upstreamfield_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
+ 0, item_length
, ett_r3upstreamfield
, NULL
,
3963 "Config Field: %s (%u)", ci
, tvb_get_uint8 (tvb
, offset
+ 1));
3965 pi
= proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemlength
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3966 if (item_length
== 0) {
3967 expert_add_info_format(pinfo
, pi
, &ei_r3_malformed_length
, "Invalid item length");
3971 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitem
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3972 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemtype
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3974 switch (tvb_get_uint8 (tvb
, offset
+ 2))
3976 case CONFIGTYPE_NONE
:
3977 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata
, tvb
, offset
+ 3, item_length
- 3, ENC_NA
);
3980 case CONFIGTYPE_BOOL
:
3981 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_bool
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3985 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_8
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3988 case CONFIGTYPE_16
:
3989 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_16
, tvb
, offset
+ 3, 2, ENC_LITTLE_ENDIAN
);
3992 case CONFIGTYPE_32
:
3993 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_32
, tvb
, offset
+ 3, 4, ENC_LITTLE_ENDIAN
);
3996 case CONFIGTYPE_STRING
:
3997 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_string
, tvb
, offset
+ 3, item_length
- 3, ENC_ASCII
);
4001 proto_tree_add_none_format (upstreamfield_tree
, hf_r3_upstreamfielderror
, tvb
, offset
+ 3, item_length
- 3, "Unknown Field Type");
4005 offset
+= item_length
;
4010 dissect_r3_upstreamcommand_rmteventlogrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4012 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4016 dissect_r3_upstreamcommand_dpac (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4020 DISSECTOR_ASSERT(start_offset
== 0);
4021 /* XXX: hf[] entries for the following hf indexes originally missing */
4022 proto_tree_add_item (tree
, hf_r3_dpacreply_stuff
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4023 proto_tree_add_item (tree
, hf_r3_dpacreply_length
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4024 proto_tree_add_item (tree
, hf_r3_dpacreply_reply
, tvb
, 4, -1, ENC_NA
);
4029 dissect_r3_upstreamcommand_notify (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4031 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4035 dissect_r3_upstreamcommand_mfg (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4037 proto_tree
*mfg_tree
= NULL
;
4040 proto_item
*mfg_item
;
4043 DISSECTOR_ASSERT(start_offset
== 0);
4045 mfg_tvb
= tvb_new_subset_remaining (tvb
, 2);
4046 mfg_fld
= tvb_get_uint8 (tvb
, 1);
4048 cn
= val_to_str_ext_const (mfg_fld
, &r3_mfgfieldnames_ext
, "[Unknown Mfg Field]");
4050 proto_tree_add_item (tree
, hf_r3_mfgfield_length
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4052 mfg_tree
= proto_tree_add_subtree_format(tree
, tvb
, 1, -1, ett_r3commandmfg
, &mfg_item
,
4053 "Upstream Manufacturing Field: %s (%u)", cn
, mfg_fld
);
4055 proto_tree_add_item (mfg_tree
, hf_r3_mfgfield
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4057 if (mfg_fld
>= MFGFIELD_LAST
)
4059 expert_add_info(pinfo
, mfg_item
, &ei_r3_mfgfield
);
4061 else if (r3upstreammfgfield_dissect
[mfg_fld
])
4062 (*r3upstreammfgfield_dissect
[mfg_fld
]) (mfg_tvb
, 0, length
, pinfo
, mfg_tree
);
4066 dissect_r3_upstreamcommand_eventlogwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4068 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4072 dissect_r3_upstreamcommand_dumpnvramrle (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4077 DISSECTOR_ASSERT(start_offset
== 0);
4079 proto_tree_add_item (tree
, hf_r3_nvramdumprle_record
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4080 proto_tree_add_item (tree
, hf_r3_nvramdumprle_length
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4081 proto_tree_add_item (tree
, hf_r3_nvramdumprle_data
, tvb
, 4, tvb_get_uint8 (tvb
, 3), ENC_NA
);
4085 dissect_r3_upstreamcommand_rmtdeclinedrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4087 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4091 dissect_r3_upstreamcommand_declinedwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4093 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4097 dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4099 proto_tree
*declinedlog_tree
;
4106 DISSECTOR_ASSERT(start_offset
== 0);
4108 declinedlog_tree
= proto_tree_add_subtree_format(tree
, tvb
, start_offset
, 49,
4109 ett_r3declinedlogrecord
, NULL
, "Declined Log Record %u", tvb_get_letohs (tvb
, 0));
4111 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4112 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4113 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4114 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4115 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4116 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4117 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4118 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_usernumber
, tvb
, 8, 2, ENC_LITTLE_ENDIAN
);
4120 cred1type
= tvb_get_uint8 (tvb
, 10) & 0x07;
4121 cred2type
= (tvb_get_uint8 (tvb
, 10) & 0x38) >> 3;
4123 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred1type
, tvb
, 10, 1, cred1type
);
4124 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred2type
, tvb
, 10, 1, cred2type
);
4125 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred1
, tvb
, 11, 19, ENC_NA
);
4126 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred2
, tvb
, 30, 19, ENC_NA
);
4130 dissect_r3_upstreamcommand_rmtalarmrecord (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4132 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4136 dissect_r3_upstreamcommand_alarmwarning (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4138 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4142 dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4144 proto_tree
*alarmlog_tree
;
4149 DISSECTOR_ASSERT(start_offset
== 0);
4151 alarmlog_tree
= proto_tree_add_subtree_format(tree
, tvb
, start_offset
, 9,
4152 ett_r3alarmlogrecord
, NULL
, "Alarm Log Record %u", tvb_get_letohs (tvb
, 0));
4154 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4155 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4156 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4157 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4158 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4159 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4160 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4161 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_id
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4162 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_usernumber
, tvb
, 9, 2, ENC_LITTLE_ENDIAN
);
4166 dissect_r3_upstreamcommand_connectscheduler (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4168 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4172 dissect_r3_upstreamcommand_connectcommuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4174 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4178 dissect_r3_upstreamcommand_commandalarm (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
4180 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4184 dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4186 proto_tree
*debuglog_tree
;
4191 DISSECTOR_ASSERT(start_offset
== 0);
4193 debuglog_tree
= proto_tree_add_subtree_format(tree
, tvb
, start_offset
, 8,
4194 ett_r3debuglogrecord
, NULL
, "Debug Log Record %u", tvb_get_letohs (tvb
, 0));
4196 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4197 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_flags
, tvb
, 2, 4, ENC_LITTLE_ENDIAN
);
4198 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_tick
, tvb
, 6, 2, ENC_LITTLE_ENDIAN
);
4202 * ***************************************************************************
4205 dissect_r3_upstreammfgfield_iopins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4209 DISSECTOR_ASSERT(start_offset
== 0);
4211 len
= MAX(0, tvb_reported_length_remaining(tvb
, start_offset
));
4214 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "IOPINS data length not modulo 3 == 0");
4218 char portname
= 'A';
4224 for (i
= 0; i
< len
; i
+= 3, portname
++)
4226 proto_tree
*port_tree
= proto_tree_add_subtree_format(tree
, tvb
, i
, 3, ett_r3iopins
, NULL
,
4227 "Port %c Configuration", (portname
== 'I') ? ++portname
: portname
);
4229 proto_tree_add_item (port_tree
, hf_r3_iopins_lat
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4230 proto_tree_add_item (port_tree
, hf_r3_iopins_port
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4231 proto_tree_add_item (port_tree
, hf_r3_iopins_tris
, tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4237 dissect_r3_upstreammfgfield_adcs (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4245 DISSECTOR_ASSERT(start_offset
== 0);
4247 len
= tvb_reported_length(tvb
);
4249 for (i
= 0; i
< MIN(len
,8); i
++)
4251 proto_item
*item
= proto_tree_add_item (tree
, hf_r3_adc
[i
], tvb
, i
, 1, ENC_LITTLE_ENDIAN
);
4252 proto_item_append_text (item
, " (%.2f Volts)", (float) tvb_get_uint8 (tvb
, i
) * 0.04154);
4257 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_mfgfield_too_many_adc_values
);
4263 dissect_r3_upstreammfgfield_hardwareid (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4268 DISSECTOR_ASSERT(start_offset
== 0);
4270 proto_tree_add_item (tree
, hf_r3_hardwareid_board
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4271 proto_tree_add_item (tree
, hf_r3_hardwareid_cpuid
, tvb
, 1, 2, ENC_LITTLE_ENDIAN
);
4272 proto_tree_add_item (tree
, hf_r3_hardwareid_cpurev
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4276 dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4278 proto_tree
*cpl_tree
;
4286 DISSECTOR_ASSERT(start_offset
== 0);
4288 len
= tvb_reported_length_remaining (tvb
, 1);
4290 proto_tree_add_item (tree
, hf_r3_checkpointlog_entryptr
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4291 cpl_tree
= proto_tree_add_subtree(tree
, tvb
, 1, -1, ett_r3checkpointlog
, NULL
, "Checkpoint Log");
4294 for (i
= 0; i
< len
; i
+= 2, counter
++)
4296 unsigned rcon
= tvb_get_uint8 (tvb
, i
+ 0);
4297 unsigned cp
= tvb_get_uint8 (tvb
, i
+ 1);
4298 proto_item
*cpe_item
;
4299 proto_tree
*cpe_tree
;
4302 static const char *resets
[] = { "Stack underflow", "Stack overflow", "Power-On",
4303 "Software", "Brown-out", "MCLR in sleep", "WDT",
4304 "Normal", "[Unknown Reset Type]" };
4307 cpe_tree
= proto_tree_add_subtree_format(cpl_tree
, tvb
, i
+ 0, 2, ett_r3checkpointlogentry
, &cpe_item
,
4308 "Checkpoint Log Entry %u", counter
);
4309 desc
= val_to_str_ext_const (cp
, &r3_checkpointnames_ext
, "[Unknown Checkpoint]");
4319 else if ((rcon
& 0x10) == 0x00)
4321 else if ((rcon
& 0x1d) == 0x1c)
4323 else if ((rcon
& 0x0c) == 0x08)
4325 else if ((rcon
& 0x0c) == 0x04)
4331 proto_item_append_text (cpe_item
, " (%s, %s)", resets
[resettype
], desc
);
4332 proto_item_append_text (
4333 proto_tree_add_item (cpe_tree
, hf_r3_checkpointlog_rcon
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
),
4334 " (%s)", resets
[resettype
]);
4335 proto_item_append_text (
4336 proto_tree_add_item (cpe_tree
, hf_r3_checkpointlog_checkpoint
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
),
4342 dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4344 proto_tree
*tmp_tree
[19];
4345 proto_tree
*cr_tree
;
4350 DISSECTOR_ASSERT(start_offset
== 0);
4352 cr_tree
= proto_tree_add_subtree(tree
, tvb
, start_offset
, -1, ett_r3cpuregisters
, NULL
, "CPU Registers");
4354 tmp_tree
[ 0] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_intcon
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4355 tmp_tree
[ 1] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_intcon2
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4356 tmp_tree
[ 2] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_intcon3
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4357 tmp_tree
[ 3] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pir1
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4358 tmp_tree
[ 4] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pir2
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4359 tmp_tree
[ 5] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pir3
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4360 tmp_tree
[ 6] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pie1
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4361 tmp_tree
[ 7] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pie2
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4362 tmp_tree
[ 8] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_pie3
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4363 tmp_tree
[ 9] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_ipr1
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4364 tmp_tree
[10] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_ipr2
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4365 tmp_tree
[11] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_ipr3
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4366 tmp_tree
[12] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_rcon
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4367 tmp_tree
[13] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_osccon
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4368 tmp_tree
[14] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_rcsta
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4369 tmp_tree
[15] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_txsta
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4370 tmp_tree
[16] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_rcsta2
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4371 tmp_tree
[17] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_txsta2
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4372 tmp_tree
[18] = proto_item_add_subtree (proto_tree_add_item(cr_tree
, hf_r3_cpuregisters_wdtcon
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
), ett_r3cpuregister
);
4374 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_rbif
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4375 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_int0if
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4376 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_tmr0if
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4377 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_rbie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4378 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_int0ie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4379 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_tmr0ie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4380 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_giel
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4381 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_gieh
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4382 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_rbip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4383 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_int3ip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4384 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_tmr0ip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4385 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg3
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4386 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg2
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4387 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg1
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4388 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg0
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4389 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_rbpu
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4390 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4391 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4392 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int3if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4393 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4394 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4395 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int3ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4396 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1ip
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4397 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2ip
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4398 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tmr1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4399 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tmr2if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4400 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_ccp1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4401 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_ssp1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4402 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tx1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4403 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_rc1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4404 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_adif
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4405 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_pspif
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4406 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_ccp2if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4407 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_tmr3if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4408 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_hlvdif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4409 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_bcl1if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4410 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_eeif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4411 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_unused5
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4412 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_cmif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4413 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_oscfif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4414 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp3if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4415 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp4if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4416 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp5if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4417 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_tmr4if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4418 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_tx2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4419 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_rc2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4420 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_bcl2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4421 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ssp2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4422 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tmr1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4423 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tmr2ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4424 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_ccp1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4425 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_ssp1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4426 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tx1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4427 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_rc1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4428 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_adie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4429 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_pspie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4430 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_oscfie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4431 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_cmie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4432 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_unused2
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4433 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_eeie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4434 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_bcl1ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4435 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_hlvdie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4436 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_tmr3ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4437 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_ccp2ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4438 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp3ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4439 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp4ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4440 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp5ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4441 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_tmr4ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4442 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_tx2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4443 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_rc2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4444 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_bcl2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4445 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ssp2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4446 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tmr1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4447 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tmr2ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4448 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_ccp1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4449 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_ssp1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4450 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tx1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4451 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_rc1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4452 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_adip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4453 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_pspip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4454 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_ccp2ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4455 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_tmr3ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4456 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_hlvdip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4457 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_bcl1ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4458 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_eeip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4459 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_unused5
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4460 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_cmip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4461 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_oscfip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4462 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4463 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp4ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4464 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp5ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4465 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_tmr4ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4466 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_tx2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4467 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_rc2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4468 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_bcl2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4469 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ssp2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4470 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_bor
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4471 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_por
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4472 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_pd
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4473 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_to
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4474 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_unused4
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4475 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_ri
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4476 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_sboren
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4477 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_ipen
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4478 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_scs0
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4479 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_scs1
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4480 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_iofs
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4481 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_osts
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4482 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf0
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4483 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf1
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4484 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf2
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4485 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_idlen
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4486 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_rx9d
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4487 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_oerr
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4488 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_ferr
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4489 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_adden
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4490 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_cren
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4491 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_sren
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4492 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_rx9
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4493 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_spen
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4494 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_tx9d
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4495 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_trmt
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4496 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_brgh
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4497 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_sendb
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4498 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_sync
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4499 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_txen
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4500 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_tx9
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4501 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_csrc
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4502 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_rx9d
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4503 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_oerr
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4504 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_ferr
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4505 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_adden
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4506 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_cren
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4507 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_sren
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4508 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_rx9
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4509 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_spen
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4510 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_tx9d
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4511 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_trmt
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4512 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_brgh
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4513 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_sendb
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4514 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_sync
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4515 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_txen
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4516 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_tx9
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4517 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_csrc
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4518 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_swdten
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4519 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused1
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4520 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused2
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4521 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused3
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4522 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused4
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4523 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused5
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4524 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused6
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4525 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused7
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4529 dissect_r3_upstreammfgfield_taskflags (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4533 proto_tree
*tfg_tree
;
4535 DISSECTOR_ASSERT(start_offset
== 0);
4537 len
= MAX(0, tvb_reported_length_remaining (tvb
, 0));
4538 tfg_tree
= proto_tree_add_subtree_format(tree
, tvb
, 0, -1, ett_r3taskflags
, NULL
,
4539 "Task Flags (%u tasks)", len
/ 5);
4541 for (i
= 0; i
< len
; i
+= 5)
4543 proto_tree
*tf_tree
= proto_tree_add_subtree_format(tfg_tree
, tvb
, i
, 5,
4544 ett_r3taskflagsentry
, NULL
,
4545 "Task Flags (%2d: 0x%06x)",
4546 tvb_get_uint8 (tvb
, i
+ 0),
4547 tvb_get_letohl (tvb
, i
+ 1));
4549 proto_tree_add_item (tf_tree
, hf_r3_taskflags_taskid
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4550 proto_tree_add_item (tf_tree
, hf_r3_taskflags_flags
, tvb
, i
+ 1, 4, ENC_LITTLE_ENDIAN
);
4555 dissect_r3_upstreammfgfield_timerchain (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4563 DISSECTOR_ASSERT(start_offset
== 0);
4565 len
= tvb_reported_length_remaining (tvb
, 3);
4567 proto_tree_add_item (tree
, hf_r3_timerchain_newtick
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4568 proto_tree_add_item (tree
, hf_r3_timerchain_currentboundary
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4570 for (i
= 0; i
< len
; i
+= 12)
4572 proto_tree
*tc_tree
= proto_tree_add_subtree(tree
, tvb
, 3 + i
, 12, ett_r3timerchain
, NULL
, "Timer Chain Entry");
4574 proto_tree_add_item (tc_tree
, hf_r3_timerchain_tasktag
, tvb
, 3 + i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4575 proto_tree_add_item (tc_tree
, hf_r3_timerchain_address
, tvb
, 3 + i
+ 1, 2, ENC_LITTLE_ENDIAN
);
4576 proto_tree_add_item (tc_tree
, hf_r3_timerchain_reload
, tvb
, 3 + i
+ 3, 2, ENC_LITTLE_ENDIAN
);
4577 proto_tree_add_item (tc_tree
, hf_r3_timerchain_boundary
, tvb
, 3 + i
+ 5, 1, ENC_LITTLE_ENDIAN
);
4578 proto_tree_add_item (tc_tree
, hf_r3_timerchain_count
, tvb
, 3 + i
+ 6, 2, ENC_LITTLE_ENDIAN
);
4579 proto_tree_add_item (tc_tree
, hf_r3_timerchain_flags
, tvb
, 3 + i
+ 8, 4, ENC_LITTLE_ENDIAN
);
4584 dissect_r3_upstreammfgfield_peekpoke (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4589 DISSECTOR_ASSERT(start_offset
== 0);
4591 len
= tvb_reported_length_remaining (tvb
, 0);
4593 for (i
= 0; i
< len
; i
+= 3)
4595 proto_item
*peekpoke_item
;
4596 proto_item
*peekpoke_op_item
;
4597 proto_tree
*peekpoke_tree
;
4599 peekpoke_tree
= proto_tree_add_subtree(tree
, tvb
, i
, 3, ett_r3peekpoke
, &peekpoke_item
, "");
4601 peekpoke_op_item
= proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_operation
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4602 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_address
, tvb
, i
+ 1, 2, ENC_LITTLE_ENDIAN
);
4604 switch (tvb_get_uint8 (tvb
, i
+ 0))
4606 case PEEKPOKE_READU8
:
4609 proto_item_append_text (peekpoke_item
, "Read (8 Bits @ 0x%04x = 0x%02x)",
4610 tvb_get_letohs (tvb
, i
+ 1),
4611 tvb_get_uint8 (tvb
, i
+ 3));
4612 proto_item_set_len (peekpoke_item
, 4);
4613 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke8
, tvb
, i
+ 3, 1, ENC_LITTLE_ENDIAN
);
4618 case PEEKPOKE_READU16
:
4621 proto_item_append_text (peekpoke_item
, "Read (16 Bits @ 0x%04x = 0x%04x)",
4622 tvb_get_letohs (tvb
, i
+ 1),
4623 tvb_get_letohs (tvb
, i
+ 3));
4624 proto_item_set_len (peekpoke_item
, 5);
4625 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke16
, tvb
, i
+ 3, 2, ENC_LITTLE_ENDIAN
);
4630 case PEEKPOKE_READU24
:
4633 proto_item_append_text (peekpoke_item
, "Read (24 Bits @ 0x%04x = 0x%06x)",
4634 tvb_get_letohs (tvb
, i
+ 1),
4635 tvb_get_letoh24 (tvb
, i
+ 3));
4636 proto_item_set_len (peekpoke_item
, 6);
4637 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke24
, tvb
, i
+ 3, 3, ENC_LITTLE_ENDIAN
);
4642 case PEEKPOKE_READU32
:
4645 proto_item_append_text (peekpoke_item
, "Read (32 Bits @ 0x%04x = 0x%08x)",
4646 tvb_get_letohs (tvb
, i
+ 1),
4647 tvb_get_letohl (tvb
, i
+ 3));
4648 proto_item_set_len (peekpoke_item
, 7);
4649 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke32
, tvb
, i
+ 3, 4, ENC_LITTLE_ENDIAN
);
4654 case PEEKPOKE_READSTRING
:
4657 proto_item_append_text (peekpoke_item
, "Read (%u Bytes @ 0x%04x)",
4658 tvb_get_uint8 (tvb
, i
+ 3),
4659 tvb_get_letohs (tvb
, i
+ 1));
4660 proto_item_set_len (peekpoke_item
, 3 + 1 + tvb_get_uint8 (tvb
, i
+ 3));
4661 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, i
+ 3, 1, ENC_LITTLE_ENDIAN
);
4662 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_pokestring
, tvb
, i
+ 4, tvb_get_uint8 (tvb
, i
+ 3), ENC_NA
);
4664 i
+= tvb_get_uint8 (tvb
, i
+ 3) + 1;
4668 expert_add_info(pinfo
, peekpoke_op_item
, &ei_r3_peekpoke_operation
);
4675 dissect_r3_upstreammfgfield_lockstate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4677 static int * const r3_lockstate_flags
[] = {
4678 &hf_r3_lockstate_passage
,
4679 &hf_r3_lockstate_panic
,
4680 &hf_r3_lockstate_lockout
,
4681 &hf_r3_lockstate_relock
,
4682 &hf_r3_lockstate_autoopen
,
4683 &hf_r3_lockstate_nextauto
,
4684 &hf_r3_lockstate_lockstate
,
4685 &hf_r3_lockstate_wantstate
,
4686 &hf_r3_lockstate_remote
,
4687 &hf_r3_lockstate_update
,
4688 &hf_r3_lockstate_exceptionspresent
,
4689 &hf_r3_lockstate_exceptionsactive
,
4690 &hf_r3_lockstate_timezonespresent
,
4691 &hf_r3_lockstate_timezonesactive
,
4692 &hf_r3_lockstate_autounlockspresent
,
4693 &hf_r3_lockstate_autounlocksactive
,
4694 &hf_r3_lockstate_uapmspresent
,
4695 &hf_r3_lockstate_uapmsactive
,
4696 &hf_r3_lockstate_uapmrelockspresent
,
4697 &hf_r3_lockstate_uapmreslocksactive
,
4698 &hf_r3_lockstate_nvramprotect
,
4699 &hf_r3_lockstate_nvramchecksum
,
4703 DISSECTOR_ASSERT(start_offset
== 0);
4705 proto_tree_add_bitmask(tree
, tvb
, start_offset
, hf_r3_lockstate
, ett_r3lockstate
, r3_lockstate_flags
, ENC_LITTLE_ENDIAN
);
4709 dissect_r3_upstreammfgfield_capabilities (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4711 proto_tree
*cf_tree
;
4718 DISSECTOR_ASSERT(start_offset
== 0);
4720 len
= MAX(0, tvb_reported_length_remaining (tvb
, 0));
4728 octets
= tvb_get_uint8 (tvb
, i
);
4731 proto_tree_add_expert_format(tree
, pinfo
, &ei_r3_malformed_length
, tvb
, 0, len
, "Capabilities could not be decoded because length of 0 encountered");
4740 cf_tree
= proto_tree_add_subtree_format(tree
, tvb
, 0, len
, ett_r3capabilities
, NULL
, "Capabilities (%u items)", items
);
4743 while (i
<len
&& (step
=tvb_get_uint8(tvb
, i
))>0)
4745 proto_item
*tmp_item
= proto_tree_add_item (cf_tree
, hf_r3_capabilities
, tvb
, i
, tvb_get_uint8 (tvb
, i
), ENC_NA
);
4746 proto_tree
*tmp_tree
= proto_item_add_subtree (tmp_item
, ett_r3capabilities
);
4749 fn
= val_to_str_ext_const (tvb_get_uint8 (tvb
, i
+ 1), &r3_capabilitiesnames_ext
, "[Unknown Field Name]");
4751 proto_item_append_text (tmp_item
, " (%s, %u)", fn
, tvb_get_letohs (tvb
, i
+ 2));
4752 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_length
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4753 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_type
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4754 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_value
, tvb
, i
+ 2, 2, ENC_LITTLE_ENDIAN
);
4761 dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4763 DISSECTOR_ASSERT(start_offset
== 0);
4765 if (tvb_reported_length_remaining (tvb
, 0) != 20)
4767 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Length of M41T81 RTC register dump not 20 octets");
4771 proto_tree
*rtc_tree
;
4772 proto_tree
*tmp_tree
[20];
4773 unsigned offset_in_bits
;
4778 rtc_tree
= proto_tree_add_subtree(tree
, tvb
, 0, -1, ett_r3m41t81registers
, NULL
, "M41T81 RTC Registers");
4780 tmp_tree
[ 0] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg00
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4781 tmp_tree
[ 1] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg01
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4782 tmp_tree
[ 2] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg02
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4783 tmp_tree
[ 3] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg03
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4784 tmp_tree
[ 4] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg04
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4785 tmp_tree
[ 5] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg05
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4786 tmp_tree
[ 6] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg06
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4787 tmp_tree
[ 7] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg07
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4788 tmp_tree
[ 8] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg08
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4789 tmp_tree
[ 9] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg09
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4790 tmp_tree
[10] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0a
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4791 tmp_tree
[11] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0b
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4792 tmp_tree
[12] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0c
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4793 tmp_tree
[13] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0d
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4794 tmp_tree
[14] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0e
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4795 tmp_tree
[15] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg0f
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4796 tmp_tree
[16] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg10
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4797 tmp_tree
[17] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg11
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4798 tmp_tree
[18] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg12
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4799 tmp_tree
[19] = proto_item_add_subtree (proto_tree_add_item (rtc_tree
, hf_r3_dumpm41t81_reg13
, tvb
, 19, 1, ENC_LITTLE_ENDIAN
), ett_r3m41t81register
);
4801 offset_in_bits
= 0 * 8;
4803 proto_tree_add_bits_item (tmp_tree
[ 0], hf_r3_dumpm41t81_reg00_sec1
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4804 proto_tree_add_bits_item (tmp_tree
[ 0], hf_r3_dumpm41t81_reg00_sec01
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4805 proto_tree_add_bits_item (tmp_tree
[ 1], hf_r3_dumpm41t81_reg01_st
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4806 proto_tree_add_bits_item (tmp_tree
[ 1], hf_r3_dumpm41t81_reg01_10sec
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4807 proto_tree_add_bits_item (tmp_tree
[ 1], hf_r3_dumpm41t81_reg01_1sec
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4808 proto_tree_add_bits_item (tmp_tree
[ 2], hf_r3_dumpm41t81_reg02_notused
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4809 proto_tree_add_bits_item (tmp_tree
[ 2], hf_r3_dumpm41t81_reg02_10min
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4810 proto_tree_add_bits_item (tmp_tree
[ 2], hf_r3_dumpm41t81_reg02_1min
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4811 proto_tree_add_bits_item (tmp_tree
[ 3], hf_r3_dumpm41t81_reg03_cbe
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4812 proto_tree_add_bits_item (tmp_tree
[ 3], hf_r3_dumpm41t81_reg03_cb
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4813 proto_tree_add_bits_item (tmp_tree
[ 3], hf_r3_dumpm41t81_reg03_10hour
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4814 proto_tree_add_bits_item (tmp_tree
[ 3], hf_r3_dumpm41t81_reg03_1hour
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4815 proto_tree_add_bits_item (tmp_tree
[ 4], hf_r3_dumpm41t81_reg04_notused
, tvb
, offset_in_bits
, 5, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 5;
4816 proto_tree_add_bits_item (tmp_tree
[ 4], hf_r3_dumpm41t81_reg04_dow
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4817 proto_tree_add_bits_item (tmp_tree
[ 5], hf_r3_dumpm41t81_reg05_notused
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4818 proto_tree_add_bits_item (tmp_tree
[ 5], hf_r3_dumpm41t81_reg05_10day
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4819 proto_tree_add_bits_item (tmp_tree
[ 5], hf_r3_dumpm41t81_reg05_1day
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4820 proto_tree_add_bits_item (tmp_tree
[ 6], hf_r3_dumpm41t81_reg06_notused
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4821 proto_tree_add_bits_item (tmp_tree
[ 6], hf_r3_dumpm41t81_reg06_10month
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4822 proto_tree_add_bits_item (tmp_tree
[ 6], hf_r3_dumpm41t81_reg06_1month
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4823 proto_tree_add_bits_item (tmp_tree
[ 7], hf_r3_dumpm41t81_reg07_10year
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4824 proto_tree_add_bits_item (tmp_tree
[ 7], hf_r3_dumpm41t81_reg07_1year
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4825 proto_tree_add_bits_item (tmp_tree
[ 8], hf_r3_dumpm41t81_reg08_out
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4826 proto_tree_add_bits_item (tmp_tree
[ 8], hf_r3_dumpm41t81_reg08_ft
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4827 proto_tree_add_bits_item (tmp_tree
[ 8], hf_r3_dumpm41t81_reg08_s
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4828 proto_tree_add_bits_item (tmp_tree
[ 8], hf_r3_dumpm41t81_reg08_cal
, tvb
, offset_in_bits
, 5, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 5;
4829 proto_tree_add_bits_item (tmp_tree
[ 9], hf_r3_dumpm41t81_reg09_notused
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4830 proto_tree_add_bits_item (tmp_tree
[ 9], hf_r3_dumpm41t81_reg09_bmb
, tvb
, offset_in_bits
, 5, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 5;
4831 proto_tree_add_bits_item (tmp_tree
[ 9], hf_r3_dumpm41t81_reg09_rb
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4832 proto_tree_add_bits_item (tmp_tree
[10], hf_r3_dumpm41t81_reg0a_afe
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4833 proto_tree_add_bits_item (tmp_tree
[10], hf_r3_dumpm41t81_reg0a_sqwe
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4834 proto_tree_add_bits_item (tmp_tree
[10], hf_r3_dumpm41t81_reg0a_abe
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4835 proto_tree_add_bits_item (tmp_tree
[10], hf_r3_dumpm41t81_reg0a_10monthalm
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4836 proto_tree_add_bits_item (tmp_tree
[10], hf_r3_dumpm41t81_reg0a_1monthalm
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4837 proto_tree_add_bits_item (tmp_tree
[11], hf_r3_dumpm41t81_reg0b_rpt5
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4838 proto_tree_add_bits_item (tmp_tree
[11], hf_r3_dumpm41t81_reg0b_rpt4
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4839 proto_tree_add_bits_item (tmp_tree
[11], hf_r3_dumpm41t81_reg0b_10dayalm
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4840 proto_tree_add_bits_item (tmp_tree
[11], hf_r3_dumpm41t81_reg0b_1dayalm
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4841 proto_tree_add_bits_item (tmp_tree
[12], hf_r3_dumpm41t81_reg0c_rpt3
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4842 proto_tree_add_bits_item (tmp_tree
[12], hf_r3_dumpm41t81_reg0c_ht
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4843 proto_tree_add_bits_item (tmp_tree
[12], hf_r3_dumpm41t81_reg0c_10houralm
, tvb
, offset_in_bits
, 2, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 2;
4844 proto_tree_add_bits_item (tmp_tree
[12], hf_r3_dumpm41t81_reg0c_1houralm
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4845 proto_tree_add_bits_item (tmp_tree
[13], hf_r3_dumpm41t81_reg0d_rpt2
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4846 proto_tree_add_bits_item (tmp_tree
[13], hf_r3_dumpm41t81_reg0d_10minalm
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4847 proto_tree_add_bits_item (tmp_tree
[13], hf_r3_dumpm41t81_reg0d_1minalm
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4848 proto_tree_add_bits_item (tmp_tree
[14], hf_r3_dumpm41t81_reg0e_rpt1
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4849 proto_tree_add_bits_item (tmp_tree
[14], hf_r3_dumpm41t81_reg0e_10secalm
, tvb
, offset_in_bits
, 3, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 3;
4850 proto_tree_add_bits_item (tmp_tree
[14], hf_r3_dumpm41t81_reg0e_1secalm
, tvb
, offset_in_bits
, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4851 proto_tree_add_bits_item (tmp_tree
[15], hf_r3_dumpm41t81_reg0f_wdf
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4852 proto_tree_add_bits_item (tmp_tree
[15], hf_r3_dumpm41t81_reg0f_af
, tvb
, offset_in_bits
, 1, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 1;
4853 proto_tree_add_bits_item (tmp_tree
[15], hf_r3_dumpm41t81_reg0f_notused
, tvb
, offset_in_bits
, 6, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 6;
4854 proto_tree_add_bits_item (tmp_tree
[16], hf_r3_dumpm41t81_reg10_notused
, tvb
, offset_in_bits
, 8, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 8;
4855 proto_tree_add_bits_item (tmp_tree
[17], hf_r3_dumpm41t81_reg11_notused
, tvb
, offset_in_bits
, 8, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 8;
4856 proto_tree_add_bits_item (tmp_tree
[18], hf_r3_dumpm41t81_reg12_notused
, tvb
, offset_in_bits
, 8, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 8;
4857 proto_tree_add_bits_item (tmp_tree
[19], hf_r3_dumpm41t81_reg13_rs
, tvb
, offset_in_bits
- 8, 4, ENC_LITTLE_ENDIAN
); offset_in_bits
+= 4;
4858 proto_tree_add_bits_item (tmp_tree
[19], hf_r3_dumpm41t81_reg13_notused
, tvb
, offset_in_bits
- 8, 4, ENC_LITTLE_ENDIAN
);
4863 dissect_r3_upstreammfgfield_nvramchecksumvalue (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4867 DISSECTOR_ASSERT(start_offset
== 0);
4869 proto_tree_add_item (tree
, hf_r3_nvramchecksumvalue
, tvb
, 0, 4, ENC_LITTLE_ENDIAN
);
4870 proto_tree_add_item (tree
, hf_r3_nvramchecksumvalue_fixup
, tvb
, 4, 4, ENC_LITTLE_ENDIAN
);
4875 dissect_r3_upstreammfgfield_checksumresults (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4879 DISSECTOR_ASSERT(start_offset
== 0);
4881 len
= MAX(0, tvb_reported_length_remaining(tvb
, 0));
4884 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Checksum results data length not modulo 3 == 0");
4888 proto_tree
*cksum_tree
;
4889 uint32_t error
= false;
4897 while (i
<len
&& (step
=tvb_get_uint8(tvb
, i
))>0)
4899 error
|= tvb_get_uint8 (tvb
, i
+ 2);
4903 cksum_tree
= proto_tree_add_subtree_format(tree
, tvb
, 0, len
, ett_r3checksumresults
, NULL
,
4904 "Checksum Results (%s)", error
? "Error" : "No Errors");
4907 while (i
<len
&& (step
=tvb_get_uint8(tvb
, i
))>0)
4909 proto_item
*res_item
= proto_tree_add_item (cksum_tree
, hf_r3_checksumresults
,
4912 tvb_get_uint8 (tvb
, i
),
4914 proto_tree
*res_tree
= proto_item_add_subtree (res_item
, ett_r3checksumresultsfield
);
4917 fn
= val_to_str_ext_const (tvb_get_uint8 (tvb
, i
+ 1), &r3_checksumresultnames_ext
, "[Unknown Field Name]");
4919 proto_item_append_text (res_item
, " %s (%s)", fn
, tvb_get_uint8 (tvb
, i
+ 2) ? "Error" : "No Error");
4921 proto_tree_add_item (res_tree
, hf_r3_checksumresults_length
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4922 proto_tree_add_item (res_tree
, hf_r3_checksumresults_field
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4923 proto_tree_add_item (res_tree
, hf_r3_checksumresults_state
, tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4931 dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4939 DISSECTOR_ASSERT(start_offset
== 0);
4941 len
= tvb_reported_length_remaining (tvb
, 3);
4943 proto_tree_add_item (tree
, hf_r3_mortisestatelog_pointer
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4944 proto_tree_add_item (tree
, hf_r3_mortisestatelog_mortisetype
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4945 proto_tree_add_item (tree
, hf_r3_mortisestatelog_waiting
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4947 for (i
= 0; i
< len
; i
+= 3)
4949 unsigned state
= tvb_get_uint8 (tvb
, 3 + i
+ 0);
4950 unsigned last
= tvb_get_uint8 (tvb
, 3 + i
+ 1);
4951 unsigned event
= tvb_get_uint8 (tvb
, 3 + i
+ 2);
4952 proto_tree
*ms_tree
= proto_tree_add_subtree_format(tree
, tvb
, 3 + i
, 3, ett_r3mortisestatelog
, NULL
,
4953 "State Log Entry %2d (State=0x%02x, Last=0x%02x, Event=%s (0x%02x))",
4957 val_to_str_ext_const (event
, &r3_mortiseeventnames_ext
, "[Unknown]"),
4960 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_state
, tvb
, 3 + i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4961 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_last
, tvb
, 3 + i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4962 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_event
, tvb
, 3 + i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4967 dissect_r3_upstreammfgfield_mortisepins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4969 proto_tree
*iopins_tree
;
4974 DISSECTOR_ASSERT(start_offset
== 0);
4976 iopins_tree
= proto_tree_add_subtree_format(tree
, tvb
, 0, 1, ett_r3iopins
, NULL
,
4977 "Mortise Pin States (0x%02x)", tvb_get_uint8 (tvb
, 0));
4979 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s1
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4980 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s2
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4981 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s3
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4982 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s4
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4986 dissect_r3_upstreammfgfield_keypadchar (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4991 DISSECTOR_ASSERT(start_offset
== 0);
4993 proto_tree_add_item (tree
, hf_r3_testkeypad
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4997 dissect_r3_upstreammfgfield_magcard (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4999 DISSECTOR_ASSERT(start_offset
== 0);
5001 proto_tree_add_item (tree
, hf_r3_testmagcard
, tvb
, 0, -1, ENC_ASCII
);
5005 dissect_r3_upstreammfgfield_proxcard (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5007 DISSECTOR_ASSERT(start_offset
== 0);
5009 proto_tree_add_item (tree
, hf_r3_testproxcard
, tvb
, 0, -1, ENC_ASCII
);
5013 * ***************************************************************************
5015 * This is passed a tvb that contains [length] [CMD_RESPONSE] [responseType_e] [cmdCommand_e]
5018 dissect_r3_response_singlebyte (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5022 proto_tree_add_item (tree
, hf_r3_responsetype
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5023 proto_tree_add_item (tree
, hf_r3_responsetocommand
, tvb
, start_offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
5028 * This is passed a tvb that contains [length] [CMD_RESPONSE] [RESPONSETYPE_HASDATA] [UPSTREAMCOMMAND_*]
5031 dissect_r3_response_hasdata (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5033 uint32_t commandPacketLen
;
5034 uint8_t upstreamCmd
;
5036 DISSECTOR_ASSERT(start_offset
== 0);
5038 tvb_ensure_bytes_exist (tvb
, 0, 4);
5040 commandPacketLen
= tvb_get_uint8 (tvb
, 0);
5041 upstreamCmd
= tvb_get_uint8 (tvb
, 3);
5043 if (tvb_get_uint8 (tvb
, 1) != CMD_RESPONSE
)
5044 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_1
);
5045 else if (tvb_get_uint8 (tvb
, 2) != RESPONSETYPE_HASDATA
)
5046 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_2
);
5047 else if (upstreamCmd
>= UPSTREAMCOMMAND_LAST
)
5048 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_3
);
5051 proto_tree
*upstreamcommand_tree
= NULL
;
5052 tvbuff_t
*upstreamcommand_tvb
;
5057 ct
= val_to_str_ext_const (upstreamCmd
, &r3_upstreamcommandnames_ext
, "[Unknown Command Type]");
5059 proto_tree_add_item (tree
, hf_r3_responsetype
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5061 upstreamcommand_tree
= proto_tree_add_subtree_format(tree
, tvb
, 3, -1, ett_r3upstreamcommand
, NULL
,
5062 "Upstream Command: %s (%u)", ct
, upstreamCmd
);
5064 proto_tree_add_item (upstreamcommand_tree
, hf_r3_upstreamcommand
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5066 tvb_ensure_bytes_exist (tvb
, 0, commandPacketLen
- 4);
5068 upstreamcommand_tvb
= tvb_new_subset_length (tvb
, 4, commandPacketLen
- 4);
5069 if (r3upstreamcommand_dissect
[upstreamCmd
])
5070 (*r3upstreamcommand_dissect
[upstreamCmd
]) (upstreamcommand_tvb
, 0, commandPacketLen
- 4, pinfo
, upstreamcommand_tree
);
5075 * ***************************************************************************
5077 * These are passed a tvb that starts with [length] [CMD_RESPONSE] ...
5080 dissect_r3_cmd_response (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
5082 uint8_t responseLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5083 responseType_e responseType
= (responseType_e
)tvb_get_uint8 (tvb
, start_offset
+ 2);
5084 tvbuff_t
*payload_tvb
= tvb_new_subset_length (tvb
, start_offset
, responseLen
);
5090 rt
= val_to_str_ext_const (responseType
, &r3_responsetypenames_ext
, "[Unknown Response Type]");
5092 proto_item_set_text (proto_tree_get_parent (tree
), "Response Packet: %s (%u)", rt
, responseType
);
5093 proto_tree_add_item (tree
, hf_r3_responselength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5094 proto_tree_add_item (tree
, hf_r3_responsecommand
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5097 if (responseType
>= RESPONSETYPE_LAST
)
5099 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_3
);
5101 else if (r3response_dissect
[responseType
])
5102 (*r3response_dissect
[responseType
]) (payload_tvb
, 0, length
, pinfo
, tree
);
5106 * These are passed a tvb that contains [length] [cmdCommand_e] [[data]]
5109 dissect_r3_cmd_handshake (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5113 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5114 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5119 dissect_r3_cmd_killsession (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5123 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5124 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5129 dissect_r3_cmd_queryserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5133 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5134 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5139 dissect_r3_cmd_queryversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5143 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5144 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5149 dissect_r3_cmd_setdatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5151 proto_tree
*dt_tree
;
5153 tvbuff_t
*payload_tvb
;
5158 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5159 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5161 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5162 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5164 dt_tree
= proto_tree_add_subtree_format (tree
, payload_tvb
, 0, -1, ett_r3setdatetime
, NULL
,
5165 "Set Date/Time (%02u/%02u/%02u-%u %02u:%02u:%02u)",
5166 tvb_get_uint8 (payload_tvb
, 0),
5167 tvb_get_uint8 (payload_tvb
, 1),
5168 tvb_get_uint8 (payload_tvb
, 2),
5169 tvb_get_uint8 (payload_tvb
, 3),
5170 tvb_get_uint8 (payload_tvb
, 4),
5171 tvb_get_uint8 (payload_tvb
, 5),
5172 tvb_get_uint8 (payload_tvb
, 6));
5174 proto_tree_add_item (dt_tree
, hf_r3_setdate_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5175 proto_tree_add_item (dt_tree
, hf_r3_setdate_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5176 proto_tree_add_item (dt_tree
, hf_r3_setdate_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5177 proto_tree_add_item (dt_tree
, hf_r3_setdate_dow
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5178 proto_tree_add_item (dt_tree
, hf_r3_setdate_hours
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5179 proto_tree_add_item (dt_tree
, hf_r3_setdate_minutes
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5180 proto_tree_add_item (dt_tree
, hf_r3_setdate_seconds
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5184 dissect_r3_cmd_querydatetime (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5188 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5189 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5194 dissect_r3_cmd_setconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5197 tvbuff_t
*payload_tvb
;
5198 uint32_t offset
= 0;
5203 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5204 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5206 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5207 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5209 while (offset
< (cmdLen
- 2))
5211 proto_item
*sc_item
;
5212 proto_tree
*sc_tree
;
5215 uint8_t item_length
;
5217 configItem
= tvb_get_uint8 (payload_tvb
, offset
+ 1);
5219 ci
= val_to_str_ext_const (
5221 &r3_configitemnames_ext
,
5222 "[Unknown Configuration Item]");
5224 item_length
= tvb_get_uint8 (payload_tvb
, offset
+ 0);
5225 sc_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, offset
+ 0, item_length
,
5226 ett_r3upstreamfield
, NULL
, "Config Field: %s (%u)", ci
, configItem
);
5228 sc_item
= proto_tree_add_item (sc_tree
, hf_r3_configitemlength
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5229 proto_tree_add_item (sc_tree
, hf_r3_configitem
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5230 if (item_length
== 0) {
5231 expert_add_info_format(pinfo
, sc_item
, &ei_r3_malformed_length
, "Invalid item length");
5235 if (configItem
< array_length (configMap
))
5237 switch (configMap
[configItem
])
5239 case CONFIGTYPE_NONE
:
5240 proto_tree_add_item (sc_tree
, hf_r3_configitemdata
, payload_tvb
, offset
+ 2, item_length
- 3, ENC_NA
);
5243 case CONFIGTYPE_BOOL
:
5244 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_bool
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5248 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_8
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5251 case CONFIGTYPE_16
:
5252 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_16
, payload_tvb
, offset
+ 2, 2, ENC_LITTLE_ENDIAN
);
5255 case CONFIGTYPE_32
:
5256 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_32
, payload_tvb
, offset
+ 2, 4, ENC_LITTLE_ENDIAN
);
5259 case CONFIGTYPE_STRING
:
5260 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_string
, payload_tvb
, offset
+ 2,
5261 item_length
- 2, ENC_ASCII
);
5265 proto_tree_add_none_format (sc_tree
, hf_r3_upstreamfielderror
, payload_tvb
, offset
+ 2,
5266 item_length
- 2, "Unknown Field Type");
5271 proto_tree_add_none_format (sc_tree
, hf_r3_upstreamfielderror
, payload_tvb
, offset
+ 2,
5272 item_length
- 2, "Unknown Field Type");
5275 offset
+= item_length
;
5280 dissect_r3_cmd_getconfig (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5282 proto_item
*config_item
;
5283 proto_tree
*config_tree
;
5290 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5292 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5293 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5295 config_item
= proto_tree_add_item (tree
, hf_r3_configitems
, tvb
, start_offset
+ 2, cmdLen
- 2, ENC_NA
);
5296 config_tree
= proto_item_add_subtree (config_item
, ett_r3configitem
);
5298 for (i
= 2; i
< cmdLen
; i
++)
5299 proto_tree_add_item (config_tree
, hf_r3_configitem
, tvb
, start_offset
+ i
, 1, ENC_LITTLE_ENDIAN
);
5303 dissect_r3_cmd_manageuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5305 uint8_t cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5306 tvbuff_t
*payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5307 uint32_t offset
= 0;
5309 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5310 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5312 while (offset
< tvb_reported_length (payload_tvb
))
5314 uint32_t paramLength
= tvb_get_uint8 (payload_tvb
, offset
+ 0);
5315 uint32_t paramType
= tvb_get_uint8 (payload_tvb
, offset
+ 1);
5316 uint32_t dataLength
= paramLength
- 2;
5317 proto_tree
*mu_tree
= NULL
;
5318 proto_item
*len_field
= NULL
;
5323 auptn
= val_to_str_ext_const (paramType
, &r3_adduserparamtypenames_ext
, "[Unknown Field]");
5325 mu_tree
= proto_item_add_subtree (
5326 proto_tree_add_none_format (tree
, hf_r3_adduserparamtype
, payload_tvb
, offset
+ 0, paramLength
,
5327 "Manage User Field: %s (%u)", auptn
, paramType
), ett_r3manageuser
);
5329 len_field
= proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypelength
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5330 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypetype
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5333 if (paramLength
< 2)
5336 expert_add_info_format(pinfo
, len_field
, &ei_r3_malformed_length
, "Malformed length value -- all fields are at least 2 octets.");
5343 case ADDUSERPARAMTYPE_DISPOSITION
:
5344 case ADDUSERPARAMTYPE_ACCESSALWAYS
:
5345 case ADDUSERPARAMTYPE_ACCESSMODE
:
5346 case ADDUSERPARAMTYPE_CACHED
:
5347 case ADDUSERPARAMTYPE_USERTYPE
:
5348 case ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
:
5349 case ADDUSERPARAMTYPE_AUXFIELDTYPE
:
5350 case ADDUSERPARAMTYPE_USECOUNT
:
5351 case ADDUSERPARAMTYPE_EXCEPTIONGROUP
:
5352 if (dataLength
!= 1)
5354 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed field -- expected 1 octet");
5357 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
5360 case ADDUSERPARAMTYPE_USERNO
:
5361 if (dataLength
!= 2)
5363 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed field -- expected 2 octets");
5366 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
5369 case ADDUSERPARAMTYPE_PRIMARYFIELD
:
5370 case ADDUSERPARAMTYPE_AUXFIELD
:
5371 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_NA
);
5374 case ADDUSERPARAMTYPE_EXPIREON
:
5376 if (dataLength
!= 3)
5378 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed expiration field -- expected 3 octets");
5382 proto_tree
*expireon_tree
;
5387 expireon_tree
= proto_tree_add_subtree_format(mu_tree
, payload_tvb
, offset
, 3,
5388 ett_r3expireon
, NULL
,
5389 "Expire YY/MM/DD: %02u/%02u/%02u",
5390 tvb_get_uint8 (payload_tvb
, offset
+ 2),
5391 tvb_get_uint8 (payload_tvb
, offset
+ 0),
5392 tvb_get_uint8 (payload_tvb
, offset
+ 1));
5394 proto_tree_add_item (expireon_tree
, hf_r3_expireon_month
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5395 proto_tree_add_item (expireon_tree
, hf_r3_expireon_day
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5396 proto_tree_add_item (expireon_tree
, hf_r3_expireon_year
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5401 case ADDUSERPARAMTYPE_TIMEZONE
:
5403 if (dataLength
!= 4)
5405 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed timezone field -- expected 4 octets");
5409 proto_tree_add_bitmask(mu_tree
, payload_tvb
, offset
, hf_r3_adduserparamtypearray
[paramType
], ett_r3timezone
, r3_timezonearray
, ENC_LITTLE_ENDIAN
);
5415 proto_tree_add_none_format (mu_tree
, hf_r3_upstreamfielderror
, payload_tvb
, offset
, dataLength
, "Unknown Field Type");
5419 offset
+= dataLength
;
5424 dissect_r3_cmd_deleteusers (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5427 tvbuff_t
*payload_tvb
;
5432 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5433 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5435 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5436 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5438 proto_tree_add_item (tree
, hf_r3_deleteusers
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5442 dissect_r3_cmd_defineexception (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5444 proto_tree
*startdate_tree
;
5445 proto_tree
*enddate_tree
;
5447 tvbuff_t
*payload_tvb
;
5452 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5453 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5455 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5456 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5458 proto_tree_add_item (tree
, hf_r3_defineexception_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5460 startdate_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 1, 4,
5461 ett_r3defineexceptionstartdate
, NULL
,
5462 "Start MM/DD HH:MM (%02u/%02u %02u:%02u)",
5463 tvb_get_uint8 (payload_tvb
, 1),
5464 tvb_get_uint8 (payload_tvb
, 2),
5465 tvb_get_uint8 (payload_tvb
, 3),
5466 tvb_get_uint8 (payload_tvb
, 4));
5467 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5468 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5469 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5470 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5472 enddate_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 5, 4,
5473 ett_r3defineexceptionenddate
, NULL
,
5474 "End MM/DD HH:MM (%02u/%02u %02u:%02u)",
5475 tvb_get_uint8 (payload_tvb
, 5),
5476 tvb_get_uint8 (payload_tvb
, 6),
5477 tvb_get_uint8 (payload_tvb
, 7),
5478 tvb_get_uint8 (payload_tvb
, 8));
5479 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_month
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5480 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_day
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5481 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_hours
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5482 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_minutes
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5486 dissect_r3_cmd_defineexceptiongroup (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5488 proto_tree
*bits_tree
;
5490 tvbuff_t
*payload_tvb
;
5497 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5498 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5500 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5501 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5503 proto_tree_add_item (tree
, hf_r3_defineexceptiongroup_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5505 bits_tree
= proto_tree_add_subtree(tree
, payload_tvb
, 1, -1, ett_r3defineexceptiongroupbits
, NULL
, "Exception Group Bit Field");
5507 for (i
= 1; i
< (cmdLen
- 2); i
++)
5510 uint8_t byte
= tvb_get_uint8 (payload_tvb
, i
);
5512 for (j
= 0; j
< 8; j
++)
5513 proto_tree_add_none_format (bits_tree
, hf_r3_defineexceptiongroup_bits
, payload_tvb
, i
, 1,
5514 "Exception Group %2d: %s", bit
++, (byte
& (1 << j
)) ? "Enabled" : "Disabled");
5519 dissect_r3_cmd_definecalendar (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5522 tvbuff_t
*payload_tvb
;
5529 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5530 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5532 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5533 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5535 proto_tree_add_item (tree
, hf_r3_definecalendar_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5537 for (i
= 0; i
< 12; i
++)
5539 uint32_t daymap
= tvb_get_letohl (payload_tvb
, (i
* 4) + 1);
5540 proto_tree
*calendar_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, (i
* 4) + 1, 4,
5541 ett_r3definecalendarmonth
[i
+ 1], NULL
,
5542 "Calendar Bit Field - %s (0x%08x)",
5543 (mn
= val_to_str_ext_const (i
+ 1, &r3_monthnames_ext
, "[Unknown Month]")),
5547 for (j
= 0; j
< 31; j
++)
5548 proto_tree_add_none_format (calendar_tree
, hf_r3_definecalendar_bits
, payload_tvb
, (i
* 4) + 1, 4,
5550 val_to_str_ext_const (j
+ 1, &r3_monthdaynames_ext
, "[Unknown Day]"),
5552 (daymap
& (1 << j
)) ? "Enabled" : "Disabled");
5557 dissect_r3_cmd_definetimezone (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5559 proto_tree
*starttime_tree
;
5560 proto_tree
*endtime_tree
;
5562 tvbuff_t
*payload_tvb
;
5568 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5569 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5571 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5572 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5574 proto_tree_add_item (tree
, hf_r3_definetimezone_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5576 starttime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 1, 2,
5577 ett_r3definetimezonestarttime
, NULL
,
5578 "Start HH:MM (%02u:%02u)",
5579 tvb_get_uint8 (payload_tvb
, 1),
5580 tvb_get_uint8 (payload_tvb
, 2));
5581 proto_tree_add_item (starttime_tree
, hf_r3_definetimezone_starttime_hours
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5582 proto_tree_add_item (starttime_tree
, hf_r3_definetimezone_starttime_minutes
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5584 endtime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 3, 2,
5585 ett_r3definetimezoneendtime
, NULL
,
5586 "End HH:MM (%02u:%02u)",
5587 tvb_get_uint8 (payload_tvb
, 3),
5588 tvb_get_uint8 (payload_tvb
, 4));
5589 proto_tree_add_item (endtime_tree
, hf_r3_definetimezone_endtime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5590 proto_tree_add_item (endtime_tree
, hf_r3_definetimezone_endtime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5592 proto_tree_add_bitmask(tree
, payload_tvb
, 5, hf_r3_definetimezone_daymap
, ett_r3definetimezonedaymap
, r3_definetimezone_daymap
, ENC_NA
);
5594 proto_tree_add_item (tree
, hf_r3_definetimezone_exceptiongroup
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5595 proto_tree_add_uint (tree
, hf_r3_definetimezone_mode
, payload_tvb
, 7, 1,
5596 (tzmode
= tvb_get_uint8 (payload_tvb
, 7)) & 0x0f);
5597 proto_tree_add_none_format (tree
, hf_r3_definetimezone_calendar
, payload_tvb
, 7, 1,
5598 "Access Always: %s", (tzmode
& 0x10) ? "True" : "False");
5602 dissect_r3_cmd_rmtauthretry (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5605 tvbuff_t
*payload_tvb
;
5610 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5611 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5613 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5614 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5616 proto_tree_add_item (tree
, hf_r3_rmtauthretry_sequence
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
5617 proto_tree_add_item (tree
, hf_r3_rmtauthretry_retry
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5621 dissect_r3_cmd_filters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5623 proto_tree
*filter_tree
;
5625 tvbuff_t
*payload_tvb
;
5631 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5632 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5634 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5635 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5637 proto_tree_add_item (tree
, hf_r3_filter_type
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5639 filter_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 2, -1, ett_r3filters
, NULL
,
5640 "Filters (%u specified)", tvb_get_uint8 (payload_tvb
, 0));
5642 for (i
= 0; i
< tvb_get_uint8 (payload_tvb
, 0); i
++)
5643 proto_tree_add_item (filter_tree
, hf_r3_filter_list
, payload_tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
5647 dissect_r3_cmd_alarmconfigure (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5649 proto_item
*alarm_item
;
5650 proto_tree
*alarm_tree
;
5652 tvbuff_t
*payload_tvb
;
5653 uint32_t offset
= 0;
5654 uint32_t alarms
= 0;
5659 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5660 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5662 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5663 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5665 alarm_tree
= proto_tree_add_subtree(tree
, payload_tvb
, 0, -1, ett_r3alarmlist
, &alarm_item
, "Alarm List (0 items)");
5667 while (offset
< (cmdLen
- 2))
5670 proto_tree
*alarmcfg_tree
;
5675 if (!(ai
= try_val_to_str_ext (tvb_get_uint8 (payload_tvb
, offset
+ 1), &r3_alarmidnames_ext
)))
5677 ai
= "[Unknown Alarm ID]";
5681 as
= (tvb_get_uint8 (payload_tvb
, offset
+ 2) & 0xfe) ?
5682 "Error" : (tvb_get_uint8 (payload_tvb
, offset
+ 2) & 0x01) ? "Enabled" : "Disabled";
5684 alarmcfg_tree
= proto_tree_add_subtree_format(alarm_tree
, payload_tvb
, offset
, tvb_get_uint8 (payload_tvb
, offset
),
5685 ett_r3alarmcfg
, NULL
, "Alarm Item (%s, %s)", ai
, as
);
5687 alarm_len
= tvb_get_uint8 (payload_tvb
, offset
+ 0);
5688 pi
= proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_length
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5689 if (alarm_len
== 0) {
5690 expert_add_info_format (pinfo
, pi
, &ei_r3_malformed_length
,
5691 "Alarm length equal to 0. Payload could be partially decoded");
5695 proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_id
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5696 proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_state
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5699 offset
+= alarm_len
;
5703 proto_item_set_text (alarm_item
, "Alarm List (%d items)", alarms
);
5707 dissect_r3_cmd_eventlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5709 proto_tree
*starttime_tree
;
5710 proto_tree
*endtime_tree
;
5712 tvbuff_t
*payload_tvb
;
5717 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5718 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5720 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5721 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5723 starttime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 0, 5,
5724 ett_r3eventlogdumpstarttime
, NULL
,
5725 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5726 tvb_get_uint8 (payload_tvb
, 0),
5727 tvb_get_uint8 (payload_tvb
, 1),
5728 tvb_get_uint8 (payload_tvb
, 2),
5729 tvb_get_uint8 (payload_tvb
, 3),
5730 tvb_get_uint8 (payload_tvb
, 4));
5731 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5732 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5733 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5734 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5735 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5737 endtime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 5, 5,
5738 ett_r3eventlogdumpendtime
, NULL
,
5739 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5740 tvb_get_uint8 (payload_tvb
, 5),
5741 tvb_get_uint8 (payload_tvb
, 6),
5742 tvb_get_uint8 (payload_tvb
, 7),
5743 tvb_get_uint8 (payload_tvb
, 8),
5744 tvb_get_uint8 (payload_tvb
, 9));
5745 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5746 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5747 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5748 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5749 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5751 proto_tree_add_item (tree
, hf_r3_eventlogdump_user
, payload_tvb
, 10, 2, ENC_LITTLE_ENDIAN
);
5755 dissect_r3_cmd_declinedlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5757 proto_tree
*starttime_tree
;
5758 proto_tree
*endtime_tree
;
5760 tvbuff_t
*payload_tvb
;
5765 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5766 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5768 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5769 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5771 starttime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 0, 5,
5772 ett_r3declinedlogdumpstarttime
, NULL
,
5773 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5774 tvb_get_uint8 (payload_tvb
, 0),
5775 tvb_get_uint8 (payload_tvb
, 1),
5776 tvb_get_uint8 (payload_tvb
, 2),
5777 tvb_get_uint8 (payload_tvb
, 3),
5778 tvb_get_uint8 (payload_tvb
, 4));
5779 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5780 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5781 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5782 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5783 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5785 endtime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 5, 5,
5786 ett_r3declinedlogdumpendtime
, NULL
,
5787 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5788 tvb_get_uint8 (payload_tvb
, 5),
5789 tvb_get_uint8 (payload_tvb
, 6),
5790 tvb_get_uint8 (payload_tvb
, 7),
5791 tvb_get_uint8 (payload_tvb
, 8),
5792 tvb_get_uint8 (payload_tvb
, 9));
5793 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5794 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5795 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5796 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5797 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5801 dissect_r3_cmd_alarmlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5803 proto_tree
*starttime_tree
;
5804 proto_tree
*endtime_tree
;
5806 tvbuff_t
*payload_tvb
;
5811 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5812 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5814 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5815 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5817 starttime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 0, 5,
5818 ett_r3alarmlogdumpstarttime
, NULL
,
5819 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5820 tvb_get_uint8 (payload_tvb
, 0),
5821 tvb_get_uint8 (payload_tvb
, 1),
5822 tvb_get_uint8 (payload_tvb
, 2),
5823 tvb_get_uint8 (payload_tvb
, 3),
5824 tvb_get_uint8 (payload_tvb
, 4));
5825 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5826 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5827 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5828 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5829 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5831 endtime_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 5, 5,
5832 ett_r3alarmlogdumpendtime
, NULL
,
5833 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5834 tvb_get_uint8 (payload_tvb
, 5),
5835 tvb_get_uint8 (payload_tvb
, 6),
5836 tvb_get_uint8 (payload_tvb
, 7),
5837 tvb_get_uint8 (payload_tvb
, 8),
5838 tvb_get_uint8 (payload_tvb
, 9));
5839 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5840 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5841 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5842 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5843 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5847 dissect_r3_cmd_downloadfirmware (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5849 proto_item
*dlfw_item
= NULL
;
5850 proto_item
*dlfw_action_item
= NULL
;
5851 proto_tree
*dlfw_tree
= NULL
;
5853 tvbuff_t
*payload_tvb
;
5855 uint32_t calculatedCRC
;
5857 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5858 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5862 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5863 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5865 dlfw_tree
= proto_tree_add_subtree_format(tree
, payload_tvb
, 0, -1, ett_r3downloadfirmware
, &dlfw_item
,
5866 "Download Record (Record #%u, ", tvb_get_letohs (payload_tvb
, 2));
5868 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_length
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
5869 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_record
, payload_tvb
, 2, 2, ENC_LITTLE_ENDIAN
);
5870 dlfw_action_item
= proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_action
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5873 switch (tvb_get_uint8 (payload_tvb
, 4))
5875 case DOWNLOADFIRMWARE_START
:
5878 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_START)");
5879 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_timeout
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5880 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_nvram
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5883 case DOWNLOADFIRMWARE_DATA
:
5886 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_DATA, Address 0x%08x, %u Bytes)",
5887 tvb_get_letohl (payload_tvb
, 5), tvb_get_uint8 (payload_tvb
, 9));
5888 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_address
, payload_tvb
, 5, 4, ENC_LITTLE_ENDIAN
);
5889 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_bytes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5890 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_data
, payload_tvb
, 10,
5891 tvb_get_uint8 (payload_tvb
, 9), ENC_NA
);
5894 case DOWNLOADFIRMWARE_COMPLETE
:
5897 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_COMPLETE)");
5900 case DOWNLOADFIRMWARE_ABORT
:
5903 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_ABORT)");
5906 case DOWNLOADFIRMWARE_RESET
:
5909 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_RESET)");
5913 expert_add_info(pinfo
, dlfw_action_item
, &ei_r3_firmwaredownload_action
);
5920 packetCRC
= tvb_get_letohs (payload_tvb
, cmdLen
- 2 - 2);
5922 if ((calculatedCRC
= crc16_r3_ccitt_tvb(payload_tvb
, 0, cmdLen
- 2 - 2)) == packetCRC
)
5923 proto_tree_add_uint_format_value(dlfw_tree
, hf_r3_firmwaredownload_crc
, payload_tvb
,
5925 packetCRC
, "0x%04x (correct)", packetCRC
);
5928 proto_item
*tmp_item
;
5930 proto_tree_add_uint_format_value(dlfw_tree
, hf_r3_firmwaredownload_crc
, payload_tvb
,
5932 packetCRC
, "0x%04x (incorrect, should be 0x%04x)", calculatedCRC
, packetCRC
);
5933 tmp_item
= proto_tree_add_boolean (dlfw_tree
, hf_r3_firmwaredownload_crc_bad
, payload_tvb
,
5934 cmdLen
- 2 - 2, 2, true);
5935 proto_item_set_generated (tmp_item
);
5940 dissect_r3_cmd_downloadfirmwaretimeout (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5943 tvbuff_t
*payload_tvb
;
5947 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5948 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5950 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5951 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5953 proto_tree_add_item (tree
, hf_r3_commanddata
, payload_tvb
, 0, -1, ENC_NA
);
5955 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_cmd_downloadfirmwaretimeout
); /* XXX: ??? */
5959 dissect_r3_cmd_powertableselection (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5962 tvbuff_t
*payload_tvb
;
5967 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5968 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5970 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5971 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5973 proto_tree_add_item (tree
, hf_r3_powertableselection
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5977 dissect_r3_cmd_clearnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5979 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5980 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5981 proto_tree_add_bitmask(tree
, tvb
, start_offset
+ 2, hf_r3_nvramclearoptions
,
5982 ett_r3clearnvram
, r3_nvramclearoptions
, ENC_LITTLE_ENDIAN
);
5986 dissect_r3_cmd_dpac (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5989 tvbuff_t
*payload_tvb
;
5994 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
5995 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
5997 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5998 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6000 /* XXX: hf[] entries for the following hf indexes originally missing */
6001 proto_tree_add_item (tree
, hf_r3_dpac_action
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
6002 proto_tree_add_item (tree
, hf_r3_dpac_waittime
, payload_tvb
, 1, 2, ENC_LITTLE_ENDIAN
);
6003 proto_tree_add_item (tree
, hf_r3_dpac_command
, payload_tvb
, 3, -1, ENC_NA
);
6007 dissect_r3_cmd_selftest (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6011 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6012 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6017 dissect_r3_cmd_reset (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6021 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6022 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6027 dissect_r3_cmd_logwrite (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6030 tvbuff_t
*payload_tvb
;
6035 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
6036 payload_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, cmdLen
- 2);
6038 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6039 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6041 proto_tree_add_item (tree
, hf_r3_writeeventlog_user
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
6042 proto_tree_add_item (tree
, hf_r3_writeeventlog_event
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
6046 dissect_r3_cmd_mfgcommand (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6050 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6051 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6053 mfgCommandFlag
= true;
6057 dissect_r3_cmd_nvrambackup (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6061 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6062 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6067 dissect_r3_cmd_extendedresponse (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6071 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6072 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6077 * ***************************************************************************
6080 dissect_r3_cmdmfg_setserialnumber (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*tree
)
6082 tvbuff_t
*sn_tvb
= tvb_new_subset_length (tvb
, start_offset
+ 2, 16);
6086 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6087 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6089 dissect_serialnumber (sn_tvb
, 0, length
, pinfo
, tree
, hf_r3_mfgsetserialnumber
);
6093 dissect_r3_cmdmfg_setcryptkey (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6097 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6098 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6099 proto_tree_add_item (tree
, hf_r3_mfgsetcryptkey
, tvb
, start_offset
+ 2, -1, ENC_NA
);
6104 dissect_r3_cmdmfg_dumpnvram (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6108 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6109 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6110 proto_tree_add_item (tree
, hf_r3_mfgdumpnvram
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6115 dissect_r3_cmdmfg_terminal (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6119 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6120 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6125 dissect_r3_cmdmfg_remoteunlock (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6129 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6130 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6131 proto_tree_add_item (tree
, hf_r3_mfgremoteunlock
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6136 dissect_r3_cmdmfg_auxctlrversion (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6140 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6141 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6146 dissect_r3_cmdmfg_iopins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6150 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6151 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6156 dissect_r3_cmdmfg_adcs (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6160 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6161 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6166 dissect_r3_cmdmfg_hardwareid (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6170 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6171 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6176 dissect_r3_cmdmfg_checkpointlogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6180 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6181 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6186 dissect_r3_cmdmfg_checkpointlogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6190 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6191 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6196 dissect_r3_cmdmfg_readregisters (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6200 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6201 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6206 dissect_r3_cmdmfg_forceoptions (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
6212 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6213 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6216 len
= tvb_reported_length_remaining (tvb
, start_offset
);
6219 while (i
<len
&& (step
=tvb_get_uint8(tvb
, start_offset
+ i
))>0)
6221 proto_tree
*force_tree
= proto_tree_add_subtree_format(tree
, tvb
, start_offset
+ i
, tvb_get_uint8 (tvb
, start_offset
+ i
),
6222 ett_r3forceoptions
, NULL
,
6223 "Force Option %s (%u)",
6224 val_to_str_ext_const (
6225 tvb_get_uint8 (tvb
, start_offset
+ i
+ 1),
6226 &r3_forceitemnames_ext
, "[Unknown]"),
6227 tvb_get_uint8 (tvb
, start_offset
+ i
+ 1));
6228 proto_item
*force_item_item
;
6230 proto_tree_add_item (force_tree
, hf_r3_forceoptions_length
, tvb
, start_offset
+ i
+ 0, 1, ENC_LITTLE_ENDIAN
);
6231 force_item_item
= proto_tree_add_item (force_tree
, hf_r3_forceoptions_item
, tvb
, start_offset
+ i
+ 1, 1, ENC_LITTLE_ENDIAN
);
6233 switch (tvb_get_uint8 (tvb
, start_offset
+ i
) - 2)
6235 case 1 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_8
, tvb
, start_offset
+ i
+ 2, 1, ENC_LITTLE_ENDIAN
);
6237 case 2 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_16
, tvb
, start_offset
+ i
+ 2, 2, ENC_LITTLE_ENDIAN
);
6239 case 3 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_24
, tvb
, start_offset
+ i
+ 2, 3, ENC_LITTLE_ENDIAN
);
6241 case 4 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_32
, tvb
, start_offset
+ i
+ 2, 4, ENC_LITTLE_ENDIAN
);
6244 expert_add_info_format(pinfo
, force_item_item
, &ei_r3_malformed_length
, "Invalid length for Forceoptions State entry");
6253 dissect_r3_cmdmfg_commuser (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6257 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6258 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6263 dissect_r3_cmdmfg_dumpkeypad (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6267 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6268 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6273 dissect_r3_cmdmfg_batterycheck (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6277 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6278 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6283 dissect_r3_cmdmfg_ramrefresh (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6287 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6288 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6293 dissect_r3_cmdmfg_taskflags (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6297 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6298 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6303 dissect_r3_cmdmfg_timerchain (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6307 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6308 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6313 dissect_r3_cmdmfg_peekpoke (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
6318 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6319 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6322 len
= tvb_reported_length_remaining (tvb
, start_offset
);
6324 for (i
= 0; i
< len
; i
+= 3)
6326 proto_item
*peekpoke_item
;
6327 proto_item
*peekpoke_op_item
;
6328 proto_tree
*peekpoke_tree
;
6330 peekpoke_tree
= proto_tree_add_subtree(tree
, tvb
, start_offset
+ i
, 3, ett_r3peekpoke
, &peekpoke_item
, "");
6332 peekpoke_op_item
= proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_operation
, tvb
, start_offset
+ i
+ 0, 1, ENC_LITTLE_ENDIAN
);
6333 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_address
, tvb
, start_offset
+ i
+ 1, 2, ENC_LITTLE_ENDIAN
);
6335 switch (tvb_get_uint8 (tvb
, start_offset
+ i
+ 0))
6337 case PEEKPOKE_READU8
:
6338 proto_item_append_text (peekpoke_item
, "Read (8 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6341 case PEEKPOKE_READU16
:
6342 proto_item_append_text (peekpoke_item
, "Read (16 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6345 case PEEKPOKE_READU24
:
6346 proto_item_append_text (peekpoke_item
, "Read (24 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6349 case PEEKPOKE_READU32
:
6350 proto_item_append_text (peekpoke_item
, "Read (32 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6353 case PEEKPOKE_READSTRING
:
6354 proto_item_append_text (peekpoke_item
,
6355 "Read (%d Bytes @ 0x%04x)",
6356 tvb_get_uint8 (tvb
, start_offset
+ i
+ 3),
6357 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6358 proto_item_set_len (peekpoke_item
, 4);
6359 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6363 case PEEKPOKE_WRITEU8
:
6364 proto_item_append_text (peekpoke_item
,
6365 "Write (8 Bits: 0x%02x @ 0x%04x)",
6366 tvb_get_uint8 (tvb
, start_offset
+ i
+ 3),
6367 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6368 proto_item_set_len (peekpoke_item
, 4);
6369 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke8
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6373 case PEEKPOKE_WRITEU16
:
6374 proto_item_append_text (peekpoke_item
,
6375 "Write (16 Bits: 0x%04x @ 0x%04x)",
6376 tvb_get_letohs (tvb
, start_offset
+ i
+ 3),
6377 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6378 proto_item_set_len (peekpoke_item
, 5);
6379 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke16
, tvb
, start_offset
+ i
+ 3, 2, ENC_LITTLE_ENDIAN
);
6383 case PEEKPOKE_WRITEU24
:
6384 proto_item_append_text (peekpoke_item
,
6385 "Write (24 Bits: 0x%06x @ 0x%04x)",
6386 tvb_get_letoh24 (tvb
, start_offset
+ i
+ 3),
6387 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6388 proto_item_set_len (peekpoke_item
, 6);
6389 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke24
, tvb
, start_offset
+ i
+ 3, 3, ENC_LITTLE_ENDIAN
);
6393 case PEEKPOKE_WRITEU32
:
6394 proto_item_append_text (peekpoke_item
,
6395 "Write (32 Bits: 0x%08x @ 0x%04x)",
6396 tvb_get_letohl (tvb
, start_offset
+ i
+ 3),
6397 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6398 proto_item_set_len (peekpoke_item
, 7);
6399 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke32
, tvb
, start_offset
+ i
+ 3, 4, ENC_LITTLE_ENDIAN
);
6403 case PEEKPOKE_WRITESTRING
:
6404 proto_item_append_text (peekpoke_item
,
6405 "Write (%d Bytes @ 0x%04x)",
6406 tvb_get_uint8 (tvb
, start_offset
+ i
+ 3),
6407 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6408 proto_item_set_len (peekpoke_item
, 3 + 1 + tvb_get_uint8 (tvb
, start_offset
+ i
+ 3));
6409 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6410 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_pokestring
, tvb
, start_offset
+ i
+ 4,
6411 tvb_get_uint8 (tvb
, start_offset
+ i
+ 3), ENC_NA
);
6412 i
+= tvb_get_uint8 (tvb
, start_offset
+ i
+ 3) + 1;
6416 expert_add_info_format(pinfo
, peekpoke_op_item
, &ei_r3_peekpoke_operation
, "Unknown Mfg peekpoke operation value");
6423 dissect_r3_cmdmfg_lockstate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6425 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6426 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6430 dissect_r3_cmdmfg_capabilities (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6432 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6433 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6437 dissect_r3_cmdmfg_dumpm41t81 (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6439 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6440 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6444 dissect_r3_cmdmfg_debuglogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6446 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6447 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6451 dissect_r3_cmdmfg_debuglogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6453 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6454 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6458 dissect_r3_cmdmfg_testwdt (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6460 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6461 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6465 dissect_r3_cmdmfg_querycksum (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6467 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6468 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6472 dissect_r3_cmdmfg_validatechecksums (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6474 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6475 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6479 dissect_r3_cmdmfg_rebuildlrucache (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6481 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6482 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6486 dissect_r3_cmdmfg_tzupdate (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6488 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6489 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6493 dissect_r3_cmdmfg_testpreserve (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6495 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6496 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6497 proto_tree_add_item (tree
, hf_r3_mfgtestpreserve
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6501 dissect_r3_cmdmfg_mortisestatelogdump (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6503 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6504 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6508 dissect_r3_cmdmfg_mortisestatelogclear (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6510 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6511 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6515 dissect_r3_cmdmfg_mortisepins (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6517 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6518 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6522 dissect_r3_cmdmfg_haltandcatchfire (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6524 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6525 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6531 dissect_r3_command (tvbuff_t
*tvb
, uint32_t start_offset
, uint32_t length
, packet_info
*pinfo
, proto_tree
*r3_tree
)
6533 proto_item
*cmd_item
;
6534 proto_tree
*cmd_tree
;
6539 tvb_ensure_bytes_exist (tvb
, start_offset
, 2);
6541 cmdLen
= tvb_get_uint8 (tvb
, start_offset
+ 0);
6542 cmd
= tvb_get_uint8 (tvb
, start_offset
+ 1);
6544 if (!mfgCommandFlag
)
6545 cn
= val_to_str_ext_const (cmd
, &r3_cmdnames_ext
, "[Unknown Command]");
6547 cn
= val_to_str_ext_const (cmd
, &r3_cmdmfgnames_ext
, "[Unknown Mfg Command]");
6549 cmd_tree
= proto_tree_add_subtree_format(r3_tree
, tvb
, start_offset
, cmdLen
,
6550 ett_r3cmd
, &cmd_item
, "Command Packet: %s (%d)", cn
, cmd
);
6552 if (!mfgCommandFlag
)
6554 if (cmd
>= CMD_LAST
)
6555 expert_add_info(pinfo
, cmd_item
, &ei_r3_unknown_command_value
);
6556 else if (r3command_dissect
[cmd
])
6557 (*r3command_dissect
[cmd
]) (tvb
, start_offset
, length
, pinfo
, cmd_tree
);
6561 mfgCommandFlag
= false;
6563 if (cmd
>= CMDMFG_LAST
)
6565 expert_add_info_format(pinfo
, proto_tree_get_parent (cmd_tree
), &ei_r3_unknown_command_value
, "Unknown manufacturing command value");
6567 else if (r3commandmfg_dissect
[cmd
])
6568 (*r3commandmfg_dissect
[cmd
]) (tvb
, start_offset
, length
, pinfo
, cmd_tree
);
6571 return tvb_get_uint8 (tvb
, start_offset
+ 0);
6575 * ***************************************************************************
6577 * Dissect a single r3 PDU
6579 * return: amount consumed
6582 dissect_r3_packet (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*r3_tree
)
6584 proto_item
*payload_item
= NULL
;
6585 proto_tree
*payload_tree
= NULL
;
6586 unsigned offset
= 0;
6588 unsigned octConsumed
;
6590 if (tvb_strneql (tvb
, 0, "~~~ds", 5) == 0)
6593 proto_tree_add_item (r3_tree
, hf_r3_tildex3ds
, tvb
, 0, -1, ENC_ASCII
);
6599 * Show basic header stuff
6603 proto_item
*header_item
= proto_tree_add_item (r3_tree
, hf_r3_header
, tvb
, 0, 5, ENC_NA
);
6604 proto_tree
*header_tree
= proto_item_add_subtree (header_item
, ett_r3header
);
6606 proto_tree_add_item (header_tree
, hf_r3_sigil
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
6607 proto_tree_add_item (header_tree
, hf_r3_address
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
6608 proto_tree_add_item (header_tree
, hf_r3_packetnumber
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
6609 proto_tree_add_item (header_tree
, hf_r3_packetlength
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
6610 proto_tree_add_item (header_tree
, hf_r3_encryption
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
6613 /* Note: packetLen == tvb_reported_length() */
6615 packetLen
= tvb_get_uint8 (tvb
, 3);
6619 payload_item
= proto_tree_add_item (r3_tree
, hf_r3_payload
, tvb
, 5, -1, ENC_NA
);
6620 payload_tree
= proto_item_add_subtree (payload_item
, ett_r3payload
);
6625 mfgCommandFlag
= false; /* XXX: Assumption: mfgCmd always follows Cmd in same r3 "packet" */
6626 while (offset
< (packetLen
- 3))
6628 octConsumed
= dissect_r3_command (tvb
, offset
, 0, pinfo
, payload_tree
);
6629 if(octConsumed
== 0)
6631 expert_add_info_format(pinfo
, proto_tree_get_parent (payload_tree
), &ei_r3_malformed_length
,
6632 "Command length equal to 0. Payload could be partially decoded");
6633 offset
= tvb_reported_length (tvb
) - 3; /* just do CRC stuff ?? */
6636 offset
+= octConsumed
;
6640 * Show the CRC and XOR status
6644 proto_item
*tail_item
= proto_tree_add_item (r3_tree
, hf_r3_tail
, tvb
, offset
, 3, ENC_NA
);
6645 proto_tree
*tail_tree
= proto_item_add_subtree (tail_item
, ett_r3tail
);
6646 uint32_t packetCRC
= tvb_get_letohs (tvb
, offset
);
6647 uint32_t packetXor
= tvb_get_uint8 (tvb
, offset
+ 2);
6648 uint32_t calculatedCRC
;
6650 if ((calculatedCRC
= crc16_r3_ccitt_tvb(tvb
, 1, packetLen
- 3)) == packetCRC
)
6651 proto_tree_add_uint_format_value(tail_tree
, hf_r3_crc
, tvb
, offset
, 2, packetCRC
, "0x%04x (correct)", packetCRC
);
6654 proto_item
*tmp_item
;
6656 proto_tree_add_uint_format_value(tail_tree
, hf_r3_crc
, tvb
, offset
, 2, packetCRC
,
6657 "0x%04x (incorrect, should be 0x%04x)", calculatedCRC
, packetCRC
);
6658 tmp_item
= proto_tree_add_boolean (tail_tree
, hf_r3_crc_bad
, tvb
, offset
, 2, true);
6659 proto_item_set_generated (tmp_item
);
6662 if ((packetLen
^ 0xff) == packetXor
)
6663 proto_tree_add_uint_format_value(tail_tree
, hf_r3_xor
, tvb
, offset
+ 2, 1, packetXor
,
6664 "0x%02x (correct)", packetXor
);
6667 proto_item
*tmp_item
;
6669 proto_tree_add_uint_format_value(tail_tree
, hf_r3_xor
, tvb
, offset
+ 7, 1, packetXor
,
6670 "0x%02x (incorrect, should be 0x%02x)", packetXor
, packetLen
^ 0xff);
6671 tmp_item
= proto_tree_add_boolean (tail_tree
, hf_r3_xor_bad
, tvb
, offset
+ 7, 1, true);
6672 proto_item_set_generated (tmp_item
);
6682 * ***************************************************************************
6684 * Main dissector entry points
6687 dissect_r3_message (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
6689 proto_tree
*r3_tree
= NULL
;
6691 col_set_str (pinfo
->cinfo
, COL_PROTOCOL
, "R3");
6692 col_clear (pinfo
->cinfo
, COL_INFO
);
6694 /* Note: The tvb (provided via tcp_dissect_pdus()) will contain (at most) one PDU of the length
6695 * specified via get_r3_message_len()
6700 proto_item
*r3_item
;
6701 r3_item
= proto_tree_add_item (tree
, proto_r3
, tvb
, 0, -1, ENC_NA
);
6702 r3_tree
= proto_item_add_subtree (r3_item
, ett_r3
);
6705 dissect_r3_packet (tvb
, pinfo
, r3_tree
);
6707 return tvb_reported_length(tvb
);
6711 get_r3_message_len (packet_info
*pinfo _U_
, tvbuff_t
*tvb
, int offset
, void *data _U_
)
6713 return (unsigned) tvb_get_uint8 (tvb
, offset
+ 3) + 1;
6717 dissect_r3 (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
6719 tcp_dissect_pdus (tvb
, pinfo
, tree
, true, 4, get_r3_message_len
, dissect_r3_message
, data
);
6720 return tvb_reported_length(tvb
);
6724 * ***************************************************************************
6726 void proto_register_r3 (void)
6729 /* Setup list of header fields */
6730 static hf_register_info hf
[] =
6733 { "DPAC Attention", "r3.dpac_attention",
6734 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6739 { "Header", "r3.header",
6740 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6744 { "Payload", "r3.payload",
6745 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6749 { "Tail", "r3.tail",
6750 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6755 { "Sigil", "r3.sigil",
6756 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6760 { "Address", "r3.address",
6761 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6764 { &hf_r3_packetnumber
,
6765 { "Packet Number", "r3.packetnumber",
6766 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6769 { &hf_r3_packetlength
,
6770 { "Packet Length", "r3.packetlength",
6771 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6774 { &hf_r3_encryption
,
6775 { "Crypt Type", "r3.encryption",
6776 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_encryptionschemenames_ext
, 0x0,
6781 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6785 { "Bad CRC", "r3.crc_bad",
6786 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6791 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6795 { "Bad XOR", "r3.xor_bad",
6796 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6800 { &hf_r3_commandlength
,
6801 { "Command Length", "r3.command.length",
6802 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6806 { "Command", "r3.command.command",
6807 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6810 { &hf_r3_commanddata
,
6811 { "Command Data", "r3.command.data",
6812 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6816 { &hf_r3_commandmfglength
,
6817 { "Mfg Command Length", "r3.commandmfg.length",
6818 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6821 { &hf_r3_commandmfg
,
6822 { "Mfg Command", "r3.commandmfg.command",
6823 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdmfgnames_ext
, 0x0,
6827 { &hf_r3_commandmfgdata
,
6828 { "Mfg Command Data", "r3.commandmfg.data",
6829 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6834 { &hf_r3_responselength
,
6835 { "Response Length", "r3.response.length",
6836 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6839 { &hf_r3_responsecommand
,
6840 { "Response Command", "r3.response.command",
6841 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6844 { &hf_r3_responsetype
,
6845 { "Response Type", "r3.response.responsetype",
6846 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_responsetypenames_ext
, 0x0,
6849 { &hf_r3_responsetocommand
,
6850 { "Response To Command", "r3.response.to_command",
6851 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6855 { &hf_r3_responsedata
,
6856 { "Response Data", "r3.response.data",
6857 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6862 { &hf_r3_upstreamcommand
,
6863 { "Upstream Command", "r3.upstreamcommand.command",
6864 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_upstreamcommandnames_ext
, 0x0,
6868 { &hf_r3_upstreamfield
,
6869 { "Upstream Field", "r3.upstreamfield",
6870 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6873 { &hf_r3_upstreamfieldlength
,
6874 { "Field Length", "r3.upstreamfield.length",
6875 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6878 { &hf_r3_upstreamfieldtype
,
6879 { "Field Type", "r3.upstreamfield.type",
6880 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_upstreamfieldnames_ext
, 0x0,
6884 { &hf_r3_upstreamfielddatalen
,
6885 { "Data Length", "r3.upstreamfield.datalen",
6886 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6890 { &hf_r3_upstreamfielderror
,
6891 { "Error", "r3.upstreamfield.error",
6892 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6895 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_SERIALNUMBER
],
6896 { "Serial Number", "r3.upstreamfield.serialnumber",
6897 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6900 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_NAR
],
6901 { "Next Available Record", "r3.upstreamfield.nar",
6902 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6905 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ENTRYDEVICE
],
6906 { "Entry Device", "r3.upstreamfield.entrydevice",
6907 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6910 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PPMIFIELDTYPE
],
6911 { "PPMI Field Type", "r3.upstreamfield.ppmifieldtype",
6912 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6915 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PIN
],
6916 { "PIN", "r3.upstreamfield.pin",
6917 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6920 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_SEQUENCENUMBER
],
6921 { "Sequence Number", "r3.upstreamfield.sequencenumber",
6922 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6925 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_RESPONSEWINDOW
],
6926 { "Response Window", "r3.upstreamfield.responsewindow",
6927 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6930 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USERNUMBER
],
6931 { "User Number", "r3.upstreamfield.usernumber",
6932 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6935 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_VERSION
],
6936 { "Version", "r3.upstreamfield.version",
6937 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6940 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EVENTLOGRECORD
],
6941 { "Event Log Record", "r3.upstreamfield.eventlogrecord",
6942 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6945 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DATETIME
],
6946 { "Date/Time", "r3.upstreamfield.datetime",
6947 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6950 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EVENTLOGRECORDCOUNT
],
6951 { "Event Log Record Count", "r3.upstreamfield.eventlogrecordcount",
6952 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6955 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DECLINEDRECORDCOUNT
],
6956 { "Declined Log Record", "r3.upstreamfield.declinedlogrecord",
6957 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6960 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DECLINEDRECORD
],
6961 { "Declined Log", "r3.upstreamfield.declinedlog",
6962 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6965 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USERTYPE
],
6966 { "User Type", "r3.upstreamfield.usertype",
6967 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_usertypenames_ext
, 0x0,
6970 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ACCESSALWAYS
],
6971 { "Access Always", "r3.upstreamfield.accessalways",
6972 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6975 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_CACHED
],
6976 { "Cached", "r3.upstreamfield.cached",
6977 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6980 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PRIMARYFIELDTYPE
],
6981 { "Primary Field Type", "r3.upstreamfield.primaryfieldtype",
6982 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6985 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXFIELDTYPE
],
6986 { "Aux Field Type", "r3.upstreamfield.auxfieldtype",
6987 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6990 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ACCESSMODE
],
6991 { "Access Mode", "r3.upstreamfield.accessmode",
6992 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_accessmodenames_ext
, 0x0,
6995 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EXPIREON
],
6996 { "Expire On", "r3.upstreamfield.expireon",
6997 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
7000 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USECOUNT
],
7001 { "Use Count", "r3.upstreamfield.usecount",
7002 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7005 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_TIMEZONE
],
7006 { "Timezone", "r3.upstreamfield.timezone",
7007 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
7010 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EXCEPTIONGROUP
],
7011 { "Exception Group", "r3.upstreamfield.exceptiongroup",
7012 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7015 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PRIMARYPIN
],
7016 { "Primary PIN", "r3.upstreamfield.primarypin",
7017 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7020 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXPIN
],
7021 { "Aux PIN", "r3.upstreamfield.auxpin",
7022 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7025 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ALARMRECORDCOUNT
],
7026 { "Alarm Record Count", "r3.upstreamfield.alarmrecordcount",
7027 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7030 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ALARMRECORD
],
7031 { "Alarm Record", "r3.upstreamfield.alarmrecord",
7032 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7035 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXCTLRVERSION
],
7036 { "Aux Controller Version", "r3.upstreamfield.auxctlrversion",
7037 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7041 { &hf_r3_configitems
,
7042 { "Configuration Item List", "r3.configitems",
7043 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7046 { &hf_r3_configitem
,
7047 { "Configuration Item", "r3.configitem",
7048 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_configitemnames_ext
, 0x0,
7052 { &hf_r3_configfield
,
7053 { "Config Field", "r3.configfield",
7054 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7058 { &hf_r3_configitemlength
,
7059 { "Configuration Item Length", "r3.configitem.length",
7060 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7063 { &hf_r3_configitemtype
,
7064 { "Configuration Item Type", "r3.configitem.type",
7065 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_configtypenames_ext
, 0x0,
7068 { &hf_r3_configitemdata
,
7069 { "Configuration Item Data", "r3.configitem.data",
7070 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7073 { &hf_r3_configitemdata_bool
,
7074 { "Configuration Item Boolean", "r3.configitem.data_boolean",
7075 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7078 { &hf_r3_configitemdata_8
,
7079 { "Configuration Item 8-bit", "r3.configitem.data_8",
7080 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7083 { &hf_r3_configitemdata_16
,
7084 { "Configuration Item 16-bit", "r3.configitem.data_16",
7085 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7088 { &hf_r3_configitemdata_32
,
7089 { "Configuration Item 32-bit", "r3.configitem.data_32",
7090 FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0,
7093 { &hf_r3_configitemdata_string
,
7094 { "Configuration Item String", "r3.configitem.data_string",
7095 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7099 { &hf_r3_timezonearray0
,
7100 { "Timezone 0", "r3.timezone.0",
7101 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000001,
7104 { &hf_r3_timezonearray1
,
7105 { "Timezone 1", "r3.timezone.1",
7106 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000002,
7109 { &hf_r3_timezonearray2
,
7110 { "Timezone 2", "r3.timezone.2",
7111 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000004,
7114 { &hf_r3_timezonearray3
,
7115 { "Timezone 3", "r3.timezone.3",
7116 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000008,
7119 { &hf_r3_timezonearray4
,
7120 { "Timezone 4", "r3.timezone.4",
7121 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000010,
7124 { &hf_r3_timezonearray5
,
7125 { "Timezone 5", "r3.timezone.5",
7126 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000020,
7129 { &hf_r3_timezonearray6
,
7130 { "Timezone 6", "r3.timezone.6",
7131 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000040,
7134 { &hf_r3_timezonearray7
,
7135 { "Timezone 7", "r3.timezone.7",
7136 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000080,
7139 { &hf_r3_timezonearray8
,
7140 { "Timezone 8", "r3.timezone.8",
7141 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000100,
7144 { &hf_r3_timezonearray9
,
7145 { "Timezone 9", "r3.timezone.9",
7146 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000200,
7149 { &hf_r3_timezonearray10
,
7150 { "Timezone 10", "r3.timezone.10",
7151 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000400,
7154 { &hf_r3_timezonearray11
,
7155 { "Timezone 11", "r3.timezone.11",
7156 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000800,
7159 { &hf_r3_timezonearray12
,
7160 { "Timezone 12", "r3.timezone.12",
7161 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00001000,
7164 { &hf_r3_timezonearray13
,
7165 { "Timezone 13", "r3.timezone.13",
7166 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00002000,
7169 { &hf_r3_timezonearray14
,
7170 { "Timezone 14", "r3.timezone.14",
7171 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00004000,
7174 { &hf_r3_timezonearray15
,
7175 { "Timezone 15", "r3.timezone.15",
7176 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00008000,
7179 { &hf_r3_timezonearray16
,
7180 { "Timezone 16", "r3.timezone.16",
7181 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00010000,
7184 { &hf_r3_timezonearray17
,
7185 { "Timezone 17", "r3.timezone.17",
7186 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00020000,
7189 { &hf_r3_timezonearray18
,
7190 { "Timezone 18", "r3.timezone.18",
7191 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00040000,
7194 { &hf_r3_timezonearray19
,
7195 { "Timezone 19", "r3.timezone.19",
7196 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00080000,
7199 { &hf_r3_timezonearray20
,
7200 { "Timezone 20", "r3.timezone.20",
7201 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00100000,
7204 { &hf_r3_timezonearray21
,
7205 { "Timezone 21", "r3.timezone.21",
7206 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00200000,
7209 { &hf_r3_timezonearray22
,
7210 { "Timezone 22", "r3.timezone.22",
7211 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00400000,
7214 { &hf_r3_timezonearray23
,
7215 { "Timezone 23", "r3.timezone.23",
7216 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00800000,
7219 { &hf_r3_timezonearray24
,
7220 { "Timezone 24", "r3.timezone.24",
7221 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x01000000,
7224 { &hf_r3_timezonearray25
,
7225 { "Timezone 25", "r3.timezone.25",
7226 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x02000000,
7229 { &hf_r3_timezonearray26
,
7230 { "Timezone 26", "r3.timezone.26",
7231 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x04000000,
7234 { &hf_r3_timezonearray27
,
7235 { "Timezone 27", "r3.timezone.27",
7236 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x08000000,
7239 { &hf_r3_timezonearray28
,
7240 { "Timezone 28", "r3.timezone.28",
7241 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x10000000,
7244 { &hf_r3_timezonearray29
,
7245 { "Timezone 29", "r3.timezone.29",
7246 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x20000000,
7249 { &hf_r3_timezonearray30
,
7250 { "Timezone 30", "r3.timezone.30",
7251 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x40000000,
7254 { &hf_r3_timezonearray31
,
7255 { "Timezone 31", "r3.timezone.31",
7256 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x80000000,
7260 { &hf_r3_expireon_year
,
7261 { "Expiration Year", "r3.expireon.year",
7262 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7265 { &hf_r3_expireon_month
,
7266 { "Expiration Month", "r3.expireon.month",
7267 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7270 { &hf_r3_expireon_day
,
7271 { "Expiration Day", "r3.expireon.day",
7272 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7276 { &hf_r3_datetime_year
,
7277 { "Date/Time Year", "r3.datetime.year",
7278 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7281 { &hf_r3_datetime_month
,
7282 { "Date/Time Month", "r3.datetime.month",
7283 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7286 { &hf_r3_datetime_day
,
7287 { "Date/Time Day", "r3.datetime.day",
7288 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7291 { &hf_r3_datetime_dow
,
7292 { "Date/Time DOW", "r3.datetime.dow",
7293 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_daynames_ext
, 0x0,
7296 { &hf_r3_datetime_hours
,
7297 { "Date/Time Hours", "r3.datetime.hours",
7298 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7301 { &hf_r3_datetime_minutes
,
7302 { "Date/Time Minutes", "r3.datetime.minutes",
7303 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7306 { &hf_r3_datetime_seconds
,
7307 { "Date/Time Seconds", "r3.datetime.seconds",
7308 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7311 { &hf_r3_datetime_dst
,
7312 { "Date/Time DST", "r3.datetime.dst",
7313 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7317 { &hf_r3_eventlog_recordnumber
,
7318 { "Record Number", "r3.eventlog.recordnumber",
7319 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7322 { &hf_r3_eventlog_year
,
7323 { "Year", "r3.eventlog.year",
7324 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7327 { &hf_r3_eventlog_month
,
7328 { "Month", "r3.eventlog.month",
7329 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7332 { &hf_r3_eventlog_day
,
7333 { "Day", "r3.eventlog.day",
7334 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7337 { &hf_r3_eventlog_hour
,
7338 { "Hours", "r3.eventlog.hours",
7339 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7342 { &hf_r3_eventlog_minute
,
7343 { "Minutes", "r3.eventlog.minutes",
7344 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7347 { &hf_r3_eventlog_second
,
7348 { "Seconds", "r3.eventlog.seconds",
7349 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7352 { &hf_r3_eventlog_usernumber
,
7353 { "User Number", "r3.eventlog.usernumber",
7354 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7357 { &hf_r3_eventlog_event
,
7358 { "ID", "r3.eventlog.id",
7359 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_eventnames_ext
, 0x0,
7363 { &hf_r3_declinedlog_recordnumber
,
7364 { "Record Number", "r3.declinedlog.recordnumber",
7365 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7368 { &hf_r3_declinedlog_year
,
7369 { "Year", "r3.declinedlog.year",
7370 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7373 { &hf_r3_declinedlog_month
,
7374 { "Month", "r3.declinedlog.month",
7375 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7378 { &hf_r3_declinedlog_day
,
7379 { "Day", "r3.declinedlog.day",
7380 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7383 { &hf_r3_declinedlog_hour
,
7384 { "Hours", "r3.declinedlog.hours",
7385 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7388 { &hf_r3_declinedlog_minute
,
7389 { "Minutes", "r3.declinedlog.minutes",
7390 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7393 { &hf_r3_declinedlog_second
,
7394 { "Seconds", "r3.declinedlog.seconds",
7395 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7398 { &hf_r3_declinedlog_usernumber
,
7399 { "User Number", "r3.declinedlog.usernumber",
7400 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7403 { &hf_r3_declinedlog_cred1type
,
7404 { "Credential 1 Type", "r3.declinedlog.cred1type",
7405 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_fieldtypenames_ext
, 0x0,
7408 { &hf_r3_declinedlog_cred2type
,
7409 { "Credential 2 Type", "r3.declinedlog.cred2type",
7410 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_fieldtypenames_ext
, 0x0,
7413 { &hf_r3_declinedlog_cred1
,
7414 { "Credential 1", "r3.declinedlog.cred1",
7415 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7418 { &hf_r3_declinedlog_cred2
,
7419 { "Credential 2", "r3.declinedlog.cred2",
7420 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7424 { &hf_r3_alarmlog_recordnumber
,
7425 { "Record Number", "r3.alarmlog.recordnumber",
7426 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7429 { &hf_r3_alarmlog_year
,
7430 { "Year", "r3.alarmlog.year",
7431 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7434 { &hf_r3_alarmlog_month
,
7435 { "Month", "r3.alarmlog.month",
7436 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7439 { &hf_r3_alarmlog_day
,
7440 { "Day", "r3.alarmlog.day",
7441 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7444 { &hf_r3_alarmlog_hour
,
7445 { "Hours", "r3.alarmlog.hours",
7446 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7449 { &hf_r3_alarmlog_minute
,
7450 { "Minutes", "r3.alarmlog.minutes",
7451 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7454 { &hf_r3_alarmlog_second
,
7455 { "Seconds", "r3.alarmlog.seconds",
7456 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7459 { &hf_r3_alarmlog_id
,
7460 { "ID", "r3.alarmlog.id",
7461 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_alarmidnames_ext
, 0x0,
7464 { &hf_r3_alarmlog_usernumber
,
7465 { "User Number", "r3.alarmlog.usernumber",
7466 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7471 { "Debug Message", "r3.debug",
7472 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7476 { &hf_r3_setdate_year
,
7477 { "Year", "r3.setdate.year",
7478 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7481 { &hf_r3_setdate_month
,
7482 { "Month", "r3.setdate.month",
7483 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7486 { &hf_r3_setdate_day
,
7487 { "Day", "r3.setdate.day",
7488 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7491 { &hf_r3_setdate_dow
,
7492 { "Day-Of-Week", "r3.setdate.dow",
7493 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_daynames_ext
, 0x0,
7496 { &hf_r3_setdate_hours
,
7497 { "Hours", "r3.setdate.hours",
7498 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7501 { &hf_r3_setdate_minutes
,
7502 { "Minutes", "r3.setdate.minutes",
7503 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7506 { &hf_r3_setdate_seconds
,
7507 { "Seconds", "r3.setdate.seconds",
7508 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7512 { &hf_r3_deleteusers
,
7513 { "Delete Users", "r3.deleteusers",
7514 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_deleteusersnames_ext
, 0x0,
7518 { &hf_r3_defineexception_number
,
7519 { "Exception Number", "r3.defineexception.number",
7520 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7523 { &hf_r3_defineexception_startdate_month
,
7524 { "Start Month", "r3.defineexception.start.month",
7525 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7528 { &hf_r3_defineexception_startdate_day
,
7529 { "Start Day", "r3.defineexception.start.day",
7530 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7533 { &hf_r3_defineexception_startdate_hours
,
7534 { "Start Hours", "r3.defineexception.start.hours",
7535 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7538 { &hf_r3_defineexception_startdate_minutes
,
7539 { "Start Minutes", "r3.defineexception.start.minutes",
7540 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7543 { &hf_r3_defineexception_enddate_month
,
7544 { "End Month", "r3.defineexception.end.month",
7545 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7548 { &hf_r3_defineexception_enddate_day
,
7549 { "End Day", "r3.defineexception.end.day",
7550 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7553 { &hf_r3_defineexception_enddate_hours
,
7554 { "End Hours", "r3.defineexception.end.hours",
7555 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7558 { &hf_r3_defineexception_enddate_minutes
,
7559 { "End Minutes", "r3.defineexception.end.minutes",
7560 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7564 { &hf_r3_defineexceptiongroup_number
,
7565 { "Define Exception Group Number", "r3.defineexceptiongroup.number",
7566 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7569 { &hf_r3_defineexceptiongroup_bits
,
7570 { "Define Exception Group Bit Field", "r3.defineexceptiongroup.field",
7571 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7575 { &hf_r3_definecalendar_number
,
7576 { "Define Calendar Number", "r3.definecalendar.number",
7577 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7580 { &hf_r3_definecalendar_bits
,
7581 { "Define Calendar Bit Field", "r3.definecalendar.field",
7582 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7586 { &hf_r3_definetimezone_number
,
7587 { "Timezone Number", "r3.definetimezone.number",
7588 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7591 { &hf_r3_definetimezone_starttime_hours
,
7592 { "Start Hours", "r3.definetimezone.start.hours",
7593 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7596 { &hf_r3_definetimezone_starttime_minutes
,
7597 { "Start Minutes", "r3.definetimezone.start.minutes",
7598 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7601 { &hf_r3_definetimezone_endtime_hours
,
7602 { "End Hours", "r3.definetimezone.end.hours",
7603 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7606 { &hf_r3_definetimezone_endtime_minutes
,
7607 { "End Minutes", "r3.definetimezone.end.minutes",
7608 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7611 { &hf_r3_definetimezone_daymap
,
7612 { "Day Map", "r3.definetimezone.daymap",
7613 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
7616 { &hf_r3_definetimezone_daymap0
,
7617 { "Sunday", "r3.definetimezone.daymap.sunday",
7618 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x01,
7621 { &hf_r3_definetimezone_daymap1
,
7622 { "Monday", "r3.definetimezone.daymap.monday",
7623 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x02,
7626 { &hf_r3_definetimezone_daymap2
,
7627 { "Tuesday", "r3.definetimezone.daymap.tuesday",
7628 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x04,
7631 { &hf_r3_definetimezone_daymap3
,
7632 { "Wednesday", "r3.definetimezone.daymap.wednesday",
7633 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x08,
7636 { &hf_r3_definetimezone_daymap4
,
7637 { "Thursday", "r3.definetimezone.daymap.thursday",
7638 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x10,
7641 { &hf_r3_definetimezone_daymap5
,
7642 { "Friday", "r3.definetimezone.daymap.friday",
7643 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x20,
7646 { &hf_r3_definetimezone_daymap6
,
7647 { "Saturday", "r3.definetimezone.daymap.saturday",
7648 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x40,
7651 { &hf_r3_definetimezone_exceptiongroup
,
7652 { "Exception Group", "r3.definetimezone.exceptiongroup",
7653 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7656 { &hf_r3_definetimezone_mode
,
7657 { "Mode", "r3.definetimezone.mode",
7658 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_timezonemodenames_ext
, 0x0,
7661 { &hf_r3_definetimezone_calendar
,
7662 { "Calendar", "r3.definetimezone.calendar",
7663 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7667 { &hf_r3_rmtauthretry_sequence
,
7668 { "Remote Auth Retry Sequence", "r3.rmtauthretry.sequence",
7669 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7672 { &hf_r3_rmtauthretry_retry
,
7673 { "Remote Auth Retry Mode", "r3.rmtauthretry.mode",
7674 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_rmtauthretry_flags
), 0x0,
7678 { &hf_r3_eventlogdump_starttime_year
,
7679 { "Start Year", "r3.eventlogdump.start.year",
7680 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7683 { &hf_r3_eventlogdump_starttime_month
,
7684 { "Start Month", "r3.eventlogdump.start.month",
7685 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7688 { &hf_r3_eventlogdump_starttime_day
,
7689 { "Start Day", "r3.eventlogdump.start.day",
7690 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7693 { &hf_r3_eventlogdump_starttime_hours
,
7694 { "Start Hours", "r3.eventlogdump.start.hours",
7695 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7698 { &hf_r3_eventlogdump_starttime_minutes
,
7699 { "Start Minutes", "r3.eventlogdump.start.minutes",
7700 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7703 { &hf_r3_eventlogdump_endtime_year
,
7704 { "End Year", "r3.eventlogdump.end.year",
7705 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7708 { &hf_r3_eventlogdump_endtime_month
,
7709 { "End Month", "r3.eventlogdump.end.month",
7710 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7713 { &hf_r3_eventlogdump_endtime_day
,
7714 { "End Day", "r3.eventlogdump.end.day",
7715 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7718 { &hf_r3_eventlogdump_endtime_hours
,
7719 { "End Hours", "r3.eventlogdump.end.hours",
7720 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7723 { &hf_r3_eventlogdump_endtime_minutes
,
7724 { "End Minutes", "r3.eventlogdump.end.minutes",
7725 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7728 { &hf_r3_eventlogdump_user
,
7729 { "Filter User", "r3.eventlogdump.user",
7730 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7734 { &hf_r3_declinedlogdump_starttime_year
,
7735 { "Start Year", "r3.declinedlogdump.start.year",
7736 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7739 { &hf_r3_declinedlogdump_starttime_month
,
7740 { "Start Month", "r3.declinedlogdump.start.month",
7741 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7744 { &hf_r3_declinedlogdump_starttime_day
,
7745 { "Start Day", "r3.declinedlogdump.start.day",
7746 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7749 { &hf_r3_declinedlogdump_starttime_hours
,
7750 { "Start Hours", "r3.declinedlogdump.start.hours",
7751 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7754 { &hf_r3_declinedlogdump_starttime_minutes
,
7755 { "Start Minutes", "r3.declinedlogdump.start.minutes",
7756 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7759 { &hf_r3_declinedlogdump_endtime_year
,
7760 { "End Year", "r3.declinedlogdump.end.year",
7761 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7764 { &hf_r3_declinedlogdump_endtime_month
,
7765 { "End Month", "r3.declinedlogdump.end.month",
7766 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7769 { &hf_r3_declinedlogdump_endtime_day
,
7770 { "End Day", "r3.declinedlogdump.end.day",
7771 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7774 { &hf_r3_declinedlogdump_endtime_hours
,
7775 { "End Hours", "r3.declinedlogdump.end.hours",
7776 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7779 { &hf_r3_declinedlogdump_endtime_minutes
,
7780 { "End Minutes", "r3.declinedlogdump.end.minutes",
7781 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7785 { &hf_r3_alarmlogdump_starttime_year
,
7786 { "Start Year", "r3.alarmlogdump.start.year",
7787 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7790 { &hf_r3_alarmlogdump_starttime_month
,
7791 { "Start Month", "r3.alarmlogdump.start.month",
7792 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7795 { &hf_r3_alarmlogdump_starttime_day
,
7796 { "Start Day", "r3.alarmlogdump.start.day",
7797 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7800 { &hf_r3_alarmlogdump_starttime_hours
,
7801 { "Start Hours", "r3.alarmlogdump.start.hours",
7802 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7805 { &hf_r3_alarmlogdump_starttime_minutes
,
7806 { "Start Minutes", "r3.alarmlogdump.start.minutes",
7807 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7810 { &hf_r3_alarmlogdump_endtime_year
,
7811 { "End Year", "r3.alarmlogdump.end.year",
7812 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7815 { &hf_r3_alarmlogdump_endtime_month
,
7816 { "End Month", "r3.alarmlogdump.end.month",
7817 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7820 { &hf_r3_alarmlogdump_endtime_day
,
7821 { "End Day", "r3.alarmlogdump.end.day",
7822 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7825 { &hf_r3_alarmlogdump_endtime_hours
,
7826 { "End Hours", "r3.alarmlogdump.end.hours",
7827 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7830 { &hf_r3_alarmlogdump_endtime_minutes
,
7831 { "End Minutes", "r3.alarmlogdump.end.minutes",
7832 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7836 { &hf_r3_nvramclearoptions
,
7837 { "NVRAM Clean Options", "r3.nvramclear",
7838 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
7841 { &hf_r3_nvramclearoptions0
,
7842 { "NVRAMCLEAROPTIONS_CFGINSTALLER", "r3.nvramclear.cfginstaller",
7843 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0001,
7846 { &hf_r3_nvramclearoptions1
,
7847 { "NVRAMCLEAROPTIONS_CFGADMIN", "r3.nvramclear.cfgadmin",
7848 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0002,
7851 { &hf_r3_nvramclearoptions2
,
7852 { "NVRAMCLEAROPTIONS_EXCEPTIONS", "r3.nvramclear.exceptions",
7853 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0004,
7856 { &hf_r3_nvramclearoptions3
,
7857 { "NVRAMCLEAROPTIONS_EXCEPTIONGROUPS", "r3.nvramclear.exceptiongroups",
7858 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0008,
7861 { &hf_r3_nvramclearoptions4
,
7862 { "NVRAMCLEAROPTIONS_CALENDARS", "r3.nvramclear.calendars",
7863 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0010,
7866 { &hf_r3_nvramclearoptions5
,
7867 { "NVRAMCLEAROPTIONS_TIMEZONES", "r3.nvramclear.timezones",
7868 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0020,
7871 { &hf_r3_nvramclearoptions6
,
7872 { "NVRAMCLEAROPTIONS_FILTERS", "r3.nvramclear.filters",
7873 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0040,
7876 { &hf_r3_nvramclearoptions7
,
7877 { "NVRAMCLEAROPTIONS_EVENTLOG", "r3.nvramclear.eventlog",
7878 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0080,
7881 { &hf_r3_nvramclearoptions8
,
7882 { "NVRAMCLEAROPTIONS_USERDATA", "r3.nvramclear.userdata",
7883 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0100,
7886 { &hf_r3_nvramclearoptions9
,
7887 { "NVRAMCLEAROPTIONS_DECLINEDLOG", "r3.nvramclear.declinedlog",
7888 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0200,
7891 { &hf_r3_nvramclearoptions10
,
7892 { "NVRAMCLEAROPTIONS_ALARMLOG", "r3.nvramclear.alarmlog",
7893 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0400,
7896 { &hf_r3_nvramclearoptions11
,
7897 { "NVRAMCLEAROPTIONS_LRUCACHE", "r3.nvramclear.lrucache",
7898 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x0800,
7901 { &hf_r3_nvramclearoptions12
,
7902 { "NVRAMCLEAROPTIONS_DBHASH", "r3.nvramclear.dbhash",
7903 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x1000,
7906 { &hf_r3_nvramclearoptions13
,
7907 { "NVRAMCLEAROPTIONS_CFGSYSTEM", "r3.nvramclear.cfgsystem",
7908 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x2000,
7911 { &hf_r3_nvramclearoptions14
,
7912 { "NVRAMCLEAROPTIONS_UNUSED", "r3.nvramclear.unused",
7913 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x4000,
7916 { &hf_r3_nvramclearoptions15
,
7917 { "NVRAMCLEAROPTIONS_USEBACKUP", "r3.nvramclear.usebackup",
7918 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x8000,
7922 { &hf_r3_writeeventlog_user
,
7923 { "User", "r3.writeeventlog.user",
7924 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7927 { &hf_r3_writeeventlog_event
,
7928 { "Event", "r3.writeeventlog.event",
7929 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_eventnames_ext
, 0x0,
7933 { &hf_r3_powertableselection
,
7934 { "Table", "r3.powertableselection",
7935 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_powertablenames_ext
, 0x0,
7939 { &hf_r3_filter_type
,
7940 { "Type", "r3.filter.type",
7941 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_filtertypenames_ext
, 0x0,
7944 { &hf_r3_filter_list
,
7945 { "Event", "r3.filter.event",
7946 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_filtereventnames_ext
, 0x0,
7950 { &hf_r3_alarm_length
,
7951 { "Length", "r3.alarm.length",
7952 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7956 { "ID", "r3.alarm.id",
7957 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_alarmidnames_ext
, 0x0,
7960 { &hf_r3_alarm_state
,
7961 { "State", "r3.alarm.state",
7962 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_enabled_disabled
), 0x0,
7966 /* XXX: start: Originally missing: Best guess */
7967 { &hf_r3_dpac_action
,
7968 { "Dpac Action", "r3.dpac.action",
7969 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7973 { &hf_r3_dpac_waittime
,
7974 { "Dpac Waittime", "r3.dpac.waittime",
7975 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7979 { &hf_r3_dpac_command
,
7980 { "Dpac Command", "r3.dpac.command",
7981 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7985 { &hf_r3_dpacreply_stuff
,
7986 { "Dpac Reply Stuff", "r3.dpacreply.stuff",
7987 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7991 { &hf_r3_dpacreply_length
,
7992 { "Dpac Reply Length", "r3.dpacreply.length",
7993 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7997 { &hf_r3_dpacreply_reply
,
7998 { "Dpac Reply", "r3.dpacreply.reply",
7999 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8002 /* XXX: end: Originally missing --- */
8004 { &hf_r3_mfgfield_length
,
8005 { "Field Length", "r3.mfgfield.length",
8006 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8010 { "Field", "r3.mfgfield.field",
8011 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgfieldnames_ext
, 0x0,
8015 { &hf_r3_mfgfield_data
,
8016 { "Field Data", "r3.mfgfield.data",
8017 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8022 { &hf_r3_mfgsetserialnumber
,
8023 { "Serial Number", "r3.mfgsetserialnumber",
8024 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8027 { &hf_r3_mfgsetcryptkey
,
8028 { "Crypt Key", "r3.mfgsetcryptkey",
8029 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8032 { &hf_r3_mfgdumpnvram
,
8033 { "NVRAM Section", "r3.mfgnvramdump",
8034 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgnvramdumpnames_ext
, 0x0,
8037 { &hf_r3_mfgremoteunlock
,
8038 { "Remote Unlock", "r3.mfgremoteunlock",
8039 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgremoteunlocknames_ext
, 0x0,
8042 { &hf_r3_mfgtestpreserve
,
8043 { "Preserve Mode", "r3.mfgtestpreserve",
8044 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgtestpreservenames_ext
, 0x0,
8049 { "ADC 0", "r3.adc.0",
8050 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8054 { "ADC 1", "r3.adc.1",
8055 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8059 { "ADC 2", "r3.adc.2",
8060 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8064 { "ADC 3", "r3.adc.3",
8065 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8069 { "ADC 4", "r3.adc.4",
8070 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8074 { "ADC 5", "r3.adc.5",
8075 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8079 { "ADC 6", "r3.adc.6",
8080 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8084 { "ADC 7", "r3.adc.7",
8085 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8089 { &hf_r3_hardwareid_board
,
8090 { "Board ID", "r3.hardwareid.board",
8091 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8094 { &hf_r3_hardwareid_cpuid
,
8095 { "CPU ID", "r3.hardwareid.cpuid",
8096 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8099 { &hf_r3_hardwareid_cpurev
,
8100 { "CPU Rev", "r3.hardwareid.cpurev",
8101 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8105 { &hf_r3_testkeypad
,
8106 { "Keypad Char", "r3.test.keypad",
8107 FT_CHAR
, BASE_HEX
, NULL
, 0x0,
8110 { &hf_r3_testmagcard
,
8111 { "Mag Card", "r3.test.magcard",
8112 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8115 { &hf_r3_testproxcard
,
8116 { "Prox Card", "r3.test.proxcard",
8117 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8121 { &hf_r3_nvramdump_record
,
8122 { "Record Number", "r3.nvramdump.record",
8123 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8126 { &hf_r3_nvramdump_length
,
8127 { "Record Length", "r3.nvramdump.length",
8128 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8131 { &hf_r3_nvramdump_data
,
8132 { "Record Data", "r3.nvramdump.data",
8133 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8137 { &hf_r3_nvramdumprle_record
,
8138 { "Record Number", "r3.nvramdumprle.record",
8139 FT_UINT24
, BASE_DEC_HEX
, NULL
, 0x0,
8142 { &hf_r3_nvramdumprle_length
,
8143 { "Record Length", "r3.nvramdumprle.length",
8144 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8147 { &hf_r3_nvramdumprle_data
,
8148 { "Record Data", "r3.nvramdumprle.data",
8149 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8153 { &hf_r3_iopins_lat
,
8154 { "LAT", "r3.iopins.lat",
8155 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8158 { &hf_r3_iopins_port
,
8159 { "PORT", "r3.iopins.port",
8160 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8163 { &hf_r3_iopins_tris
,
8164 { "TRIS", "r3.iopins.tris",
8165 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8169 { &hf_r3_mortisepins_s1
,
8170 { "Mortise Pin S1", "r3.mortisepins.s1",
8171 FT_BOOLEAN
, 8, TFS (&tfs_high_low
), 0x01,
8174 { &hf_r3_mortisepins_s2
,
8175 { "Mortise Pin S2", "r3.mortisepins.s2",
8176 FT_BOOLEAN
, 8, TFS (&tfs_high_low
), 0x02,
8179 { &hf_r3_mortisepins_s3
,
8180 { "Mortise Pin S3", "r3.mortisepins.s3",
8181 FT_BOOLEAN
, 8, TFS (&tfs_high_low
), 0x04,
8184 { &hf_r3_mortisepins_s4
,
8185 { "Mortise Pin S4", "r3.mortisepins.s4",
8186 FT_BOOLEAN
, 8, TFS (&tfs_high_low
), 0x08,
8190 { &hf_r3_checksumresults
,
8191 { "Checksum Results", "r3.checksumresults",
8192 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8195 { &hf_r3_checksumresults_field
,
8196 { "Field", "r3.checksumresults.field",
8197 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, & r3_checksumresultnames_ext
, 0x0,
8200 { &hf_r3_checksumresults_length
,
8201 { "Length", "r3.checksumresults.length",
8202 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8205 { &hf_r3_checksumresults_state
,
8206 { "State", "r3.checksumresults.state",
8207 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_errornoerror_flags
), 0x0,
8211 { &hf_r3_forceoptions_item
,
8212 { "Item", "r3.forceoptions.item",
8213 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_forceitemnames_ext
, 0x0,
8216 { &hf_r3_forceoptions_length
,
8217 { "Length", "r3.forceoptions.length",
8218 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8221 { &hf_r3_forceoptions_state_8
,
8222 { "State", "r3.forceoptions.state",
8223 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8226 { &hf_r3_forceoptions_state_16
,
8227 { "State", "r3.forceoptions.state",
8228 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8231 { &hf_r3_forceoptions_state_24
,
8232 { "State", "r3.forceoptions.state",
8233 FT_UINT24
, BASE_HEX_DEC
, NULL
, 0x0,
8236 { &hf_r3_forceoptions_state_32
,
8237 { "State", "r3.forceoptions.state",
8238 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8242 { &hf_r3_peekpoke_operation
,
8243 { "Operation", "r3.peekpoke.operation",
8244 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_peekpokenames_ext
, 0x0,
8247 { &hf_r3_peekpoke_address
,
8248 { "Address", "r3.peekpoke.address",
8249 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8252 { &hf_r3_peekpoke_length
,
8253 { "Length", "r3.peekpoke.length",
8254 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8257 { &hf_r3_peekpoke_poke8
,
8258 { "8 Bit Value", "r3.peekpoke.poke8",
8259 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8262 { &hf_r3_peekpoke_poke16
,
8263 { "16 Bit Value", "r3.peekpoke.poke16",
8264 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8267 { &hf_r3_peekpoke_poke24
,
8268 { "24 Bit Value", "r3.peekpoke.poke24",
8269 FT_UINT24
, BASE_HEX_DEC
, NULL
, 0x0,
8272 { &hf_r3_peekpoke_poke32
,
8273 { "32 Bit Value", "r3.peekpoke.poke32",
8274 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8277 { &hf_r3_peekpoke_pokestring
,
8278 { "String Value", "r3.peekpoke.pokestring",
8279 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8283 { &hf_r3_firmwaredownload_length
,
8284 { "Length", "r3.firmwaredownload.length",
8285 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8288 { &hf_r3_firmwaredownload_record
,
8289 { "Record Number", "r3.firmwaredownload.record",
8290 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8293 { &hf_r3_firmwaredownload_action
,
8294 { "Action", "r3.firmwaredownload.action",
8295 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_downloadfirmwarenames_ext
, 0x0,
8298 { &hf_r3_firmwaredownload_timeout
,
8299 { "Timeout", "r3.firmwaredownload.timeout",
8300 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8303 { &hf_r3_firmwaredownload_nvram
,
8304 { "NVRAM", "r3.firmwaredownload.nvram",
8305 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8308 { &hf_r3_firmwaredownload_address
,
8309 { "Address", "r3.firmwaredownload.address",
8310 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8313 { &hf_r3_firmwaredownload_bytes
,
8314 { "Bytes", "r3.firmwaredownload.bytes",
8315 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8318 { &hf_r3_firmwaredownload_data
,
8319 { "Data", "r3.firmwaredownload.data",
8320 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8323 { &hf_r3_firmwaredownload_crc
,
8324 { "CRC", "r3.firmwaredownload.crc",
8325 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8328 { &hf_r3_firmwaredownload_crc_bad
,
8329 { "Bad CRC", "r3.firmwaredownload.crc_bad",
8330 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8334 { &hf_r3_nvramchecksumvalue
,
8335 { "Value", "r3.nvramchecksum.value",
8336 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8339 { &hf_r3_nvramchecksumvalue_fixup
,
8340 { "Fixup", "r3.nvramchecksum.fixup",
8341 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8345 { &hf_r3_capabilities
,
8346 { "Capability", "r3.capabilities",
8347 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8350 { &hf_r3_capabilities_length
,
8351 { "Length", "r3.capabilities.length",
8352 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8355 { &hf_r3_capabilities_type
,
8356 { "Type", "r3.capabilities.type",
8357 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_capabilitiesnames_ext
, 0x0,
8360 { &hf_r3_capabilities_value
,
8361 { "Value", "r3.capabilities.value",
8362 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8367 { "Lock State", "r3.lockstate",
8368 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
8372 { &hf_r3_lockstate_passage
,
8373 { "Passage", "r3.lockstate.passage",
8374 FT_BOOLEAN
, 24, NULL
, 0x000001,
8377 { &hf_r3_lockstate_panic
,
8378 { "Panic", "r3.lockstate.panic",
8379 FT_BOOLEAN
, 24, NULL
, 0x000002,
8382 { &hf_r3_lockstate_lockout
,
8383 { "Lockout", "r3.lockstate.lockout",
8384 FT_BOOLEAN
, 24, NULL
, 0x000004,
8387 { &hf_r3_lockstate_relock
,
8388 { "Relock", "r3.lockstate.relock",
8389 FT_BOOLEAN
, 24, NULL
, 0x000008,
8392 { &hf_r3_lockstate_autoopen
,
8393 { "Auto Open", "r3.lockstate.autoopen",
8394 FT_BOOLEAN
, 24, NULL
, 0x000010,
8397 { &hf_r3_lockstate_nextauto
,
8398 { "Next Auto", "r3.lockstate.nextauto",
8399 FT_BOOLEAN
, 24, NULL
, 0x000020,
8402 { &hf_r3_lockstate_lockstate
,
8403 { "Lock State", "r3.lockstate.lockstate",
8404 FT_BOOLEAN
, 24, NULL
, 0x000040,
8407 { &hf_r3_lockstate_wantstate
,
8408 { "Want State", "r3.lockstate.wantstate",
8409 FT_BOOLEAN
, 24, NULL
, 0x000080,
8412 { &hf_r3_lockstate_remote
,
8413 { "Remote", "r3.lockstate.remote",
8414 FT_BOOLEAN
, 24, NULL
, 0x000100,
8417 { &hf_r3_lockstate_update
,
8418 { "Update", "r3.lockstate.update",
8419 FT_BOOLEAN
, 24, NULL
, 0x000200,
8422 { &hf_r3_lockstate_exceptionspresent
,
8423 { "Exceptions Present", "r3.lockstate.exceptionspresent",
8424 FT_BOOLEAN
, 24, NULL
, 0x000400,
8427 { &hf_r3_lockstate_exceptionsactive
,
8428 { "Exceptions Active", "r3.lockstate.exceptionsactive",
8429 FT_BOOLEAN
, 24, NULL
, 0x000800,
8432 { &hf_r3_lockstate_timezonespresent
,
8433 { "Timezones Presents", "r3.lockstate.timezonespresent",
8434 FT_BOOLEAN
, 24, NULL
, 0x001000,
8437 { &hf_r3_lockstate_timezonesactive
,
8438 { "Timezones Active", "r3.lockstate.timezonesactive",
8439 FT_BOOLEAN
, 24, NULL
, 0x002000,
8442 { &hf_r3_lockstate_autounlockspresent
,
8443 { "Auto Unlocks Present", "r3.lockstate.autounlockspresent",
8444 FT_BOOLEAN
, 24, NULL
, 0x004000,
8447 { &hf_r3_lockstate_autounlocksactive
,
8448 { "Auto Unlocks Active", "r3.lockstate.autounlocksactive",
8449 FT_BOOLEAN
, 24, NULL
, 0x008000,
8452 { &hf_r3_lockstate_uapmspresent
,
8453 { "UAPMs Present", "r3.lockstate.uapmspresent",
8454 FT_BOOLEAN
, 24, NULL
, 0x010000,
8457 { &hf_r3_lockstate_uapmsactive
,
8458 { "UAPMs Active", "r3.lockstate.uapmsactive",
8459 FT_BOOLEAN
, 24, NULL
, 0x020000,
8462 { &hf_r3_lockstate_uapmrelockspresent
,
8463 { "UAPM Relocks Present", "r3.lockstate.uapmrelockspresent",
8464 FT_BOOLEAN
, 24, NULL
, 0x040000,
8467 { &hf_r3_lockstate_uapmreslocksactive
,
8468 { "UAPM Relocks Active", "r3.lockstate.uapmreslocksactive",
8469 FT_BOOLEAN
, 24, NULL
, 0x080000,
8472 { &hf_r3_lockstate_nvramprotect
,
8473 { "NVRAM Protect", "r3.lockstate.nvramprotect",
8474 FT_BOOLEAN
, 24, NULL
, 0x100000,
8477 { &hf_r3_lockstate_nvramchecksum
,
8478 { "MVRAM Checksum", "r3.lockstate.nvramchecksum",
8479 FT_BOOLEAN
, 24, NULL
, 0x200000,
8484 { &hf_r3_mortisestatelog
,
8485 { "Mortise State Log", "r3.mortisestatelog",
8486 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8490 { &hf_r3_mortisestatelog_pointer
,
8491 { "Event Pointer", "r3.mortisestatelog.pointer",
8492 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8495 { &hf_r3_mortisestatelog_mortisetype
,
8496 { "Mortise Type", "r3.mortisestatelog.mortisetype",
8497 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_mortisetypenames_ext
, 0x0,
8500 { &hf_r3_mortisestatelog_waiting
,
8501 { "Waiting For Door Closed", "r3.mortisestatelog.waiting",
8502 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x00,
8505 { &hf_r3_mortisestatelog_state
,
8506 { "State", "r3.mortisestatelog.state",
8507 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8510 { &hf_r3_mortisestatelog_last
,
8511 { "Last State", "r3.mortisestatelog.laststate",
8512 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8515 { &hf_r3_mortisestatelog_event
,
8516 { "Event", "r3.mortisestatelog.event",
8517 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_mortiseeventnames_ext
, 0x0,
8521 { &hf_r3_timerchain_newtick
,
8522 { "New Tick", "r3.timerchain.newtick",
8523 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8526 { &hf_r3_timerchain_currentboundary
,
8527 { "Current Boundary", "r3.timerchain.currentboundary",
8528 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8531 { &hf_r3_timerchain_tasktag
,
8532 { "Task Tag", "r3.timerchain.tasktag",
8533 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8536 { &hf_r3_timerchain_address
,
8537 { "Address", "r3.timerchain.address",
8538 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8541 { &hf_r3_timerchain_reload
,
8542 { "Reload", "r3.timerchain.reload",
8543 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8546 { &hf_r3_timerchain_boundary
,
8547 { "Boundary", "r3.timerchain.boundary",
8548 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8551 { &hf_r3_timerchain_count
,
8552 { "Count", "r3.timerchain.count",
8553 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8556 { &hf_r3_timerchain_flags
,
8557 { "Flags", "r3.timerchain.flags",
8558 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8562 { &hf_r3_taskflags_taskid
,
8563 { "Task ID", "r3.taskflags.taskid",
8564 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8567 { &hf_r3_taskflags_flags
,
8568 { "Flags", "r3.taskflags.flags",
8569 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8573 { &hf_r3_checkpointlog_entryptr
,
8574 { "Entry Pointer", "r3.checkpointlog.entrypointer",
8575 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8578 { &hf_r3_checkpointlog_rcon
,
8579 { "RCON", "r3.checkpointlog.rcon",
8580 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8583 { &hf_r3_checkpointlog_checkpoint
,
8584 { "Checkpoint", "r3.checkpointlog.checkpoint",
8585 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8589 { &hf_r3_cpuregisters_intcon
,
8590 { "INTCON", "r3.cpuregisters.intcon",
8591 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8594 { &hf_r3_cpuregisters_intcon2
,
8595 { "INTCON2", "r3.cpuregisters.intcon2",
8596 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8599 { &hf_r3_cpuregisters_intcon3
,
8600 { "INTCON3", "r3.cpuregisters.intcon3",
8601 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8604 { &hf_r3_cpuregisters_pir1
,
8605 { "PIR1", "r3.cpuregisters.pir1",
8606 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8609 { &hf_r3_cpuregisters_pir2
,
8610 { "PIR2", "r3.cpuregisters.pir2",
8611 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8614 { &hf_r3_cpuregisters_pir3
,
8615 { "PIR3", "r3.cpuregisters.pir3",
8616 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8619 { &hf_r3_cpuregisters_pie1
,
8620 { "PIE1", "r3.cpuregisters.pie1",
8621 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8624 { &hf_r3_cpuregisters_pie2
,
8625 { "PIE2", "r3.cpuregisters.pie2",
8626 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8629 { &hf_r3_cpuregisters_pie3
,
8630 { "PIE3", "r3.cpuregisters.pie3",
8631 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8634 { &hf_r3_cpuregisters_ipr1
,
8635 { "IPR1", "r3.cpuregisters.ipr1",
8636 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8639 { &hf_r3_cpuregisters_ipr2
,
8640 { "IPR2", "r3.cpuregisters.ipr2",
8641 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8644 { &hf_r3_cpuregisters_ipr3
,
8645 { "IPR3", "r3.cpuregisters.ipr3",
8646 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8649 { &hf_r3_cpuregisters_rcon
,
8650 { "RCON", "r3.cpuregisters.rcon",
8651 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8654 { &hf_r3_cpuregisters_osccon
,
8655 { "OSCCON", "r3.cpuregisters.osccon",
8656 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8659 { &hf_r3_cpuregisters_rcsta
,
8660 { "RCSTA", "r3.cpuregisters.rcsta",
8661 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8664 { &hf_r3_cpuregisters_txsta
,
8665 { "TXSTA", "r3.cpuregisters.txsta",
8666 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8669 { &hf_r3_cpuregisters_rcsta2
,
8670 { "RCSTA2", "r3.cpuregisters.rcsta2",
8671 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8674 { &hf_r3_cpuregisters_txsta2
,
8675 { "TXSTA2", "r3.cpuregisters.txsta2",
8676 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8679 { &hf_r3_cpuregisters_wdtcon
,
8680 { "WDTCON", "r3.cpuregisters.wdtcon",
8681 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8685 { &hf_r3_cpuregisters_intcon_rbif
,
8686 { "INTCON.RBIF", "r3.cpuregisters.intcon.rbif",
8687 FT_BOOLEAN
, 8, NULL
, 0x01,
8690 { &hf_r3_cpuregisters_intcon_int0if
,
8691 { "INTCON.INT0IF", "r3.cpuregisters.intcon.int0if",
8692 FT_BOOLEAN
, 8, NULL
, 0x02,
8695 { &hf_r3_cpuregisters_intcon_tmr0if
,
8696 { "INTCON.TMR0IF", "r3.cpuregisters.intcon.tmr0if",
8697 FT_BOOLEAN
, 8, NULL
, 0x04,
8700 { &hf_r3_cpuregisters_intcon_rbie
,
8701 { "INTCON.RBIE", "r3.cpuregisters.intcon.rbie",
8702 FT_BOOLEAN
, 8, NULL
, 0x08,
8705 { &hf_r3_cpuregisters_intcon_int0ie
,
8706 { "INTCON.INT0IE", "r3.cpuregisters.intcon.int0ie",
8707 FT_BOOLEAN
, 8, NULL
, 0x10,
8710 { &hf_r3_cpuregisters_intcon_tmr0ie
,
8711 { "INTCON.TMR0IE", "r3.cpuregisters.intcon.tmr0ie",
8712 FT_BOOLEAN
, 8, NULL
, 0x20,
8715 { &hf_r3_cpuregisters_intcon_giel
,
8716 { "INTCON.GIEL", "r3.cpuregisters.intcon.giel",
8717 FT_BOOLEAN
, 8, NULL
, 0x40,
8720 { &hf_r3_cpuregisters_intcon_gieh
,
8721 { "INTCON.GIEH", "r3.cpuregisters.intcon.gieh",
8722 FT_BOOLEAN
, 8, NULL
, 0x80,
8725 { &hf_r3_cpuregisters_intcon2_rbip
,
8726 { "INTCON2.RBIP", "r3_cpuregisters_intcon2_rbip",
8727 FT_BOOLEAN
, 8, NULL
, 0x01,
8730 { &hf_r3_cpuregisters_intcon2_int3ip
,
8731 { "INTCON2.INT3IP", "r3_cpuregisters_intcon2_int3ip",
8732 FT_BOOLEAN
, 8, NULL
, 0x02,
8735 { &hf_r3_cpuregisters_intcon2_tmr0ip
,
8736 { "INTCON2.TMR0IP", "r3_cpuregisters_intcon2_tmr0ip",
8737 FT_BOOLEAN
, 8, NULL
, 0x04,
8740 { &hf_r3_cpuregisters_intcon2_intedg3
,
8741 { "INTCON2.INTEDG3", "r3_cpuregisters_intcon2_intedg3",
8742 FT_BOOLEAN
, 8, NULL
, 0x08,
8745 { &hf_r3_cpuregisters_intcon2_intedg2
,
8746 { "INTCON2.INTEDG2", "r3_cpuregisters_intcon2_intedg2",
8747 FT_BOOLEAN
, 8, NULL
, 0x10,
8750 { &hf_r3_cpuregisters_intcon2_intedg1
,
8751 { "INTCON2.INTEDG1", "r3_cpuregisters_intcon2_intedg1",
8752 FT_BOOLEAN
, 8, NULL
, 0x20,
8755 { &hf_r3_cpuregisters_intcon2_intedg0
,
8756 { "INTCON2.INTEDG0", "r3_cpuregisters_intcon2_intedg0",
8757 FT_BOOLEAN
, 8, NULL
, 0x40,
8760 { &hf_r3_cpuregisters_intcon2_rbpu
,
8761 { "INTCON2.RBPU", "r3_cpuregisters_intcon2_rbpu",
8762 FT_BOOLEAN
, 8, NULL
, 0x80,
8765 { &hf_r3_cpuregisters_intcon3_int1if
,
8766 { "INTCON3.INT1IF", "r3.cpuregisters.intcon3.int1if",
8767 FT_BOOLEAN
, 8, NULL
, 0x01,
8770 { &hf_r3_cpuregisters_intcon3_int2if
,
8771 { "INTCON3.INT2IF", "r3.cpuregisters.intcon3.int2if",
8772 FT_BOOLEAN
, 8, NULL
, 0x02,
8775 { &hf_r3_cpuregisters_intcon3_int3if
,
8776 { "INTCON3.INT3IF", "r3.cpuregisters.intcon3.int3if",
8777 FT_BOOLEAN
, 8, NULL
, 0x04,
8780 { &hf_r3_cpuregisters_intcon3_int1ie
,
8781 { "INTCON3.INT1IE", "r3.cpuregisters.intcon3.int1ie",
8782 FT_BOOLEAN
, 8, NULL
, 0x08,
8785 { &hf_r3_cpuregisters_intcon3_int2ie
,
8786 { "INTCON3.INT2IE", "r3.cpuregisters.intcon3.int2ie",
8787 FT_BOOLEAN
, 8, NULL
, 0x10,
8790 { &hf_r3_cpuregisters_intcon3_int3ie
,
8791 { "INTCON3.INT3IE", "r3.cpuregisters.intcon3.int3ie",
8792 FT_BOOLEAN
, 8, NULL
, 0x20,
8795 { &hf_r3_cpuregisters_intcon3_int1ip
,
8796 { "INTCON3.INT1IP", "r3.cpuregisters.intcon3.int1ip",
8797 FT_BOOLEAN
, 8, NULL
, 0x40,
8800 { &hf_r3_cpuregisters_intcon3_int2ip
,
8801 { "INTCON3.INT2IP", "r3.cpuregisters.intcon3.int2ip",
8802 FT_BOOLEAN
, 8, NULL
, 0x80,
8805 { &hf_r3_cpuregisters_pir1_tmr1if
,
8806 { "PIR1.TMR1IF", "r3.cpuregisters.pir1.tmr1if",
8807 FT_BOOLEAN
, 8, NULL
, 0x01,
8810 { &hf_r3_cpuregisters_pir1_tmr2if
,
8811 { "PIR1.TMR2IF", "r3.cpuregisters.pir1.tmr2if",
8812 FT_BOOLEAN
, 8, NULL
, 0x02,
8815 { &hf_r3_cpuregisters_pir1_ccp1if
,
8816 { "PIR1.CCP1IF", "r3.cpuregisters.pir1.ccp1if",
8817 FT_BOOLEAN
, 8, NULL
, 0x04,
8820 { &hf_r3_cpuregisters_pir1_ssp1if
,
8821 { "PIR1.SSP1IF", "r3.cpuregisters.pir1.ssp1if",
8822 FT_BOOLEAN
, 8, NULL
, 0x08,
8825 { &hf_r3_cpuregisters_pir1_tx1if
,
8826 { "PIR1.TX1IF", "r3.cpuregisters.pir1.tx1if",
8827 FT_BOOLEAN
, 8, NULL
, 0x10,
8830 { &hf_r3_cpuregisters_pir1_rc1if
,
8831 { "PIR1.RC1IF", "r3.cpuregisters.pir1.rc1if",
8832 FT_BOOLEAN
, 8, NULL
, 0x20,
8835 { &hf_r3_cpuregisters_pir1_adif
,
8836 { "PIR1.ADIF", "r3.cpuregisters.pir1.adif",
8837 FT_BOOLEAN
, 8, NULL
, 0x40,
8840 { &hf_r3_cpuregisters_pir1_pspif
,
8841 { "PIR1.PSPIF", "r3.cpuregisters.pir1.pspif",
8842 FT_BOOLEAN
, 8, NULL
, 0x80,
8845 { &hf_r3_cpuregisters_pir2_ccp2if
,
8846 { "PIR2.CCP2IF", "r3.cpuregisters.pir2.ccp2if",
8847 FT_BOOLEAN
, 8, NULL
, 0x01,
8850 { &hf_r3_cpuregisters_pir2_tmr3if
,
8851 { "PIR2.TMR3IF", "r3.cpuregisters.pir2.tmr3if",
8852 FT_BOOLEAN
, 8, NULL
, 0x02,
8855 { &hf_r3_cpuregisters_pir2_hlvdif
,
8856 { "PIR2.HLVDIF", "r3.cpuregisters.pir2.hlvdif",
8857 FT_BOOLEAN
, 8, NULL
, 0x04,
8860 { &hf_r3_cpuregisters_pir2_bcl1if
,
8861 { "PIR2.BCL1IF", "r3.cpuregisters.pir2.bcl1if",
8862 FT_BOOLEAN
, 8, NULL
, 0x08,
8865 { &hf_r3_cpuregisters_pir2_eeif
,
8866 { "PIR2.EEIF", "r3.cpuregisters.pir2.eeif",
8867 FT_BOOLEAN
, 8, NULL
, 0x10,
8870 { &hf_r3_cpuregisters_pir2_unused5
,
8871 { "PIR2.UNUSED5", "r3.cpuregisters.pir2.unused5",
8872 FT_BOOLEAN
, 8, NULL
, 0x20,
8875 { &hf_r3_cpuregisters_pir2_cmif
,
8876 { "PIR2.CMIF", "r3.cpuregisters.pir2.cmif",
8877 FT_BOOLEAN
, 8, NULL
, 0x40,
8880 { &hf_r3_cpuregisters_pir2_oscfif
,
8881 { "PIR2.OSCFIF", "r3.cpuregisters.pir2.oscfif",
8882 FT_BOOLEAN
, 8, NULL
, 0x80,
8885 { &hf_r3_cpuregisters_pir3_ccp3if
,
8886 { "PIR3.CCP3IF", "r3.cpuregisters.pir3.ccp3if",
8887 FT_BOOLEAN
, 8, NULL
, 0x01,
8890 { &hf_r3_cpuregisters_pir3_ccp4if
,
8891 { "PIR3.CCP4IF", "r3.cpuregisters.pir3.ccp4if",
8892 FT_BOOLEAN
, 8, NULL
, 0x02,
8895 { &hf_r3_cpuregisters_pir3_ccp5if
,
8896 { "PIR3.CCP5IF", "r3.cpuregisters.pir3.ccp5if",
8897 FT_BOOLEAN
, 8, NULL
, 0x04,
8900 { &hf_r3_cpuregisters_pir3_tmr4if
,
8901 { "PIR3.TMR4IF", "r3.cpuregisters.pir3.tmr4if",
8902 FT_BOOLEAN
, 8, NULL
, 0x08,
8905 { &hf_r3_cpuregisters_pir3_tx2if
,
8906 { "PIR3.TX2IF", "r3.cpuregisters.pir3.tx2if",
8907 FT_BOOLEAN
, 8, NULL
, 0x10,
8910 { &hf_r3_cpuregisters_pir3_rc2if
,
8911 { "PIR3.RC2IF", "r3.cpuregisters.pir3.rc2if",
8912 FT_BOOLEAN
, 8, NULL
, 0x20,
8915 { &hf_r3_cpuregisters_pir3_bcl2if
,
8916 { "PIR3.BCL2IF", "r3.cpuregisters.pir3.bcl2if",
8917 FT_BOOLEAN
, 8, NULL
, 0x40,
8920 { &hf_r3_cpuregisters_pir3_ssp2if
,
8921 { "PIR3.SSP2IF", "r3.cpuregisters.pir3.ssp2if",
8922 FT_BOOLEAN
, 8, NULL
, 0x80,
8925 { &hf_r3_cpuregisters_pie1_tmr1ie
,
8926 { "PIE1.TMR1IE", "r3.cpuregisters.pie1.tmr1ie",
8927 FT_BOOLEAN
, 8, NULL
, 0x01,
8930 { &hf_r3_cpuregisters_pie1_tmr2ie
,
8931 { "PIE1.TMR2IE", "r3.cpuregisters.pie1.tmr2ie",
8932 FT_BOOLEAN
, 8, NULL
, 0x02,
8935 { &hf_r3_cpuregisters_pie1_ccp1ie
,
8936 { "PIE1.CCP1IE", "r3.cpuregisters.pie1.ccp1ie",
8937 FT_BOOLEAN
, 8, NULL
, 0x04,
8940 { &hf_r3_cpuregisters_pie1_ssp1ie
,
8941 { "PIE1.SSP1IE", "r3.cpuregisters.pie1.ssp1ie",
8942 FT_BOOLEAN
, 8, NULL
, 0x08,
8945 { &hf_r3_cpuregisters_pie1_tx1ie
,
8946 { "PIE1.TX1IE", "r3.cpuregisters.pie1.tx1ie",
8947 FT_BOOLEAN
, 8, NULL
, 0x10,
8950 { &hf_r3_cpuregisters_pie1_rc1ie
,
8951 { "PIE1.RC1IE", "r3.cpuregisters.pie1.rc1ie",
8952 FT_BOOLEAN
, 8, NULL
, 0x20,
8955 { &hf_r3_cpuregisters_pie1_adie
,
8956 { "PIE1.ADIE", "r3.cpuregisters.pie1.adie",
8957 FT_BOOLEAN
, 8, NULL
, 0x40,
8960 { &hf_r3_cpuregisters_pie1_pspie
,
8961 { "PIE1.PSPIE", "r3.cpuregisters.pie1.pspie",
8962 FT_BOOLEAN
, 8, NULL
, 0x80,
8965 { &hf_r3_cpuregisters_pie2_oscfie
,
8966 { "PIE2.OSCFIE", "r3.cpuregisters.pie2.oscfie",
8967 FT_BOOLEAN
, 8, NULL
, 0x01,
8970 { &hf_r3_cpuregisters_pie2_cmie
,
8971 { "PIE2.CMIE", "r3.cpuregisters.pie2.cmie",
8972 FT_BOOLEAN
, 8, NULL
, 0x02,
8975 { &hf_r3_cpuregisters_pie2_unused2
,
8976 { "PIE2.UNUSED2", "r3.cpuregisters.pie2.unused2",
8977 FT_BOOLEAN
, 8, NULL
, 0x04,
8980 { &hf_r3_cpuregisters_pie2_eeie
,
8981 { "PIE2.EEIE", "r3.cpuregisters.pie2.eeie",
8982 FT_BOOLEAN
, 8, NULL
, 0x08,
8985 { &hf_r3_cpuregisters_pie2_bcl1ie
,
8986 { "PIE2.BCL1IE", "r3.cpuregisters.pie2.bcl1ie",
8987 FT_BOOLEAN
, 8, NULL
, 0x10,
8990 { &hf_r3_cpuregisters_pie2_hlvdie
,
8991 { "PIE2.HLVDIE", "r3.cpuregisters.pie2.hlvdie",
8992 FT_BOOLEAN
, 8, NULL
, 0x20,
8995 { &hf_r3_cpuregisters_pie2_tmr3ie
,
8996 { "PIE2.TMR3IE", "r3.cpuregisters.pie2.tmr3ie",
8997 FT_BOOLEAN
, 8, NULL
, 0x40,
9000 { &hf_r3_cpuregisters_pie2_ccp2ie
,
9001 { "PIE2.CCP2IE", "r3.cpuregisters.pie2.ccp2ie",
9002 FT_BOOLEAN
, 8, NULL
, 0x80,
9005 { &hf_r3_cpuregisters_pie3_ccp3ie
,
9006 { "PIE3.CCP3IE", "r3.cpuregisters.pie3.ccp3ie",
9007 FT_BOOLEAN
, 8, NULL
, 0x01,
9010 { &hf_r3_cpuregisters_pie3_ccp4ie
,
9011 { "PIE3.CCP4IE", "r3.cpuregisters.pie3.ccp4ie",
9012 FT_BOOLEAN
, 8, NULL
, 0x02,
9015 { &hf_r3_cpuregisters_pie3_ccp5ie
,
9016 { "PIE3.CCP5IE", "r3.cpuregisters.pie3.ccp5ie",
9017 FT_BOOLEAN
, 8, NULL
, 0x04,
9020 { &hf_r3_cpuregisters_pie3_tmr4ie
,
9021 { "PIE3.TMR4IE", "r3.cpuregisters.pie3.tmr4ie",
9022 FT_BOOLEAN
, 8, NULL
, 0x08,
9025 { &hf_r3_cpuregisters_pie3_tx2ie
,
9026 { "PIE3.TX2IE", "r3.cpuregisters.pie3.tx2ie",
9027 FT_BOOLEAN
, 8, NULL
, 0x10,
9030 { &hf_r3_cpuregisters_pie3_rc2ie
,
9031 { "PIE3.RC2IE", "r3.cpuregisters.pie3.rc2ie",
9032 FT_BOOLEAN
, 8, NULL
, 0x20,
9035 { &hf_r3_cpuregisters_pie3_bcl2ie
,
9036 { "PIE3.BCL2IE", "r3.cpuregisters.pie3.bcl2ie",
9037 FT_BOOLEAN
, 8, NULL
, 0x40,
9040 { &hf_r3_cpuregisters_pie3_ssp2ie
,
9041 { "PIE3.SSP2IE", "r3.cpuregisters.pie3.ssp2ie",
9042 FT_BOOLEAN
, 8, NULL
, 0x80,
9045 { &hf_r3_cpuregisters_ipr1_tmr1ip
,
9046 { "IPR1.TMR1IP", "r3.cpuregisters.ipr1.tmr1ip",
9047 FT_BOOLEAN
, 8, NULL
, 0x01,
9050 { &hf_r3_cpuregisters_ipr1_tmr2ip
,
9051 { "IPR1.TMR2IP", "r3.cpuregisters.ipr1.tmr2ip",
9052 FT_BOOLEAN
, 8, NULL
, 0x02,
9055 { &hf_r3_cpuregisters_ipr1_ccp1ip
,
9056 { "IPR1.CCP1IP", "r3.cpuregisters.ipr1.ccp1ip",
9057 FT_BOOLEAN
, 8, NULL
, 0x04,
9060 { &hf_r3_cpuregisters_ipr1_ssp1ip
,
9061 { "IPR1.SSP1IP", "r3.cpuregisters.ipr1.ssp1ip",
9062 FT_BOOLEAN
, 8, NULL
, 0x08,
9065 { &hf_r3_cpuregisters_ipr1_tx1ip
,
9066 { "IPR1.TX1IP", "r3.cpuregisters.ipr1.tx1ip",
9067 FT_BOOLEAN
, 8, NULL
, 0x10,
9070 { &hf_r3_cpuregisters_ipr1_rc1ip
,
9071 { "IPR1.RC1IP", "r3.cpuregisters.ipr1.rc1ip",
9072 FT_BOOLEAN
, 8, NULL
, 0x20,
9075 { &hf_r3_cpuregisters_ipr1_adip
,
9076 { "IPR1.ADIP", "r3.cpuregisters.ipr1.adip",
9077 FT_BOOLEAN
, 8, NULL
, 0x40,
9080 { &hf_r3_cpuregisters_ipr1_pspip
,
9081 { "IPR1.PSPIP", "r3.cpuregisters.ipr1.pspip",
9082 FT_BOOLEAN
, 8, NULL
, 0x80,
9085 { &hf_r3_cpuregisters_ipr2_ccp2ip
,
9086 { "IPR2.CCP2IP", "r3.cpuregisters.ipr2.ccp2ip",
9087 FT_BOOLEAN
, 8, NULL
, 0x01,
9090 { &hf_r3_cpuregisters_ipr2_tmr3ip
,
9091 { "IPR2.TMR3IP", "r3.cpuregisters.ipr2.tmr3ip",
9092 FT_BOOLEAN
, 8, NULL
, 0x02,
9095 { &hf_r3_cpuregisters_ipr2_hlvdip
,
9096 { "IPR2.HLVDIP", "r3.cpuregisters.ipr2.hlvdip",
9097 FT_BOOLEAN
, 8, NULL
, 0x04,
9100 { &hf_r3_cpuregisters_ipr2_bcl1ip
,
9101 { "IPR2.BCL1IP", "r3.cpuregisters.ipr2.bcl1ip",
9102 FT_BOOLEAN
, 8, NULL
, 0x08,
9105 { &hf_r3_cpuregisters_ipr2_eeip
,
9106 { "IPR2.EEIP", "r3.cpuregisters.ipr2.eeip",
9107 FT_BOOLEAN
, 8, NULL
, 0x10,
9110 { &hf_r3_cpuregisters_ipr2_unused5
,
9111 { "IPR2.UNUSED5", "r3.cpuregisters.ipr2.unused5",
9112 FT_BOOLEAN
, 8, NULL
, 0x20,
9115 { &hf_r3_cpuregisters_ipr2_cmip
,
9116 { "IPR2.CMIP", "r3.cpuregisters.ipr2.cmip",
9117 FT_BOOLEAN
, 8, NULL
, 0x40,
9120 { &hf_r3_cpuregisters_ipr2_oscfip
,
9121 { "IPR2.OSCFIP", "r3.cpuregisters.ipr2.oscfip",
9122 FT_BOOLEAN
, 8, NULL
, 0x80,
9125 { &hf_r3_cpuregisters_ipr3_ccp2ip
,
9126 { "IPR3.CCP2IP", "r3.cpuregisters.ipr3.ccp2ip",
9127 FT_BOOLEAN
, 8, NULL
, 0x01,
9130 { &hf_r3_cpuregisters_ipr3_ccp4ip
,
9131 { "IPR3.CCP4IP", "r3.cpuregisters.ipr3.ccp4ip",
9132 FT_BOOLEAN
, 8, NULL
, 0x02,
9135 { &hf_r3_cpuregisters_ipr3_ccp5ip
,
9136 { "IPR3.CCP5IP", "r3.cpuregisters.ipr3.ccp5ip",
9137 FT_BOOLEAN
, 8, NULL
, 0x04,
9140 { &hf_r3_cpuregisters_ipr3_tmr4ip
,
9141 { "IPR3.TMR4IP", "r3.cpuregisters.ipr3.tmr4ip",
9142 FT_BOOLEAN
, 8, NULL
, 0x08,
9145 { &hf_r3_cpuregisters_ipr3_tx2ip
,
9146 { "IPR3.TX2IP", "r3.cpuregisters.ipr3.tx2ip",
9147 FT_BOOLEAN
, 8, NULL
, 0x10,
9150 { &hf_r3_cpuregisters_ipr3_rc2ip
,
9151 { "IPR3.RC2IP", "r3.cpuregisters.ipr3.rc2ip",
9152 FT_BOOLEAN
, 8, NULL
, 0x20,
9155 { &hf_r3_cpuregisters_ipr3_bcl2ip
,
9156 { "IPR3.BCL2IP", "r3.cpuregisters.ipr3.bcl2ip",
9157 FT_BOOLEAN
, 8, NULL
, 0x40,
9160 { &hf_r3_cpuregisters_ipr3_ssp2ip
,
9161 { "IPR3.SSP2IP", "r3.cpuregisters.ipr3.ssp2ip",
9162 FT_BOOLEAN
, 8, NULL
, 0x80,
9165 { &hf_r3_cpuregisters_rcon_bor
,
9166 { "RCON./BOR", "r3.cpuregisters.rcon.bor",
9167 FT_BOOLEAN
, 8, NULL
, 0x01,
9170 { &hf_r3_cpuregisters_rcon_por
,
9171 { "RCON./POR", "r3.cpuregisters.rcon.por",
9172 FT_BOOLEAN
, 8, NULL
, 0x02,
9175 { &hf_r3_cpuregisters_rcon_pd
,
9176 { "RCON./PD", "r3.cpuregisters.rcon.pd",
9177 FT_BOOLEAN
, 8, NULL
, 0x04,
9180 { &hf_r3_cpuregisters_rcon_to
,
9181 { "RCON./TO", "r3.cpuregisters.rcon.to",
9182 FT_BOOLEAN
, 8, NULL
, 0x08,
9185 { &hf_r3_cpuregisters_rcon_unused4
,
9186 { "RCON.UNUSED4", "r3.cpuregisters.rcon.unused4",
9187 FT_BOOLEAN
, 8, NULL
, 0x10,
9190 { &hf_r3_cpuregisters_rcon_ri
,
9191 { "RCON./RI", "r3.cpuregisters.rcon.ri",
9192 FT_BOOLEAN
, 8, NULL
, 0x20,
9195 { &hf_r3_cpuregisters_rcon_sboren
,
9196 { "RCON.SBOREN", "r3.cpuregisters.rcon.sboren",
9197 FT_BOOLEAN
, 8, NULL
, 0x40,
9200 { &hf_r3_cpuregisters_rcon_ipen
,
9201 { "RCON.IPEN", "r3.cpuregisters.rcon.ipen",
9202 FT_BOOLEAN
, 8, NULL
, 0x80,
9205 { &hf_r3_cpuregisters_osccon_scs0
,
9206 { "OSCCON.SCS0", "r3.cpuregisters.osccon.scs0",
9207 FT_BOOLEAN
, 8, NULL
, 0x01,
9210 { &hf_r3_cpuregisters_osccon_scs1
,
9211 { "OSCCON.SCS1", "r3.cpuregisters.osccon.scs1",
9212 FT_BOOLEAN
, 8, NULL
, 0x02,
9215 { &hf_r3_cpuregisters_osccon_iofs
,
9216 { "OSCCON.IOFS", "r3.cpuregisters.osccon.iofs",
9217 FT_BOOLEAN
, 8, NULL
, 0x04,
9220 { &hf_r3_cpuregisters_osccon_osts
,
9221 { "OSCCON.OSTS", "r3.cpuregisters.osccon.osts",
9222 FT_BOOLEAN
, 8, NULL
, 0x08,
9225 { &hf_r3_cpuregisters_osccon_ircf0
,
9226 { "OSCCON.IRCF0", "r3.cpuregisters.osccon.ircf0",
9227 FT_BOOLEAN
, 8, NULL
, 0x10,
9230 { &hf_r3_cpuregisters_osccon_ircf1
,
9231 { "OSCCON.IRCF1", "r3.cpuregisters.osccon.ircf1",
9232 FT_BOOLEAN
, 8, NULL
, 0x20,
9235 { &hf_r3_cpuregisters_osccon_ircf2
,
9236 { "OSCCON.IRCF2", "r3.cpuregisters.osccon.ircf2",
9237 FT_BOOLEAN
, 8, NULL
, 0x40,
9240 { &hf_r3_cpuregisters_osccon_idlen
,
9241 { "OSCCON.IDLEN", "r3.cpuregisters.osccon.idlen",
9242 FT_BOOLEAN
, 8, NULL
, 0x80,
9245 { &hf_r3_cpuregisters_rcsta_rx9d
,
9246 { "RCSTA.RX9D", "r3.cpuregisters.rcsta.rx9d",
9247 FT_BOOLEAN
, 8, NULL
, 0x01,
9250 { &hf_r3_cpuregisters_rcsta_oerr
,
9251 { "RCSTA.OERR", "r3.cpuregisters.rcsta.oerr",
9252 FT_BOOLEAN
, 8, NULL
, 0x02,
9255 { &hf_r3_cpuregisters_rcsta_ferr
,
9256 { "RCSTA.FERR", "r3.cpuregisters.rcsta.ferr",
9257 FT_BOOLEAN
, 8, NULL
, 0x04,
9260 { &hf_r3_cpuregisters_rcsta_adden
,
9261 { "RCSTA.ADDEN", "r3.cpuregisters.rcsta.adden",
9262 FT_BOOLEAN
, 8, NULL
, 0x08,
9265 { &hf_r3_cpuregisters_rcsta_cren
,
9266 { "RCSTA.CREN", "r3.cpuregisters.rcsta.cren",
9267 FT_BOOLEAN
, 8, NULL
, 0x10,
9270 { &hf_r3_cpuregisters_rcsta_sren
,
9271 { "RCSTA.SREN", "r3.cpuregisters.rcsta.sren",
9272 FT_BOOLEAN
, 8, NULL
, 0x20,
9275 { &hf_r3_cpuregisters_rcsta_rx9
,
9276 { "RCSTA.RX9", "r3.cpuregisters.rcsta.rx9",
9277 FT_BOOLEAN
, 8, NULL
, 0x40,
9280 { &hf_r3_cpuregisters_rcsta_spen
,
9281 { "RCSTA.SPEN", "r3.cpuregisters.rcsta.spen",
9282 FT_BOOLEAN
, 8, NULL
, 0x80,
9285 { &hf_r3_cpuregisters_txsta_tx9d
,
9286 { "TXSTA.TX9D", "r3.cpuregisters.txsta.tx9d",
9287 FT_BOOLEAN
, 8, NULL
, 0x01,
9290 { &hf_r3_cpuregisters_txsta_trmt
,
9291 { "TXSTA.TRMT", "r3.cpuregisters.txsta.trmt",
9292 FT_BOOLEAN
, 8, NULL
, 0x02,
9295 { &hf_r3_cpuregisters_txsta_brgh
,
9296 { "TXSTA.BRGH", "r3.cpuregisters.txsta.brgh",
9297 FT_BOOLEAN
, 8, NULL
, 0x04,
9300 { &hf_r3_cpuregisters_txsta_sendb
,
9301 { "TXSTA.SENDB", "r3.cpuregisters.txsta.sendb",
9302 FT_BOOLEAN
, 8, NULL
, 0x08,
9305 { &hf_r3_cpuregisters_txsta_sync
,
9306 { "TXSTA.SYNC", "r3.cpuregisters.txsta.sync",
9307 FT_BOOLEAN
, 8, NULL
, 0x10,
9310 { &hf_r3_cpuregisters_txsta_txen
,
9311 { "TXSTA.TXEN", "r3.cpuregisters.txsta.txen",
9312 FT_BOOLEAN
, 8, NULL
, 0x20,
9315 { &hf_r3_cpuregisters_txsta_tx9
,
9316 { "TXSTA.TX9", "r3.cpuregisters.txsta.tx9",
9317 FT_BOOLEAN
, 8, NULL
, 0x40,
9320 { &hf_r3_cpuregisters_txsta_csrc
,
9321 { "TXSTA.CSRC", "r3.cpuregisters.txsta.csrc",
9322 FT_BOOLEAN
, 8, NULL
, 0x80,
9325 { &hf_r3_cpuregisters_rcsta2_rx9d
,
9326 { "RCSTA2.RX9D", "r3.cpuregisters.rcsta2.rx9d",
9327 FT_BOOLEAN
, 8, NULL
, 0x01,
9330 { &hf_r3_cpuregisters_rcsta2_oerr
,
9331 { "RCSTA2.OERR", "r3.cpuregisters.rcsta2.oerr",
9332 FT_BOOLEAN
, 8, NULL
, 0x02,
9335 { &hf_r3_cpuregisters_rcsta2_ferr
,
9336 { "RCSTA2.FERR", "r3.cpuregisters.rcsta2.ferr",
9337 FT_BOOLEAN
, 8, NULL
, 0x04,
9340 { &hf_r3_cpuregisters_rcsta2_adden
,
9341 { "RCSTA2.ADDEN", "r3.cpuregisters.rcsta2.adden",
9342 FT_BOOLEAN
, 8, NULL
, 0x08,
9345 { &hf_r3_cpuregisters_rcsta2_cren
,
9346 { "RCSTA2.CREN", "r3.cpuregisters.rcsta2.cren",
9347 FT_BOOLEAN
, 8, NULL
, 0x10,
9350 { &hf_r3_cpuregisters_rcsta2_sren
,
9351 { "RCSTA2.SREN", "r3.cpuregisters.rcsta2.sren",
9352 FT_BOOLEAN
, 8, NULL
, 0x20,
9355 { &hf_r3_cpuregisters_rcsta2_rx9
,
9356 { "RCSTA2.RX9", "r3.cpuregisters.rcsta2.rx9",
9357 FT_BOOLEAN
, 8, NULL
, 0x40,
9360 { &hf_r3_cpuregisters_rcsta2_spen
,
9361 { "RCSTA2.SPEN", "r3.cpuregisters.rcsta2.spen",
9362 FT_BOOLEAN
, 8, NULL
, 0x80,
9365 { &hf_r3_cpuregisters_txsta2_tx9d
,
9366 { "TXSTA2.TX9D", "r3.cpuregisters.txsta2.tx9d",
9367 FT_BOOLEAN
, 8, NULL
, 0x01,
9370 { &hf_r3_cpuregisters_txsta2_trmt
,
9371 { "TXSTA2.TRMT", "r3.cpuregisters.txsta2.trmt",
9372 FT_BOOLEAN
, 8, NULL
, 0x02,
9375 { &hf_r3_cpuregisters_txsta2_brgh
,
9376 { "TXSTA2.BRGH", "r3.cpuregisters.txsta2.brgh",
9377 FT_BOOLEAN
, 8, NULL
, 0x04,
9380 { &hf_r3_cpuregisters_txsta2_sendb
,
9381 { "TXSTA2.SENDB", "r3.cpuregisters.txsta2.sendb",
9382 FT_BOOLEAN
, 8, NULL
, 0x08,
9385 { &hf_r3_cpuregisters_txsta2_sync
,
9386 { "TXSTA2.SYNC", "r3.cpuregisters.txsta2.sync",
9387 FT_BOOLEAN
, 8, NULL
, 0x10,
9390 { &hf_r3_cpuregisters_txsta2_txen
,
9391 { "TXSTA2.TXEN", "r3.cpuregisters.txsta2.txen",
9392 FT_BOOLEAN
, 8, NULL
, 0x20,
9395 { &hf_r3_cpuregisters_txsta2_tx9
,
9396 { "TXSTA2.TX9", "r3.cpuregisters.txsta2.tx9",
9397 FT_BOOLEAN
, 8, NULL
, 0x40,
9400 { &hf_r3_cpuregisters_txsta2_csrc
,
9401 { "TXSTA2.CSRC", "r3.cpuregisters.txsta2.csrc",
9402 FT_BOOLEAN
, 8, NULL
, 0x80,
9405 { &hf_r3_cpuregisters_wdtcon_swdten
,
9406 { "WDTCON.SWDTEN", "r3.cpuregisters.wdtcon.swdten",
9407 FT_BOOLEAN
, 8, NULL
, 0x01,
9410 { &hf_r3_cpuregisters_wdtcon_unused1
,
9411 { "WDTCON.UNUSED1", "r3.cpuregisters.wdtcon.unused1",
9412 FT_BOOLEAN
, 8, NULL
, 0x02,
9415 { &hf_r3_cpuregisters_wdtcon_unused2
,
9416 { "WDTCON.UNUSED2", "r3.cpuregisters.wdtcon.unused2",
9417 FT_BOOLEAN
, 8, NULL
, 0x04,
9420 { &hf_r3_cpuregisters_wdtcon_unused3
,
9421 { "WDTCON.UNUSED3", "r3.cpuregisters.wdtcon.unused3",
9422 FT_BOOLEAN
, 8, NULL
, 0x08,
9425 { &hf_r3_cpuregisters_wdtcon_unused4
,
9426 { "WDTCON.UNUSED4", "r3.cpuregisters.wdtcon.unused4",
9427 FT_BOOLEAN
, 8, NULL
, 0x10,
9430 { &hf_r3_cpuregisters_wdtcon_unused5
,
9431 { "WDTCON.UNUSED5", "r3.cpuregisters.wdtcon.unused5",
9432 FT_BOOLEAN
, 8, NULL
, 0x20,
9435 { &hf_r3_cpuregisters_wdtcon_unused6
,
9436 { "WDTCON.UNUSED6", "r3.cpuregisters.wdtcon.unused6",
9437 FT_BOOLEAN
, 8, NULL
, 0x40,
9440 { &hf_r3_cpuregisters_wdtcon_unused7
,
9441 { "WDTCON.UNUSED7", "r3.cpuregisters.wdtcon.unused7",
9442 FT_BOOLEAN
, 8, NULL
, 0x80,
9446 { &hf_r3_dumpm41t81_reg00
,
9447 { "REG 0x00", "r3.m41t81.reg00",
9448 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9451 { &hf_r3_dumpm41t81_reg01
,
9452 { "REG 0x01", "r3.m41t81.reg01",
9453 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9456 { &hf_r3_dumpm41t81_reg02
,
9457 { "REG 0x02", "r3.m41t81.reg02",
9458 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9461 { &hf_r3_dumpm41t81_reg03
,
9462 { "REG 0x03", "r3.m41t81.reg03",
9463 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9466 { &hf_r3_dumpm41t81_reg04
,
9467 { "REG 0x04", "r3.m41t81.reg04",
9468 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9471 { &hf_r3_dumpm41t81_reg05
,
9472 { "REG 0x05", "r3.m41t81.reg05",
9473 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9476 { &hf_r3_dumpm41t81_reg06
,
9477 { "REG 0x06", "r3.m41t81.reg06",
9478 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9481 { &hf_r3_dumpm41t81_reg07
,
9482 { "REG 0x07", "r3.m41t81.reg07",
9483 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9486 { &hf_r3_dumpm41t81_reg08
,
9487 { "REG 0x08", "r3.m41t81.reg08",
9488 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9491 { &hf_r3_dumpm41t81_reg09
,
9492 { "REG 0x09", "r3.m41t81.reg09",
9493 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9496 { &hf_r3_dumpm41t81_reg0a
,
9497 { "REG 0x0a", "r3.m41t81.reg0a",
9498 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9501 { &hf_r3_dumpm41t81_reg0b
,
9502 { "REG 0x0b", "r3.m41t81.reg0b",
9503 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9506 { &hf_r3_dumpm41t81_reg0c
,
9507 { "REG 0x0c", "r3.m41t81.reg0c",
9508 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9511 { &hf_r3_dumpm41t81_reg0d
,
9512 { "REG 0x0d", "r3.m41t81.reg0d",
9513 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9516 { &hf_r3_dumpm41t81_reg0e
,
9517 { "REG 0x0e", "r3.m41t81.reg0e",
9518 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9521 { &hf_r3_dumpm41t81_reg0f
,
9522 { "REG 0x0f", "r3.m41t81.reg0f",
9523 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9526 { &hf_r3_dumpm41t81_reg10
,
9527 { "REG 0x10", "r3.m41t81.reg10",
9528 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9531 { &hf_r3_dumpm41t81_reg11
,
9532 { "REG 0x11", "r3.m41t81.reg11",
9533 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9536 { &hf_r3_dumpm41t81_reg12
,
9537 { "REG 0x12", "r3.m41t81.reg12",
9538 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9541 { &hf_r3_dumpm41t81_reg13
,
9542 { "REG 0x13", "r3.m41t81.reg13",
9543 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9547 { &hf_r3_dumpm41t81_reg00_sec1
,
9548 { ".1 Seconds", "r3.m41t81.reg00.sec1",
9549 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9552 { &hf_r3_dumpm41t81_reg00_sec01
,
9553 { ".01 Seconds", "r3.m41t81.reg00.sec01",
9554 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9557 { &hf_r3_dumpm41t81_reg01_st
,
9558 { "ST", "r3.m41t81.reg01.st",
9559 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9562 { &hf_r3_dumpm41t81_reg01_10sec
,
9563 { "10 Seconds", "r3.m41t81.reg01.10sec",
9564 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9567 { &hf_r3_dumpm41t81_reg01_1sec
,
9568 { "1 Seconds", "r3.m41t81.reg01.1sec",
9569 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9572 { &hf_r3_dumpm41t81_reg02_notused
,
9573 { "(not used)", "r3.m41t81.reg02.notused",
9574 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9577 { &hf_r3_dumpm41t81_reg02_10min
,
9578 { "10 Minutes", "r3.m41t81.reg02.10min",
9579 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9582 { &hf_r3_dumpm41t81_reg02_1min
,
9583 { "1 Minutes", "r3.m41t81.reg02.1min",
9584 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9587 { &hf_r3_dumpm41t81_reg03_cbe
,
9588 { "CBE", "r3.m41t81.reg03.cbe",
9589 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9592 { &hf_r3_dumpm41t81_reg03_cb
,
9593 { "CB", "r3.m41t81.reg03.cb",
9594 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9597 { &hf_r3_dumpm41t81_reg03_10hour
,
9598 { "10 Hours", "r3.m41t81.reg03.10hour",
9599 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9602 { &hf_r3_dumpm41t81_reg03_1hour
,
9603 { "1 Hours", "r3.m41t81.reg03.1hour",
9604 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9607 { &hf_r3_dumpm41t81_reg04_notused
,
9608 { "(not used)", "r3.m41t81.reg04.notused",
9609 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9612 { &hf_r3_dumpm41t81_reg04_dow
,
9613 { "DOW", "r3.m41t81.reg04.dow",
9614 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9617 { &hf_r3_dumpm41t81_reg05_notused
,
9618 { "(not used)", "r3.m41t81.reg05.notused",
9619 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9622 { &hf_r3_dumpm41t81_reg05_10day
,
9623 { "10 Day", "r3.m41t81.reg05.10day",
9624 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9627 { &hf_r3_dumpm41t81_reg05_1day
,
9628 { "1 Day", "r3.m41t81.reg05.1day",
9629 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9632 { &hf_r3_dumpm41t81_reg06_notused
,
9633 { "(not used)", "r3.m41t81.reg06.notused",
9634 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9637 { &hf_r3_dumpm41t81_reg06_10month
,
9638 { "10 Month", "r3.m41t81.reg06.10month",
9639 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9642 { &hf_r3_dumpm41t81_reg06_1month
,
9643 { "1 Month", "r3.m41t81.reg06.1month",
9644 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9647 { &hf_r3_dumpm41t81_reg07_10year
,
9648 { "10 Year", "r3.m41t81.reg07.10year",
9649 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9652 { &hf_r3_dumpm41t81_reg07_1year
,
9653 { "1 Year", "r3.m41t81.reg07.1year",
9654 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9657 { &hf_r3_dumpm41t81_reg08_out
,
9658 { "OUT", "r3.m41t81.reg08.out",
9659 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9662 { &hf_r3_dumpm41t81_reg08_ft
,
9663 { "FT", "r3.m41t81.reg08.ft",
9664 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9667 { &hf_r3_dumpm41t81_reg08_s
,
9668 { "S", "r3.m41t81.reg08.s",
9669 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9672 { &hf_r3_dumpm41t81_reg08_cal
,
9673 { "CAL", "r3.m41t81.reg08.cal",
9674 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9677 { &hf_r3_dumpm41t81_reg09_notused
,
9678 { "(not used)", "r3.m41t81.reg09.notused",
9679 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9682 { &hf_r3_dumpm41t81_reg09_bmb
,
9683 { "BMB", "r3.m41t81.reg09.bmb",
9684 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9687 { &hf_r3_dumpm41t81_reg09_rb
,
9688 { "RB", "r3.m41t81.reg09.rb",
9689 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9692 { &hf_r3_dumpm41t81_reg0a_afe
,
9693 { "AFE", "r3.m41t81.reg0a.afe",
9694 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9697 { &hf_r3_dumpm41t81_reg0a_sqwe
,
9698 { "SQWE", "r3.m41t81.reg0a.sqwe",
9699 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9702 { &hf_r3_dumpm41t81_reg0a_abe
,
9703 { "ABE", "r3.m41t81.reg0a.abe",
9704 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9707 { &hf_r3_dumpm41t81_reg0a_10monthalm
,
9708 { "10 Month Alarm", "r3.m41t81.reg0a.10monthalm",
9709 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9712 { &hf_r3_dumpm41t81_reg0a_1monthalm
,
9713 { "1 Month Alarm", "r3.m41t81.reg0a.1monthalm",
9714 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9717 { &hf_r3_dumpm41t81_reg0b_rpt5
,
9718 { "RPT5", "r3.m41t81.reg0b.rpt5",
9719 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9722 { &hf_r3_dumpm41t81_reg0b_rpt4
,
9723 { "RPT4", "r3.m41t81.reg0b.rpt4",
9724 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9727 { &hf_r3_dumpm41t81_reg0b_10dayalm
,
9728 { "10 Day Alarm", "r3.m41t81.reg0b.10dayalm",
9729 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9732 { &hf_r3_dumpm41t81_reg0b_1dayalm
,
9733 { "1 Day Alarm", "r3.m41t81.reg0b.1dayalm",
9734 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9737 { &hf_r3_dumpm41t81_reg0c_rpt3
,
9738 { "RPT3", "r3.m41t81.reg0c.rpt3",
9739 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9742 { &hf_r3_dumpm41t81_reg0c_ht
,
9743 { "HT", "r3.m41t81.reg0c.ht",
9744 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9747 { &hf_r3_dumpm41t81_reg0c_10houralm
,
9748 { "10 Hour Alarm", "r3.m41t81.reg0c.10houralm",
9749 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9752 { &hf_r3_dumpm41t81_reg0c_1houralm
,
9753 { "1 Hour Alarm", "r3.m41t81.reg0c.1houralm",
9754 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9757 { &hf_r3_dumpm41t81_reg0d_rpt2
,
9758 { "RPT2", "r3.m41t81.reg0d.rpt2",
9759 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9762 { &hf_r3_dumpm41t81_reg0d_10minalm
,
9763 { "10 Min Alarm", "r3.m41t81.reg0d.10minalm",
9764 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9767 { &hf_r3_dumpm41t81_reg0d_1minalm
,
9768 { "1 Min Alarm", "r3.m41t81.reg0d.1minalm",
9769 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9772 { &hf_r3_dumpm41t81_reg0e_rpt1
,
9773 { "RPT1", "r3.m41t81.reg0e.rpt1",
9774 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9777 { &hf_r3_dumpm41t81_reg0e_10secalm
,
9778 { "10 Sec Alarm", "r3.m41t81.reg0e.10secalm",
9779 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9782 { &hf_r3_dumpm41t81_reg0e_1secalm
,
9783 { "1 Sec Alarm", "r3.m41t81.reg0e.1secalm",
9784 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9787 { &hf_r3_dumpm41t81_reg0f_wdf
,
9788 { "WDF", "r3.m41t81.reg0f.wdf",
9789 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9792 { &hf_r3_dumpm41t81_reg0f_af
,
9793 { "AF", "r3.m41t81.reg0f.af",
9794 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9797 { &hf_r3_dumpm41t81_reg0f_notused
,
9798 { "(not used)", "r3.m41t81.reg0f.notused",
9799 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9802 { &hf_r3_dumpm41t81_reg10_notused
,
9803 { "(not used)", "r3.m41t81.reg10.notused",
9804 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9807 { &hf_r3_dumpm41t81_reg11_notused
,
9808 { "(not used)", "r3.m41t81.reg11.notused",
9809 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9812 { &hf_r3_dumpm41t81_reg12_notused
,
9813 { "(not used)", "r3.m41t81.reg12.notused",
9814 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9817 { &hf_r3_dumpm41t81_reg13_rs
,
9818 { "RS", "r3.m41t81.reg13.rs",
9819 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9822 { &hf_r3_dumpm41t81_reg13_notused
,
9823 { "(not used)", "r3.m41t81.reg13.notused",
9824 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9827 { &hf_r3_sn_manufacturer
,
9828 { "Manufacturer", "r3.sn.manufacturer",
9829 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9833 { "Year", "r3.sn.year",
9834 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9838 { "Week", "r3.sn.week",
9839 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9843 { "Model", "r3.sn.model",
9844 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9847 { &hf_r3_sn_sequence
,
9848 { "Sequence", "r3.sn.sequence",
9849 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9853 { "Group", "r3.sn.group",
9854 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9858 { "NID", "r3.sn.nid",
9859 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9863 { "HID", "r3.sn.hid",
9864 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9867 { &hf_r3_sn_power_supply
,
9868 { "Power Supply", "r3.sn.power_supply",
9869 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9872 { &hf_r3_sn_mortise
,
9873 { "Mortise", "r3.sn.mortise",
9874 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9877 { &hf_r3_debuglog_recordnumber
,
9878 { "Record Number", "r3.debuglog.recordnumber",
9879 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
9882 { &hf_r3_debuglog_flags
,
9883 { "Flags", "r3.debuglog.flags",
9884 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9887 { &hf_r3_debuglog_tick
,
9888 { "Tick", "r3.debuglog.tick",
9889 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
9893 { &hf_r3_adduserparamtype
,
9894 { "Upstream Field", "r3.manageuser",
9895 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9898 { &hf_r3_adduserparamtypelength
,
9899 { "Field Length", "r3.manageuser.length",
9900 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9903 { &hf_r3_adduserparamtypetype
,
9904 { "Field Type", "r3.manageuser.type",
9905 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_adduserparamtypenames_ext
, 0x0,
9909 { &hf_r3_adduserparamtypedatalen
,
9910 { "Data Length", "r3.manageuser.datalen",
9911 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9914 { &hf_r3_adduserparamtypeerror
,
9915 { "Error", "r3.manageuser.error",
9916 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9920 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_DISPOSITION
],
9921 { "Disposition", "r3.manageuser.disposition",
9922 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_dispositionnames_ext
, 0x0,
9925 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USERNO
],
9926 { "User Number", "r3.manageuser.usernumber",
9927 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9930 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_ACCESSALWAYS
],
9931 { "Access Always", "r3.manageuser.accessalways",
9932 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
9935 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_ACCESSMODE
],
9936 { "Access Mode", "r3.manageuser.accessmode",
9937 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_accessmodenames_ext
, 0x0,
9940 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_CACHED
],
9941 { "Cached", "r3.manageuser.cached",
9942 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
9945 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USERTYPE
],
9946 { "User Type", "r3.manageuser.usertype",
9947 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_usertypenames_ext
, 0x0,
9950 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_PRIMARYFIELD
],
9951 { "Primary Field", "r3.manageuser.primaryfield",
9952 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9955 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
],
9956 { "Primary Field Type", "r3.manageuser.primaryfieldtype",
9957 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
9960 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_AUXFIELD
],
9961 { "Aux Field", "r3.manageuser.auxfield",
9962 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9965 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_AUXFIELDTYPE
],
9966 { "Aux Field Type", "r3.manageuser.auxfieldtype",
9967 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
9970 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USECOUNT
],
9971 { "Use Count", "r3.manageuser.usecount",
9972 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9975 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_EXCEPTIONGROUP
],
9976 { "Exception Group", "r3.manageuser.exceptiongroup",
9977 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9980 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_EXPIREON
],
9981 { "Expire On", "r3.manageuser.expireon",
9982 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
9985 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_TIMEZONE
],
9986 { "Timezone", "r3.manageuser.timezone",
9987 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9992 /* Setup protocol subtree array */
9993 static int *ett
[] =
10001 &ett_r3upstreamcommand
,
10002 &ett_r3upstreamfield
,
10006 &ett_r3eventlogrecord
,
10007 &ett_r3declinedlogrecord
,
10008 &ett_r3alarmlogrecord
,
10010 &ett_r3defineexceptionstartdate
,
10011 &ett_r3defineexceptionenddate
,
10012 &ett_r3defineexceptiongroupbits
,
10013 &ett_r3definecalendarmonth
[1],
10014 &ett_r3definecalendarmonth
[2],
10015 &ett_r3definecalendarmonth
[3],
10016 &ett_r3definecalendarmonth
[4],
10017 &ett_r3definecalendarmonth
[5],
10018 &ett_r3definecalendarmonth
[6],
10019 &ett_r3definecalendarmonth
[7],
10020 &ett_r3definecalendarmonth
[8],
10021 &ett_r3definecalendarmonth
[9],
10022 &ett_r3definecalendarmonth
[10],
10023 &ett_r3definecalendarmonth
[11],
10024 &ett_r3definecalendarmonth
[12],
10025 &ett_r3definetimezonestarttime
,
10026 &ett_r3definetimezoneendtime
,
10027 &ett_r3definetimezonedaymap
,
10028 &ett_r3eventlogdumpstarttime
,
10029 &ett_r3eventlogdumpendtime
,
10030 &ett_r3declinedlogdumpstarttime
,
10031 &ett_r3declinedlogdumpendtime
,
10032 &ett_r3alarmlogdumpstarttime
,
10033 &ett_r3alarmlogdumpendtime
,
10039 &ett_r3serialnumber
,
10041 &ett_r3checksumresults
,
10042 &ett_r3checksumresultsfield
,
10043 &ett_r3forceoptions
,
10045 &ett_r3downloadfirmware
,
10046 &ett_r3capabilities
,
10048 &ett_r3mortisestatelog
,
10051 &ett_r3taskflagsentry
,
10052 &ett_r3checkpointlog
,
10053 &ett_r3checkpointlogentry
,
10054 &ett_r3cpuregisters
,
10055 &ett_r3cpuregister
,
10056 &ett_r3m41t81registers
,
10057 &ett_r3m41t81register
,
10058 &ett_r3debuglogrecord
,
10059 &ett_r3setdatetime
,
10063 static ei_register_info ei
[] = {
10064 { &ei_r3_malformed_length
, { "r3.malformed_length", PI_MALFORMED
, PI_ERROR
, "Malformed length", EXPFILL
}},
10065 { &ei_r3_reserved_upstream_command_value
, { "r3.reserved_upstream_command_value", PI_UNDECODED
, PI_WARN
, "\"Reserved\" Upstream Command value", EXPFILL
}},
10066 { &ei_r3_mfgfield
, { "r3.mfgfield.field.unknown", PI_UNDECODED
, PI_WARN
, "Unknown manufacturing command value", EXPFILL
}},
10067 { &ei_r3_mfgfield_too_many_adc_values
, { "r3.mfgfield.too_many_adc_values", PI_PROTOCOL
, PI_WARN
, "MFG Field: too many adc values", EXPFILL
}},
10068 { &ei_r3_peekpoke_operation
, { "r3.peekpoke.operation.unknown", PI_UNDECODED
, PI_WARN
, "Unknown peekpoke operation value", EXPFILL
}},
10069 { &ei_r3_response_hasdata_octet_1
, { "r3.response_hasdata.octet_1_not_cmd_response", PI_PROTOCOL
, PI_WARN
, "Octet 1 not CMD_RESPONSE", EXPFILL
}},
10070 { &ei_r3_response_hasdata_octet_2
, { "r3.response_hasdata.octet_2_not_response_hasdata", PI_PROTOCOL
, PI_WARN
, "Octet 2 not RESPONSE_HASDATA", EXPFILL
}},
10071 { &ei_r3_response_hasdata_octet_3
, { "r3.response_hasdata.octet_3_ge_upstreamcommand_last", PI_PROTOCOL
, PI_WARN
, "Octet 3 >= UPSTREAMCOMMAND_LAST", EXPFILL
}},
10072 { &ei_r3_firmwaredownload_action
, { "r3.firmwaredownload.action.unknown", PI_PROTOCOL
, PI_WARN
, "Unknown Firmware download action", EXPFILL
}},
10073 { &ei_r3_cmd_downloadfirmwaretimeout
, { "r3.command.downloadfirmwaretimeout", PI_UNDECODED
, PI_WARN
, "Download Firmware Timeout", EXPFILL
}},
10074 { &ei_r3_unknown_command_value
, { "r3.command.unknown", PI_UNDECODED
, PI_WARN
, "Unknown command value", EXPFILL
}},
10077 expert_module_t
* expert_r3
;
10079 proto_r3
= proto_register_protocol ("Assa Abloy R3", "R3", "r3");
10080 r3_handle
= register_dissector ("r3", dissect_r3
, proto_r3
);
10081 proto_register_field_array (proto_r3
, hf
, array_length (hf
));
10082 proto_register_subtree_array (ett
, array_length (ett
));
10083 expert_r3
= expert_register_protocol(proto_r3
);
10084 expert_register_field_array(expert_r3
, ei
, array_length(ei
));
10087 void proto_reg_handoff_r3 (void)
10089 dissector_add_uint_range_with_preference("tcp.port", ASSA_R3_PORT_RANGE
, r3_handle
);
10093 * Editor modelines - https://www.wireshark.org/tools/modelines.html
10096 * c-basic-offset: 2
10098 * indent-tabs-mode: nil
10101 * vi: set shiftwidth=2 tabstop=8 expandtab:
10102 * :indentSize=2:tabSize=8:noTabs=true: