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.
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, write to the Free Software
26 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
33 #include <epan/packet.h>
34 #include <epan/expert.h>
35 #include <epan/dissectors/packet-tcp.h>
37 void proto_register_r3(void);
38 void proto_reg_handoff_r3(void);
44 #define MAX_USERS 2400
45 #define MAX_TIMEZONES 32
46 #define MAX_EXCEPTIONS 64
47 #define MAX_EXCEPTIONGROUPS 64
48 #define MAX_EVENTENTRIES 10000
49 #define MAX_DECLINEDENTRIES 500
50 #define MAX_ALARMENTRIES 200
58 ACCESSMODE_NONE
= 0, /* 0 - No access mode (not used, not legal, I think) */
59 ACCESSMODE_PRIMARYONLY
, /* 1 - Primary only */
60 ACCESSMODE_PRIMARYORAUX
, /* 2 - Primary or aux field */
61 ACCESSMODE_PRIMARYANDAUX
, /* 3 - Primary and aux field */
62 ACCESSMODE_PRIMARYTHENAUX
, /* 4 - Primary required first, then aux */
63 ACCESSMODE_LAST
/* 5 - Dummy, for range checking */
69 ADDUSERPARAMTYPE_DISPOSITION
= 0, /* 0 - What we're supposed to do (add, delete, etc) */
70 ADDUSERPARAMTYPE_USERNO
, /* 1 - User to manage (user number, U16) */
71 ADDUSERPARAMTYPE_ACCESSALWAYS
, /* 2 - Access always (boolean) */
72 ADDUSERPARAMTYPE_ACCESSMODE
, /* 3 - Access type (accessMode_e) */
73 ADDUSERPARAMTYPE_CACHED
, /* 4 - Entry is managed by cache system (boolean) */
74 ADDUSERPARAMTYPE_USERTYPE
, /* 5 - User type (userType_e) */
75 ADDUSERPARAMTYPE_PRIMARYFIELD
, /* 6 - Primary field (MAX_CREDENTIALBYTES) */
76 ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
, /* 7 - Primary field type (fieldType_e); */
77 ADDUSERPARAMTYPE_AUXFIELD
, /* 8 - Auxiliary field (MAX_CREDENTIALBYTES) */
78 ADDUSERPARAMTYPE_AUXFIELDTYPE
, /* 9 - Auxiliary field type (fieldType_e) */
79 ADDUSERPARAMTYPE_TIMEZONE
, /* 10 - Timezone bitmap (U32) */
80 ADDUSERPARAMTYPE_EXPIREON
, /* 11 - Date on which user no longer granted access, if non-0 */
81 ADDUSERPARAMTYPE_USECOUNT
, /* 12 - Use count */
82 ADDUSERPARAMTYPE_EXCEPTIONGROUP
, /* 13 - Exception group */
89 ALARMID_NONE
= 0, /* 0 - No alarm */
90 ALARMID_VALIDIN
, /* 1 - Valid entry */
91 ALARMID_DENIEDACCESS
, /* 2 - Denied access (bad credential) */
92 ALARMID_SECURED
, /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
93 ALARMID_DOORFORCED
, /* 4 - Door forced */
94 ALARMID_KEYOVERRIDE
, /* 5 - Key override */
95 ALARMID_INVALIDENTRY
, /* 6 - Door open but invalid entry (key used?) */
96 ALARMID_DOORAJAR
, /* 7 - Door ajar (needs .ja woman with Engrish accent) */
97 ALARMID_LOWBATTERY
, /* 8 - Low battery alarm */
98 ALARMID_RXHELD
, /* 9 - RX held */
105 CAPABILITIES_USERS
= 0, /* 0 - Number of users supported */
106 CAPABILITIES_TIMEZONES
, /* 1 - Number of timezone supported */
107 CAPABILITIES_EXCEPTIONS
, /* 2 - Number of exceptions supported */
108 CAPABILITIES_EXCEPTIONGROUPS
, /* 3 - Number of exception groups supported */
109 CAPABILITIES_EVENTLOG
, /* 4 - Number of event log entries supported */
110 CAPABILITIES_DECLINEDLOG
, /* 5 - Number of declined log entries supported */
111 CAPABILITIES_ALARMLOG
, /* 6 - Number of alarm log entries supported */
112 CAPABILITIES_TOTALEVENTS
, /* 7 - Total events (EVENT_LAST - 1) */
119 CHECKSUMRESULT_CONFIGURATIONNVRAM
= 0, /* 0 - Checksum results of the configuration NVRAM */
120 CHECKSUMRESULT_EXCEPTIONS
, /* 1 - Checksum results of the exceptions NVRAM */
121 CHECKSUMRESULT_EXCEPTIONGROUPS
, /* 2 - Checksum results of the exception groups NVRAM */
122 CHECKSUMRESULT_TZCALENDARS
, /* 3 - Checksum results of the time zone calendar NVRAM */
123 CHECKSUMRESULT_TIMEZONES
, /* 4 - Checksum results of the time zone NVRAM */
124 CHECKSUMRESULT_USERS
, /* 5 - Checksum results of the users NVRAM */
125 CHECKSUMRESULT_CACHELRU
, /* 6 - Checksum results of the cache LRU */
132 CMD_RESPONSE
= 0, /* 0 - Response to command */
133 CMD_HANDSHAKE
, /* 1 - Establish session */
134 CMD_KILLSESSION
, /* 2 - Kill session */
135 CMD_QUERYSERIALNUMBER
, /* 3 - Query serial number */
136 CMD_QUERYVERSION
, /* 4 - Query version */
137 CMD_SETDATETIME
, /* 5 - Set date and time */
138 CMD_QUERYDATETIME
, /* 6 - Query date and time */
139 CMD_SETCONFIG
, /* 7 - Set configuration options */
140 CMD_GETCONFIG
, /* 8 - Read configuration options */
141 CMD_MANAGEUSER
, /* 9 - Manage users (add/delete/replace/update) */
142 CMD_DELETEUSERS
, /* 10 - Delete users (all/most/cached) */
143 CMD_DEFINEEXCEPTION
, /* 11 - Define exception (old block holiday) */
144 CMD_DEFINEEXCEPTIONGROUP
, /* 12 - Define exception group */
145 CMD_DEFINECALENDAR
, /* 13 - Define calendar */
146 CMD_DEFINETIMEZONE
, /* 14 - Define time zone */
147 CMD_RMTAUTHRETRY
, /* 15 - Remote authorization retry */
148 CMD_FILTERS
, /* 16 - Event log filter configuration */
149 CMD_ALARMCONFIGURE
, /* 17 - Alarm condition configuration */
150 CMD_EVENTLOGDUMP
, /* 18 - Dump event log */
151 CMD_DECLINEDLOGDUMP
, /* 19 - Dump declined log */
152 CMD_ALARMLOGDUMP
, /* 20 - Dump alarm log */
153 CMD_DOWNLOADFIRMWARE
, /* 21 - Download firmware */
154 CMD_DOWNLOADFIRMWARETIMEOUT
, /* 22 - Download firmware timeout (internal command only) */
155 CMD_POWERTABLESELECTION
, /* 23 - Power table selection */
156 CMD_CLEARNVRAM
, /* 24 - Clear nvram (config/event log/declined log/etc) */
157 CMD_DPAC
, /* 25 - DPAC manipulation commands */
158 CMD_SELFTEST
, /* 26 - Selftest (heh) */
159 CMD_RESET
, /* 27 - Restart controller */
160 CMD_LOGWRITE
, /* 28 - Write event to event log */
161 CMD_MFGCOMMAND
, /* 29 - Manufacturing commands */
162 CMD_NVRAMBACKUP
, /* 30 - Backup/restore/erase NVRAM */
163 CMD_EXTENDEDRESPONSE
, /* 31 - Response to command (extended version) */
170 CMDMFG_SETSERIALNUMBER
= 0, /* 0 - Set serial number */
171 CMDMFG_SETCRYPTKEY
, /* 1 - Set encryption key */
172 CMDMFG_DUMPNVRAM
, /* 2 - Dump NVRAM */
173 CMDMFG_TERMINAL
, /* 3 - DPAC terminal mode */
174 CMDMFG_REMOTEUNLOCK
, /* 4 - Remote unlock (only on 'd' builds) */
175 CMDMFG_AUXCTLRVERSION
, /* 5 - Request version of auxiliary controller */
176 CMDMFG_IOPINS
, /* 6 - Read I/O pin states */
177 CMDMFG_ADCS
, /* 7 - Read ADC values */
178 CMDMFG_HARDWAREID
, /* 8 - Read hardware ID and CPU ID */
179 CMDMFG_CHECKPOINTLOGDUMP
, /* 9 - Dump checkpoint log */
180 CMDMFG_CHECKPOINTLOGCLEAR
, /* 10 - Clear checkpoint log */
181 CMDMFG_READREGISTERS
, /* 11 - Read selected CPU registers */
182 CMDMFG_FORCEOPTIONS
, /* 12 - Force I/O lines to certain states */
183 CMDMFG_COMMUSER
, /* 13 - Fake a comm user entry */
184 CMDMFG_DUMPKEYPAD
, /* 14 - Dump keypad debugging buffer */
185 CMDMFG_BATTERYCHECK
, /* 15 - Force battery check */
186 CMDMFG_RAMREFRESH
, /* 16 - Refresh RAM variables from NVRAM */
187 CMDMFG_TASKFLAGS
, /* 17 - Dump task flags */
188 CMDMFG_TIMERCHAIN
, /* 18 - Dump active timer chains */
189 CMDMFG_PEEKPOKE
, /* 19 - Peek/poke CPU RAM memory */
190 CMDMFG_LOCKSTATE
, /* 20 - Display global gLockState variable */
191 CMDMFG_CAPABILITIES
, /* 21 - Read firmware capabilities (# users/event log entries, etc) */
192 CMDMFG_DUMPM41T81
, /* 22 - Dump M41T81 RTC registers */
193 CMDMFG_DEBUGLOGDUMP
, /* 23 - Dump debugging log */
194 CMDMFG_DEBUGLOGCLEAR
, /* 24 - Clear debugging log */
195 CMDMFG_TESTWDT
, /* 25 - Test watchdog */
196 CMDMFG_QUERYCKSUM
, /* 26 - Query NVRAM checksum value */
197 CMDMFG_VALIDATECHECKSUMS
, /* 27 - Validate checksums */
198 CMDMFG_REBUILDLRUCACHE
, /* 28 - Rebuild LRC cache */
199 CMDMFG_TZUPDATE
, /* 29 - Send TZCHANGE to tod.c */
200 CMDMFG_TESTPRESERVE
, /* 30 - Test preserve save/restore code */
201 CMDMFG_MORTISESTATELOGDUMP
, /* 31 - Dump the mortise state log */
202 CMDMFG_MORTISESTATELOGCLEAR
, /* 32 - Clear the mortise state log */
203 CMDMFG_MORTISEPINS
, /* 33 - Display current mortise pin status */
204 CMDMFG_HALTANDCATCHFIRE
, /* 34 - Stop processor (optionally catch fire) */
211 CONFIGITEM_SERIAL_NUMBER
= 0, /* 0 - Ye olde serial number */
212 CONFIGITEM_CRYPT_KEY
, /* 1 - The encryption/decryption key */
213 CONFIGITEM_HARDWARE_OPTIONS_MFG
, /* 2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
214 CONFIGITEM_HARDWARE_OPTIONS
, /* 3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
215 CONFIGITEM_NVRAM_CHANGES
, /* 4 - Log of NVRAM changes since reset (which blocks were reset) */
217 CONFIGITEM_NVRAMDIRTY
, /* 5 - NVRAM is (or might be) dirty */
218 CONFIGITEM_NVRAM_WV
, /* 6 - NVRAM write verify (I2C parts only) */
219 CONFIGITEM_ENABLE_WDT
, /* 7 - If true, and OPT_WATCHDOG enabled, enables WDT */
220 CONFIGITEM_EARLY_ACK
, /* 8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
221 CONFIGITEM_CONSOLE_AES_ONLY
, /* 9 - If set, requires AES encryption on serial communications */
222 CONFIGITEM_RADIO_AES_ONLY
, /* 10 - If set, requires AES encryption on radio communications */
223 CONFIGITEM_NDRLE
, /* 11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
224 CONFIGITEM_SOMF
, /* 12 - Stop on mortise failure */
225 CONFIGITEM_NOGAF
, /* 13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
226 CONFIGITEM_CARD_READER_POWER
, /* 14 - External mag reader power supply control */
227 CONFIGITEM_PROX_ENABLE
, /* 15 - Prox into permanent sleep mode */
228 CONFIGITEM_CKSUMCONFIG
, /* 16 - Configuration NVRAM checksum enable/disable */
229 CONFIGITEM_DAILY_BATTERY_CHECK
, /* 17 - Enable/disable daily battery check */
230 CONFIGITEM_DAILY_BATTERY_CHECK_HOUR
, /* 18 - If daily battery check enabled, top of the hour to check at */
231 CONFIGITEM_BATTERY_LOW
, /* 19 - Return low battery status (TRUE = low) */
233 CONFIGITEM_LRU_HEAD
, /* 20 - Cache LRU head pointer */
234 CONFIGITEM_LRU_TAIL
, /* 21 - Cache LRU tail pointer */
235 CONFIGITEM_RTC_CALIBRATION
, /* 22 - Signed 6 bit value written to M41T81 calibration register */
236 CONFIGITEM_ACVREQUESTER
, /* 23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
237 CONFIGITEM_LOCAL_LED
, /* 24 - Local LED function assignment */
239 CONFIGITEM_ERRCNT_XORLEN
, /* 25 - Error counter for XOR length not matching in protocol.c */
240 CONFIGITEM_ERRCNT_CRC
, /* 26 - Error counter for bad CRC in protocol.c */
241 CONFIGITEM_ERRCNT_NOTSIGIL
, /* 27 - Error counter for character received was not sigil in protocol.c */
242 CONFIGITEM_ERRCNT_TIMEOUT
, /* 28 - Error counter for timeout in protocol.c */
243 CONFIGITEM_ERRCNT_TOOLONG
, /* 29 - Error counter for packet too long in protocol.c */
244 CONFIGITEM_ERRCNT_TOOSHORT
, /* 30 - Error counter for packet too short in protocol.c */
245 CONFIGITEM_ERRCNT_HITDEFAULT
, /* 31 - Error counter for hitting default handler in protocol.c */
246 CONFIGITEM_ERRCNT_OVERRUN
, /* 32 - Error counter for serial buffer overrun in serial.c */
247 CONFIGITEM_ERRCNT_UARTFE
, /* 33 - Error counter for UART framing error in serial.c */
248 CONFIGITEM_ERRCNT_UARTOE
, /* 34 - Error counter for UART overrun error in serial.c */
250 CONFIGITEM_DST_SET
, /* 35 - Daylight savings time currently active */
251 CONFIGITEM_DST_MODE
, /* 36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
252 CONFIGITEM_DST_FORWARD_MONTH
, /* 37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
253 CONFIGITEM_DST_FORWARD_DOM
, /* 38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
254 CONFIGITEM_DST_FORWARD_OOD
, /* 39 - Occurence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5) (DSTMODE_REPEATINGDOW) */
255 CONFIGITEM_DST_FORWARD_DOW
, /* 40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
256 CONFIGITEM_DST_FORWARD_HOUR
, /* 41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
257 CONFIGITEM_DST_FORWARD_MINUTE
, /* 42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
258 CONFIGITEM_DST_FORWARD_ADJUST
, /* 43 - Number of minutes to move forward */
259 CONFIGITEM_DST_BACK_MONTH
, /* 44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
260 CONFIGITEM_DST_BACK_DOM
, /* 45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
261 CONFIGITEM_DST_BACK_OOD
, /* 46 - Occurence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5) (DSTMODE_REPEATINGDOW) */
262 CONFIGITEM_DST_BACK_DOW
, /* 47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
263 CONFIGITEM_DST_BACK_HOUR
, /* 48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
264 CONFIGITEM_DST_BACK_MINUTE
, /* 49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
265 CONFIGITEM_DST_BACK_ADJUST
, /* 50 - Number of minutes to move backwards */
267 CONFIGITEM_EVENTLOG_ZEROMEM
, /* 51 - If set, event log memory is zeroed when event log cleared */
268 CONFIGITEM_EVENTLOG_BEGIN
, /* 52 - Beginning record number when event log cleared */
269 CONFIGITEM_EVENTLOG_RECORD
, /* 53 - Next event log record to write */
270 CONFIGITEM_EVENTLOG_ENTRIES
, /* 54 - Number of entries in event log */
271 CONFIGITEM_EVENTLOG_WARNDEVICE
, /* 55 - Event log warning device */
272 CONFIGITEM_EVENTLOG_WARNEVERY
, /* 56 - Warn at every 'n' records (more or less) */
273 CONFIGITEM_EVENTLOG_RMTDEVICE
, /* 57 - Device event log entries copied to (fromDevice_e) */
275 CONFIGITEM_DECLINEDLOG_ZEROMEM
, /* 58 - If set, declined log memory is zeroed when declined log cleared */
276 CONFIGITEM_DECLINEDLOG_BEGIN
, /* 59 - Beginning record number when declined log cleared */
277 CONFIGITEM_DECLINEDLOG_RECORD
, /* 60 - Next declined log record to write */
278 CONFIGITEM_DECLINEDLOG_ENTRIES
, /* 61 - Number of entries in declined log */
279 CONFIGITEM_DECLINEDLOG_WARNDEVICE
, /* 62 - Declined record warning device */
280 CONFIGITEM_DECLINEDLOG_WARNEVERY
, /* 63 - Warn at every 'n' records (more or less) */
281 CONFIGITEM_DECLINEDLOG_RMTDEVICE
, /* 64 - Device declined entries copied to (fromDevice_e) */
283 CONFIGITEM_ALARMLOG_ZEROMEM
, /* 65 - If set, alarm log memory is zeroed when alarm log cleared */
284 CONFIGITEM_ALARMLOG_BEGIN
, /* 66 - Beginning record number when alarm log cleared */
285 CONFIGITEM_ALARMLOG_RECORD
, /* 67 - Next alarm log record to write */
286 CONFIGITEM_ALARMLOG_ENTRIES
, /* 68 - Number of entries in alarm log */
287 CONFIGITEM_ALARMLOG_WARNDEVICE
, /* 69 - Alarm record warning device */
288 CONFIGITEM_ALARMLOG_WARNEVERY
, /* 70 - Warn at every 'n' records (more or less) */
289 CONFIGITEM_ALARMLOG_RMTDEVICE
, /* 71 - Device alarm entries copied to (fromDevice_e) */
291 CONFIGITEM_VISIBLE_FEEDBACK
, /* 72 - Visible feedback on keypad presses enabled */
292 CONFIGITEM_AUDIBLE_FEEDBACK
, /* 73 - Audible feedback on keypad presses enabled */
293 CONFIGITEM_VISIBLE_INDICATORS
, /* 74 - Visible indicators on all actions (run dark) */
294 CONFIGITEM_AUDIBLE_INDICATORS
, /* 75 - Audible indicators on all actions (run silent) */
295 CONFIGITEM_2NDPINDURATION
, /* 76 - Number of seconds to wait for second PIN */
296 CONFIGITEM_LOCKOUT_ATTEMPTS
, /* 77 - Number of pin/prox/magcard attempts before lockout */
297 CONFIGITEM_LOCKOUT_DURATION
, /* 78 - Duration of lockout, in penta-seconds */
298 CONFIGITEM_KEYPAD_INACTIVITY
, /* 79 - Duration in seconds with no key entries before key buffer cleared */
299 CONFIGITEM_ICIDLE_DURATION
, /* 80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
300 CONFIGITEM_WRITE_DECLINED_LOG
, /* 81 - Declined log writing enable/disable */
301 CONFIGITEM_LOW_BATTERY_INDICATOR
, /* 82 - Low battery audio/visual indicator enable/disable */
303 CONFIGITEM_PANIC_MODE
, /* 83 - Enable/disable panic mode */
305 CONFIGITEM_TIMEZONE_ENABLE
, /* 84 - Timezones enabled (applies to users, not passage modes) */
306 CONFIGITEM_EXCEPTION_ENABLE
, /* 85 - Exceptions enabled (applies to users and passage modes) */
307 CONFIGITEM_AUTOUNLOCK_ENABLE
, /* 86 - Auto-unlocking (schedule based) enabled */
309 CONFIGITEM_LOCK_PRIORITY_EMERGENCY
, /* 87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
310 CONFIGITEM_LOCK_PRIORITY_SUPERVISOR
, /* 88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
311 CONFIGITEM_LOCK_PRIORITY_USER
, /* 89 - DPAC/PWM lock priority for users (lockPriority_e) */
312 CONFIGITEM_LOCK_PRIORITY_PASSAGE
, /* 90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
313 CONFIGITEM_LOCK_PRIORITY_PANIC
, /* 91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
314 CONFIGITEM_LOCK_PRIORITY_LOCKOUT
, /* 92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
315 CONFIGITEM_LOCK_PRIORITY_RELOCK
, /* 93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
316 CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN
, /* 94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
317 CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE
, /* 95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
318 CONFIGITEM_LOCK_PRIORITY_REMOTE
, /* 96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
319 CONFIGITEM_LOCK_TYPE
, /* 97 - Type of lock (PWM, electric, magnetic) */
320 CONFIGITEM_DOUBLE_PULSE
, /* 98 - Lock double pulse enabled */
321 CONFIGITEM_DOUBLE_DELAY
, /* 99 - Delay between double pulses, in centiseconds */
322 CONFIGITEM_MOTOR_DURATION
, /* 100 - Duration lock motor to run, in centiseconds */
323 CONFIGITEM_MORTISE_TYPE
, /* 101 - Type of mortise connected to controller */
324 CONFIGITEM_UNLOCK_TIME
, /* 102 - Normal unlock duration in seconds */
325 CONFIGITEM_EXT_UNLOCK_TIME
, /* 103 - Extended unlock duration, in seconds */
326 CONFIGITEM_DOOR_AJAR_TIME
, /* 104 - Time before door considered stuck open, in seconds */
328 CONFIGITEM_SESSION_TIMEOUT
, /* 105 - Session timeout, in seconds */
329 CONFIGITEM_RETRY_ON_TIMEOUT
, /* 106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
331 CONFIGITEM_UNSOLICITED_ENCRYPT
, /* 107 - Unsolicited messages are encrypted (encryptionScheme_e) */
332 CONFIGITEM_RMT_AUTH_TIMEOUT
, /* 108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
333 CONFIGITEM_RMT_AUTH_DEVICE
, /* 109 - Device remote authorization requests sent over (fromDevice_e) */
334 CONFIGITEM_ALARM_DEVICE
, /* 110 - Device alarm condition connects via */
335 CONFIGITEM_NOTIFY_DEVICE
, /* 111 - Notify user device */
336 CONFIGITEM_COMMUSER_DEVICE
, /* 112 - Device comm user connects via */
337 CONFIGITEM_SCHEDULER_DEVICE
, /* 113 - Device scheduler connects via */
339 CONFIGITEM_SCHEDULER_TYPE
, /* 114 - Scheduling algorithm to use (schedulerType_e) */
340 CONFIGITEM_SCHEDULER_AWAKE
, /* 115 - Number of decaseconds scheduler is awake for */
341 CONFIGITEM_SCHEDULER_PERIOD
, /* 116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
342 CONFIGITEM_SCHEDULER_HOD
, /* 117 - Hour of day map (SCHEDULERTYPE_HOD) */
343 CONFIGITEM_SCHEDULER_DOW
, /* 118 - Day of month map (SCHEDULERTYPE_DOW) */
344 CONFIGITEM_SCHEDULER_DOM
, /* 119 - Day of month map (SCHEDULERTYPE_DOM) */
345 CONFIGITEM_SCHEDULER_HM1
, /* 120 - On at hour:minute #1 */
346 CONFIGITEM_SCHEDULER_HM2
, /* 121 - On at hour:minute #2 */
347 CONFIGITEM_SCHEDULER_HM3
, /* 122 - On at hour:minute #3 */
348 CONFIGITEM_SCHEDULER_HM4
, /* 123 - On at hour:minute #4 */
350 CONFIGITEM_RADIO_TYPE
, /* 124 - Radio type (None, DPAC, WiPort, etc) */
351 CONFIGITEM_RADIO_MODE
, /* 125 - Radio mode (DPAC=active/passive) */
352 CONFIGITEM_RADIO_TIMEOUT
, /* 126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
353 CONFIGITEM_RADIO_ATTEMPTS
, /* 127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
354 CONFIGITEM_RADIO_HOUSEKEEPING
, /* 128 - Time we allow for radio housekeeping (associate with AP, etc) */
355 CONFIGITEM_RADIO_LEAPUSERNAME
, /* 129 - LEAP username */
356 CONFIGITEM_RADIO_LEAPPASSWORD
, /* 130 - LEAP password */
358 CONFIGITEM_INHIBIT_VOLTAGE
, /* 131 - Voltage when battery is considered dead */
359 CONFIGITEM_LOW_VOLTAGE
, /* 132 - Voltage when battery is considered low */
360 CONFIGITEM_PT_RANGE_1
, /* 133 - Power table for 0.00 to 5.99 volts */
361 CONFIGITEM_PT_RANGE_2
, /* 134 - Power table for 6.00 to 6.49 volts */
362 CONFIGITEM_PT_RANGE_3
, /* 135 - Power table for 6.50 to 6.99 volts */
363 CONFIGITEM_PT_RANGE_4
, /* 136 - Power table for 7.00 to 7.49 volts */
364 CONFIGITEM_PT_RANGE_5
, /* 137 - Power table for 7.50 to 7.99 volts */
365 CONFIGITEM_PT_RANGE_6
, /* 138 - Power table for 8.00 to 8.49 volts */
366 CONFIGITEM_PT_RANGE_7
, /* 139 - Power table for 8.50 to 8.99 volts */
367 CONFIGITEM_PT_RANGE_8
, /* 140 - Power table for 9.00 and up volts */
369 CONFIGITEM_MAGCARD_IFS
, /* 141 - Include field separator character in returned data */
370 CONFIGITEM_MAGCARD_FIELDS
, /* 142 - Mag card fields to include */
371 CONFIGITEM_MAGCARD_OFFSET
, /* 143 - Offset into concatenated field */
372 CONFIGITEM_MAGCARD_DIGITS
, /* 144 - Number of digits to return past offset */
374 CONFIGITEM_ALARMS
, /* 145 - Alarms (not writable) */
375 CONFIGITEM_FILTERS
, /* 146 - Event filter storage (not writable) */
376 CONFIGITEM_ALARMSTATE
, /* 147 - Current alarm state (alarmID_e) */
377 CONFIGITEM_DOORSTATE
, /* 148 - Current door state (doorState_e) */
379 CONFIGITEM_DPACDEBUG
, /* 149 - Enable DPAC debug events to event log */
380 CONFIGITEM_FAILOPENSECURE
, /* 150 - Fail open (false) or secure (true) on battery dead */
382 CONFIGITEM_REPLACED_VOLTAGE
, /* 151 - If battery above this voltage, it's been replaced */
384 CONFIGITEM_RX_HELD_TIME
, /* 152 - If RX held longer than this, sent RX held alarm */
385 CONFIGITEM_PACKET_TIMEOUT
, /* 153 - Time (in seconds) that a complete packet must arrive in */
387 CONFIGITEM_EXTENDEDRESPONSE
, /* 154 - Enables extended response (which includes original sequence number) */
388 CONFIGITEM_PASSAGEMODEINDICATOR
, /* 155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
390 CONFIGITEM_PFMRETURNTIME
, /* 156 - Number of seconds power must be present to exit power fail death loop */
392 CONFIGITEM_LAST
/* Must be last item defined (All non-virtual items added above) */
394 #if 0 /* XXX: unused ? */
396 CONFIGITEM_MAGIC_FIRST
= 239, /* Next item is first magic command */
397 CONFIGITEM_MAGIC_USERFIELD
, /* 240 - Virtual command to delete PIN '8989', add user '8989' */
398 CONFIGITEM_MAGIC_USERADD
, /* 241 - Virtual command to add a user (PIN only) */
399 CONFIGITEM_MAGIC_USERDELETE
, /* 242 - Virtual command to delete a user */
400 CONFIGITEM_MAGIC_NVRAMBACKUP
, /* 243 - Virtual command to backup NVRAM to FLASH */
401 CONFIGITEM_MAGIC_NVRAMRESTORE
, /* 244 - Virtual command to restore NVRAM from FLASH */
402 CONFIGITEM_MAGIC_NVRAMERASE
, /* 245 - Virtual command to erase backed-up NVRAM */
403 CONFIGITEM_MAGIC_LAST
/* *Really* the last item */
410 DELETEUSERS_ALL
= 0, /* 0 - Delete ALL users, including master and emergency, restores default users */
411 DELETEUSERS_CACHED
, /* 1 - Delete only cached users */
418 DISPOSITION_ADD
= 0, /* 0 - Add, must not exist (by user number only) */
419 DISPOSITION_REPLACE
, /* 1 - Replace, (add, but overwrite if necessary) */
420 DISPOSITION_UPDATE
, /* 2 - Update, must already exist */
421 DISPOSITION_DELETE
, /* 3 - Delete, exists or not is irrelevant */
422 DISPOSITION_RETRIEVE
, /* 4 - Retrieve, must exist */
430 DOORSTATE_NONE
= 0, /* 0 - No door state available */
431 DOORSTATE_SECURED
, /* 1 - Door closed & secured */
432 DOORSTATE_DOORFORCED
, /* 2 - Door forced */
433 DOORSTATE_KEYOVERRIDE
, /* 3 - Key override */
434 DOORSTATE_DOORAJAR
, /* 4 - Door ajar */
443 DSTMODE_NONE
, /* 0 - Automatic DST switching disabled */
444 DSTMODE_REPEATINGDOM
, /* 1 - Particular day on a particular month (Apr 2nd) */
445 DSTMODE_REPEATINGDOW
, /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
446 DSTMODE_ONETIMEDOM
, /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
447 DSTMODE_ONETIMEDOW
, /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
455 ENCRYPTIONSCHEME_NONE
= 0, /* 0 - No encryption */
456 ENCRYPTIONSCHEME_ROLLING
, /* 1 - XOR with crypt key, shift each byte */
457 ENCRYPTIONSCHEME_SN
, /* 2 - XOR with serial number, shift each byte */
458 ENCRYPTIONSCHEME_AESIV
, /* 3 - AES implementation (set initial vector) */
459 ENCRYPTIONSCHEME_AES
, /* 4 - AES implementation */
460 ENCRYPTIONSCHEME_LAST
466 EVENT_INVALIDPIN
= 0, /* 0 - Entered PIN was invalid */
467 EVENT_USER
, /* 1 - Regular user has been granted access */
468 EVENT_ONETIME
, /* 2 - One-time user has been granted access */
469 EVENT_PASSAGEBEGIN
, /* 3 - Lock has unlocked because of auto-unlock mode */
470 EVENT_PASSAGEEND
, /* 4 - Lock has relocked because of auto-unlock mode */
471 EVENT_BADTIME
, /* 5 - Access attempted outside of allowed time/date */
472 EVENT_LOCKEDOUT
, /* 6 - Access attempted during panic or lockout */
473 EVENT_LOWBATTERY
, /* 7 - Battery is low */
474 EVENT_DEADBATTERY
, /* 8 - Battery is dead */
475 EVENT_BATTERYREPLACED
, /* 9 - Battery has been replaced */
476 EVENT_USERADDED
, /* 10 - User added or changed */
477 EVENT_USERDELETED
, /* 11 - User deleted */
478 EVENT_EMERGENCY
, /* 12 - The emergency code was entered */
479 EVENT_PANIC
, /* 13 - Somebody pushed the panic button */
480 EVENT_RELOCK
, /* 14 - Relock code was entered */
481 EVENT_LOCKOUTBEGIN
, /* 15 - Lockout code was entered */
482 EVENT_LOCKOUTEND
, /* 16 - Lockout code was entered again */
483 EVENT_RESET
, /* 17 - Lock was reset (restarted) */
484 EVENT_DATETIMESET
, /* 18 - System date & time was set */
485 EVENT_LOGCLEARED
, /* 19 - Event log cleared */
486 EVENT_DBRESET
, /* 20 - User database reset */
487 EVENT_COMMSTARTED
, /* 21 - Communications session started */
488 EVENT_COMMENDED
, /* 22 - Communications session ended */
489 EVENT_FIRMWAREABORT
, /* 23 - A firmware update aborted */
490 EVENT_FIRMWAREERROR
, /* 24 - A firmware update encountered an error */
491 EVENT_FIRMWARETIMEOUT
, /* 25 - Timeout expecting firmware download data record */
492 EVENT_DSTFALLBACK
, /* 26 - Clock set back */
493 EVENT_DSTSPRINGFORWARD
, /* 27 - Clock set forward */
494 EVENT_BOLTTHROWN
, /* 28 - Bolt thrown */
495 EVENT_BOLTRETRACTED
, /* 29 - Bolt retracted */
496 EVENT_MASTERCODE
, /* 30 - Master code entered (clears panic, relock, and lockout) */
497 EVENT_COMMUSER
, /* 31 - A comm user was activated */
498 EVENT_DPACDISABLED
, /* 32 - DPAC disabled */
499 EVENT_NOTIFY
, /* 33 - Notify user has been granted access */
500 EVENT_EXPIRED
, /* 34 - Expired user attempted access */
501 EVENT_SUPERVISOR
, /* 35 - The supervisor code was entered */
502 EVENT_MCCENTER
, /* 36 - Entered MCC programming mode */
503 EVENT_MCCEXIT
, /* 37 - Exited MCC programming mode */
504 EVENT_SERIALRXOVERRUN
, /* 38 - Serial receiver overrun */
505 EVENT_DPACRXOVERRUN
, /* 39 - DPAC receiver overrun */
506 EVENT_NVRAMPBCLEAR
, /* 40 - NVRAM cleared by pushybutton */
507 EVENT_NVRAMLAYOUTCHANGE
, /* 41 - NVRAM cleared by revision */
508 EVENT_NVRAMOK
, /* 42 - NVRAM wasn't changed */
509 EVENT_USERREPLACED
, /* 43 - User replaced */
510 EVENT_RADIOTIMEOUT
, /* 44 - Radio timed out waiting for remote login */
511 EVENT_SUSPENDEDUSER
, /* 45 - Suspended user attempted access */
512 EVENT_USERUPDATED
, /* 46 - User updated */
513 EVENT_DOORBOLTED
, /* 47 - Access denied because door is bolted */
514 EVENT_PANICACTIVE
, /* 48 - Access denied because lock is in panic mode */
515 EVENT_PASSAGEACTIVE
, /* 49 - Access denied because lock is in passage mode */
516 EVENT_PASSAGEINACTIVE
, /* 50 - Access denied because lock is not in passage mode */
517 EVENT_BADACCESSMODE
, /* 51 - Access denied because access mode is weird */
518 EVENT_CLOCKERR
, /* 52 - Error reading RTC */
519 EVENT_REMOTEUNLOCK
, /* 53 - Remote unlock */
520 EVENT_TZHAUDISABLED
, /* 54 - Time zone, exceptions, and auto-unlock functionality disabled */
521 EVENT_EVENTLOGWRAPPED
, /* 55 - Event log wrapped */
522 EVENT_DECLINEDLOGWRAPPED
, /* 56 - Declined log wrapped */
523 EVENT_ALARMLOGWRAPPED
, /* 57 - Alarm log wrapped */
524 EVENT_RADIOBUSYEMERGENCY
, /* 58 - Access denied because radio is busy */
525 EVENT_RADIOBUSYSUPERVISOR
, /* 59 - Access denied because radio is busy */
526 EVENT_RADIOBUSYONETIME
, /* 60 - Access denied because radio is busy */
527 EVENT_RADIOBUSYUSER
, /* 61 - Access denied because radio is busy */
528 EVENT_RADIOBUSYPANIC
, /* 62 - Access denied because radio is busy */
529 EVENT_RADIOBUSYREX
, /* 63 - Access denied because radio is busy */
530 EVENT_RADIOBUSYLOCKOUT
, /* 64 - Access denied because radio is busy */
531 EVENT_RADIOBUSYRELOCK
, /* 65 - Access denied because radio is busy */
532 EVENT_BATTERYCHECKHELDOFF
, /* 66 - Battery check was not performed (user number says why) */
533 EVENT_RMTAUTHREQUEST
, /* 67 - Remote authorization request made */
534 EVENT_FIRMWAREUPDATE
, /* 68 - A firmware update was attempted, and succeeded */
535 EVENT_FIRMWAREUPDATEFAILED
, /* 69 - A firmware update was attempted, and failed */
536 EVENT_MSMFAILURE
, /* 70 - Mortise state machine failure */
537 EVENT_CLOCKRESET
, /* 71 - The RTC was reset, likely due to ESD */
538 EVENT_POWERFAIL
, /* 72 - Power Fail Monitor (PFM) circuit triggered */
539 EVENT_DPAC501WENTSTUPID
, /* 73 - DPAC-501 failed to release CTS on power up */
541 * These are all internal debugging events. Real events should go before these.
543 EVENT_CHECKSUMCONFIG
, /* 74 - Performing checksum on configuration NVRAM */
544 EVENT_CHECKSUMTZ
, /* 75 - Performing checksum on timezone data NVRAM */
545 EVENT_DEBUG
, /* 76 - Debug event, could mean anything (programmer discretion) */
546 EVENT_LAST
/* 77 - Everything must go before this entry */
552 FIELDTYPE_NONE
= 0, /* 0 - Field contains nothing */
553 FIELDTYPE_PIN
, /* 1 - Field contains PIN */
554 FIELDTYPE_PROX
, /* 2 - Field contains Prox card */
555 FIELDTYPE_MAGCARD
, /* 3 - Field contains mag card */
563 FILTERMODE_NORMAL
= 0, /* 0 - Filters events specified */
564 FILTERMODE_INVERT
, /* 1 - Filters events not specified */
572 FILTERSELECT_RECORDING
= 0, /* 0 - Recording filters */
573 FILTERSELECT_REPORTING
, /* 1 - Reporting filters */
579 /* XXX: enum vals don't all match vals in comments ??? */
582 FORCEITEM_RADIOPOWER
= 0, /* 0 - Radio power */
583 FORCEITEM_RADIOENABLE
, /* 1 - Radio enable */
584 FORCEITEM_LEDRED
, /* 2 - Red keypad LED */
585 FORCEITEM_LEDGREEN
, /* 3 - Green keypad LED */
586 FORCEITEM_LEDYELLOW
, /* 4 - Yellow keypad LED */
587 FORCEITEM_PIEZO
, /* 5 - Keypad peizo */
588 FORCEITEM_MAGPOWER
, /* 6 - Mag card reader power supply */
589 FORCEITEM_MAGLEDA
, /* 7 - Mag card LED A (usually red) */
590 FORCEITEM_MAGLEDB
, /* 8 - Mag card LED B (usually green) */
591 FORCEITEM_PROXPOWER
, /* 13 - Prox circuitry power (opamps, etc) */
592 FORCEITEM_PROXPING
, /* 14 - Prox PIC12F629 ping/sleep mode */
593 FORCEITEM_PROXMODE
, /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
594 FORCEITEM_I2CPOWER
, /* 16 - I2C power */
595 FORCEITEM_MOTORARUN
, /* 17 - Motor A run (to H-bridge) */
596 FORCEITEM_MOTORBRUN
, /* 18 - Motor B run (to H-bridge) */
597 FORCEITEM_VMON
, /* 19 - VMon (ADC 0 battery sense) */
598 FORCEITEM_PROX
, /* 20 - Prox test mode (continuous 125KHz read) */
599 FORCEITEM_MORTISETEST
, /* 21 - Force mortise into test mode */
600 FORCEITEM_KEYPADTEST
, /* 22 - Force keypad into test mode */
601 FORCEITEM_MAGTEST
, /* 23 - Force mag card test mode */
602 FORCEITEM_PROXTEST
, /* 24 - Force prox card test mode */
603 FORCEITEM_ICLASSPOWER
, /* 25 - iClass Prox power */
604 FORCEITEM_ICLASSRESET
, /* 26 - iClass Prox reset */
611 FROMDEVICE_NONE
= 0, /* 0 - Used to indicate no device */
612 FROMDEVICE_INTERNAL
, /* 1 - Generated internally */
613 FROMDEVICE_KEYPAD
, /* 2 - Generated from keypad */
614 FROMDEVICE_CONSOLE
, /* 3 - Generated from console */
615 FROMDEVICE_WIFI
, /* 4 - Generated from wi-fi (DPAC) */
623 HARDWAREOPTIONS_NONE
= 0x0000, /* No options installed (?!) */
624 HARDWAREOPTIONS_CLOCK
= 0x0001, /* Has RTC installed (always set) */
625 HARDWAREOPTIONS_CONSOLE
= 0x0002, /* Has serial console (always set) */
626 HARDWAREOPTIONS_KEYPAD
= 0x0004, /* Has keypad installed */
627 HARDWAREOPTIONS_PROXREADER
= 0x0008, /* Has Prox card circuitry installed */
628 HARDWAREOPTIONS_MAGREADER
= 0x0010, /* Has magnetic card reader attached */
629 HARDWAREOPTIONS_1WIRE
= 0x0020, /* Has Dallas 1-wire interface installed */
630 HARDWAREOPTIONS_WIFI
= 0x0040, /* Has WiFi module installed (DPAC only, for now) */
631 HARDWAREOPTIONS_RS485
= 0x0080, /* Has RS-485 optioning (RS-232 assumed if not) */
632 HARDWAREOPTIONS_IR
= 0x0100, /* Has IR LED communications interface installed */
633 HARDWAREOPTIONS_PUSHBUTTON
= 0x0200, /* Has MCC pushbutton */
634 HARDWAREOPTIONS_WATCHDOG
= 0x0400, /* Has watchdog option compiled in */
635 HARDWAREOPTIONS_ICLASSREADER
= 0x0800, /* Has iClass OEM75 prox reader installed */
636 HARDWAREOPTIONS_AVAIL1000
= 0x1000, /* Not defined */
637 HARDWAREOPTIONS_AVAIL2000
= 0x2000, /* Not defined */
638 HARDWAREOPTIONS_AVAIL4000
= 0x4000, /* Not defined */
639 HARDWAREOPTIONS_AVAIL8000
= 0x8000, /* Not defined */
641 HARDWAREOPTIONS_RADIO
= (HARDWAREOPTIONS_WIFI
),
643 HARDWAREOPTIONS_LAST
= 0xffff /* Place holder, don't use */
651 LOCALLED_NONE
= 0, /* 0 - No assignment */
652 LOCALLED_RADIOPOWER
, /* 1 - Follows radio power supply (lit=power on) */
653 LOCALLED_LOCKUNLOCKED
, /* 2 - Follows strike state (lit=locked) */
654 LOCALLED_I2CPOWER
, /* 3 - Follows I2C power (lit=power on) */
655 LOCALLED_AUTHCONSOLE
, /* 4 - Follows authorization from console port (lit=authorized) */
656 LOCALLED_AUTHWIFI
, /* 5 - Follows authorization from Wifi port (lit=authorized) */
657 LOCALLED_BATTERYLOW
, /* 6 - Follows battery low status (lit=low) */
658 LOCALLED_BATTERYDEAD
, /* 7 - Follows battery dead status (lit=battery dead) */
659 LOCALLED_PROXREADY
, /* 8 - Follows Prox ready to read (lit=ready) */
660 LOCALLED_APACQUIRED
, /* 9 - Follows WAP acquired via DPAC (lit=acquired) */
661 LOCALLED_PASSMODE
, /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
662 LOCALLED_PROXREAD
, /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
663 LOCALLED_CONNECTED
, /* 12 - Follows the DPAC interrupt line, indicating connection status */
664 LOCALLED_DPACCTSTIMER
, /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
665 LOCALLED_PFMCHARGING
, /* 14 - Follows the state of the PFM super-cap charger */
674 LOCKPRIORITY_NONE
= 0, /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
675 LOCKPRIORITY_DPAC
, /* 1 - Radio is not shut down for motor run, access denied if radio is on */
676 LOCKPRIORITY_LOCK
, /* 2 - Radio is shut down for motor run, access not denied if radio is on */
685 LOCKTYPE_NONE
= 0, /* 0 - No lock present */
686 LOCKTYPE_PWM
, /* 1 - PWM motor */
687 LOCKTYPE_ELECTRIC_STRIKE
, /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
688 LOCKTYPE_MAGNETIC_LOCK
, /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
689 LOCKTYPE_RELAY
, /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
697 MFGFIELD_IOPINS
= 0, /* 0 - Contains data about the state of the IO pins */
698 MFGFIELD_ADCS
, /* 1 - Contains raw ADC data */
699 MFGFIELD_HARDWAREID
, /* 2 - Contains hardware ID & revision of PIC */
700 MFGFIELD_CHECKPOINTLOG
, /* 3 - Contains the checkpoint log data */
701 MFGFIELD_CPUREGISTERS
, /* 4 - Contains the contents of selected PIC registers */
702 MFGFIELD_TASKFLAGS
, /* 5 - Contains a list of all task flag values */
703 MFGFIELD_TIMERCHAIN
, /* 6 - Contains a complete list of all active timers (timerData_t) */
704 MFGFIELD_PEEKPOKE
, /* 7 - Contains results of peeking memory (U8, U16, U32, or string) */
705 MFGFIELD_LOCKSTATE
, /* 8 - Contains the current passage mode flags (lockState_t) */
706 MFGFIELD_CAPABILITIES
, /* 9 - Contains lock capability info (# users, event log entries, etc) */
707 MFGFIELD_DUMPM41T81
, /* 10 - Contains a complete dump of the M41T81 RTC registers */
708 MFGFIELD_NVRAMCHECKSUMVALUE
, /* 11 - Contains the 32-bit NVRAM checksum value */
709 MFGFIELD_CHECKSUMRESULTS
, /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
710 MFGFIELD_MORTISESTATELOG
, /* 13 - Contains the last 32 mortise state changes */
711 MFGFIELD_MORTISEPINS
, /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
712 MFGFIELD_KEYPADCHAR
, /* 15 - Contains a character from the keypad */
713 MFGFIELD_MAGCARD
, /* 16 - Contains mag card data */
714 MFGFIELD_PROXCARD
, /* 17 - Contains prox card data */
721 MORTISETYPE_NONE
= 0, /* 0 - No mortise installed */
722 MORTISETYPE_S82276
, /* 1 - Sargent 82276 mortise (A) */
723 MORTISETYPE_S82277
, /* 2 - Sargent 82277 mortise, no cylinder (B) */
724 MORTISETYPE_S82278
, /* 3 - Sargent 82278 mortise, no deadbolt (C) */
725 MORTISETYPE_S82279
, /* 4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
726 MORTISETYPE_S10G77
, /* 5 - Sargent 10G77 bored lock body (E) */
727 MORTISETYPE_S8877
, /* 6 - Sargent 8877 mortise exit device (F) */
728 MORTISETYPE_S8878
, /* 7 - Sargent 8878 mortise exit device, no cylinder (G) */
729 MORTISETYPE_S8977
, /* 8 - Sargent 8977 mortise exit device (H) */
730 MORTISETYPE_S8978
, /* 9 - Sargent 8978 mortise exit device, no cylinder (I) */
731 MORTISETYPE_CRML20x36
, /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
732 MORTISETYPE_CRML20x35
, /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
733 MORTISETYPE_CRML20x34
, /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
734 MORTISETYPE_CRML20x33
, /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
735 MORTISETYPE_CRCL33x34
, /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
736 MORTISETYPE_CR9X34
, /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
737 MORTISETYPE_CR9X33
, /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
738 MORTISETYPE_CR9MX34
, /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
739 MORTISETYPE_CR9MX33
, /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
747 NVRAMCLEAROPTIONS_NONE
= 0x0000, /* Place holder */
748 NVRAMCLEAROPTIONS_CFGINSTALLER
= 0x0001, /* Options settable by the installer (lock type, etc) */
749 NVRAMCLEAROPTIONS_CFGADMIN
= 0x0002, /* Options settable by the lock administrator (time, date, etc) */
750 NVRAMCLEAROPTIONS_EXCEPTIONS
= 0x0004, /* The exceptions definitions */
751 NVRAMCLEAROPTIONS_EXCEPTIONGROUPS
= 0x0008, /* The exception group definitions */
752 NVRAMCLEAROPTIONS_CALENDARS
= 0x0010, /* The timezones calendar definitions */
753 NVRAMCLEAROPTIONS_TIMEZONES
= 0x0020, /* The timezones definitions */
754 NVRAMCLEAROPTIONS_FILTERS
= 0x0040, /* Recording filters */
755 NVRAMCLEAROPTIONS_EVENTLOG
= 0x0080, /* The event log */
756 NVRAMCLEAROPTIONS_USERDATA
= 0x0100, /* The actual user database */
757 NVRAMCLEAROPTIONS_DECLINEDLOG
= 0x0200, /* Declined credentials log */
758 NVRAMCLEAROPTIONS_ALARMLOG
= 0x0400, /* Alarm log */
759 NVRAMCLEAROPTIONS_LRUCACHE
= 0x0800, /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
760 NVRAMCLEAROPTIONS_DBHASH
= 0x1000, /* User database hash (status, user doesn't clear explicitly) */
761 NVRAMCLEAROPTIONS_CFGSYSTEM
= 0x2000, /* Factory settable options, system variables (status, user doesn't clear explicitly) */
762 NVRAMCLEAROPTIONS_AVAIL4000
= 0x4000, /* Unused */
763 NVRAMCLEAROPTIONS_ALL
= 0x7fff, /* All of the above */
764 NVRAMCLEAROPTIONS_USEBACKUP
= 0x8000 /* If set, installer and admin options are set according from NVRAM backup (if valid) */
772 NVRAMCOMMAND_BACKUP
= 0, /* 0 - Backup NVRAM to backup region */
773 NVRAMCOMMAND_ERASE
, /* 1 - Erase backup region */
774 NVRAMCOMMAND_RESTORE
, /* 2 - Restore NVRAM from backup region */
783 NVRAMDUMPSELECT_ALL
= 0, /* 0 - Dump all */
784 NVRAMDUMPSELECT_PIC
, /* 1 - Dump NVRAM on PIC */
785 NVRAMDUMPSELECT_USER
, /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
786 NVRAMDUMPSELECT_EVENT
, /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
794 PEEKPOKE_READU8
= 0, /* 0 - Read 8 bit value */
795 PEEKPOKE_READU16
, /* 1 - Read 16 bit value */
796 PEEKPOKE_READU24
, /* 2 - Read 24 bit value */
797 PEEKPOKE_READU32
, /* 3 - Read 32 bit value */
798 PEEKPOKE_READSTRING
, /* 4 - Read 'n' 8 bit values */
799 PEEKPOKE_WRITEU8
, /* 5 - Write 8 bit value */
800 PEEKPOKE_WRITEU16
, /* 6 - Write 16 bit value */
801 PEEKPOKE_WRITEU24
, /* 7 - Write 24 bit value */
802 PEEKPOKE_WRITEU32
, /* 8 - Write 32 bit value */
803 PEEKPOKE_WRITESTRING
, /* 9 - Write 'n' 8 bit values */
810 PPMISOURCE_NONE
= 0, /* 0 - PPMI came from nowhere (not set) */
811 PPMISOURCE_PIN
, /* 1 - PPMI came from PIN */
812 PPMISOURCE_PROX
, /* 2 - PPMI came from Prox */
813 PPMISOURCE_MAGCARD
, /* 3 - PPMI came from mag card */
821 RADIOMODE_HOSTINITIATED
= 0, /* 0 - DPAC in listen mode (default) */
822 RADIOMODE_LOCKINITIATED
, /* 1 - DPAC in pass-through mode */
831 RADIOTYPE_NONE
= 0, /* 0 - No radio present */
832 RADIOTYPE_WIPORTNR
, /* 1 - WiPortNR */
833 RADIOTYPE_DPAC80211B
, /* 2 - DPAC 802.11b */
834 RADIOTYPE_DPAC80211BG
, /* 3 - DPAC 802.11bg */
842 RESPONSETYPE_OK
= 0, /* 0 - All is well */
843 RESPONSETYPE_ERROR
, /* 1 - Generic error */
844 RESPONSETYPE_HASDATA
, /* 2 - Response has data */
845 RESPONSETYPE_NOHANDLER
, /* 3 - Command requested with no handler (internal error) */
846 RESPONSETYPE_NOSESSION
, /* 4 - No session established */
847 RESPONSETYPE_BADCOMMAND
, /* 5 - Bad command value */
848 RESPONSETYPE_BADPARAMETER
, /* 6 - Bad parameter (can mean a lot of things) */
849 RESPONSETYPE_BADPARAMETERLEN
, /* 7 - Bad parameter length (too short, too long) */
850 RESPONSETYPE_MISSINGPARAMETER
, /* 8 - Missing parameter (something was required, what'd you forget?) */
851 RESPONSETYPE_DUPLICATEPARAMETER
, /* 9 - Parameter supplied more than once (D'oh!) */
852 RESPONSETYPE_PARAMETERCONFLICT
, /* 10 - Parameters conflict (usually mutually exclusive items) */
853 RESPONSETYPE_BADDEVICE
, /* 11 - Bad device (command came from a device that's not allowed) */
854 RESPONSETYPE_NVRAMERROR
, /* 12 - Hardware problem... */
855 RESPONSETYPE_NVRAMERRORNOACK
, /* 13 - Hardware problem... */
856 RESPONSETYPE_NVRAMERRORNOACK32
, /* 14 - Hardware problem... */
857 RESPONSETYPE_NOTI2CADDRESS
, /* 15 - Illegal I2C address in i2cStart */
858 RESPONSETYPE_FIRMWAREERROR
, /* 16 - Generic firmware upload error (can mean lots of things) */
859 RESPONSETYPE_DUMPINPROGRESS
, /* 17 - Can't do something, a dump is in progress */
860 RESPONSETYPE_INTERNALERROR
, /* 18 - Something Bad Happened(tm) */
861 RESPONSETYPE_NOTIMPLEMENTED
, /* 19 - Command or function not implemented */
862 RESPONSETYPE_PINFORMATERROR
, /* 20 - Error in formatting of PIN (non hex character) */
863 RESPONSETYPE_PINEXISTS
, /* 21 - PIN already exists in database */
864 RESPONSETYPE_PINNOTFOUND
, /* 22 - PIN wasn't found (actionManageUsers) */
865 RESPONSETYPE_USERACTIVE
, /* 23 - The record for this user is active (not deleted or free) */
866 RESPONSETYPE_USERINACTIVE
, /* 24 - The record for this user is inactive (not in use) */
867 RESPONSETYPE_PARENTNOTFOUND
, /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
868 RESPONSETYPE_NOCHAIN
, /* 26 - No users in chain (used internally by dbmgr.c) */
869 RESPONSETYPE_CAUGHTINLOOP
, /* 27 - Caught in a loop somewhere */
870 RESPONSETYPE_EVENTFILTERED
, /* 28 - Event record was filtered (eventlog.c) */
871 RESPONSETYPE_PAYLOADTOOLARGE
, /* 29 - Message payload too large (protocol.c) */
872 RESPONSETYPE_ENDOFDATA
, /* 30 - No more data (used internally by eventlog.c) */
873 RESPONSETYPE_RMTAUTHREJECTED
, /* 31 - Remote authorization rejected (lockmgr.c) */
874 RESPONSETYPE_NVRAMVERSIONERROR
, /* 32 - NVRAM version doesn't match expected value */
875 RESPONSETYPE_NOHARDWARE
, /* 33 - Operation requested for unsupported hardware */
876 RESPONSETYPE_SCHEDULERCONFLICT
, /* 34 - Scheduler not in correct mode for this operation */
877 RESPONSETYPE_NVRAMWRITEERROR
, /* 35 - NVRAM write compare error */
878 RESPONSETYPE_DECLINEDFILTERED
, /* 36 - Declined record was filtered (declinedlog.c) */
879 RESPONSETYPE_NECONFIGPARM
, /* 37 - Non-existent configuration parameter */
880 RESPONSETYPE_FLASHERASEERROR
, /* 38 - Error erasing FLASH */
881 RESPONSETYPE_FLASHWRITEERROR
, /* 39 - Error writing FLASH */
882 RESPONSETYPE_BADNVBACKUP
, /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
883 RESPONSETYPE_EARLYACK
, /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
884 RESPONSETYPE_ALARMFILTERED
, /* 42 - Alarm record was filtered (alarm.c) */
885 RESPONSETYPE_ACVFAILURE
, /* 43 - Auxiliary controller version request failure */
886 RESPONSETYPE_USERCHECKSUMERROR
, /* 44 - User checksum value error */
887 RESPONSETYPE_CHECKSUMERROR
, /* 45 - Generic checksum error */
888 RESPONSETYPE_RTCSQWFAILURE
, /* 46 - RTC isn't generating square wave */
889 RESPONSETYPE_PRIORITYSHUTDOWN
, /* 47 - Session terminated early because lock has priority over communications */
890 RESPONSETYPE_NOTMODIFIABLE
, /* 48 - Configuration parameter is not user modifiable */
891 RESPONSETYPE_CANTPRESERVE
, /* 49 - Can't preserve configuration (config.c, not enough space) */
892 RESPONSETYPE_INPASSAGEMODE
, /* 50 - Lock is in passage mode, can't do remote unlock */
897 * These should not be exposed to the user
899 RESPONSETYPE_NOREPLY
, /* 51 - Do not send a reply, subroutine is posting its own */
900 RESPONSETYPE_TAKEABREAK
, /* 52 - Intermediate return result, when log searches taking too long */
901 RESPONSETYPE_DPACBLOCKS
, /* 53 - PWM lock, battery powered, DPAC takes priority */
902 RESPONSETYPE_ACKNAKTIMEOUT
, /* 54 - Added for console.c, not used in lock firmware */
903 RESPONSETYPE_UNKNOWNCPUSPEED
/* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
911 SCHEDULERTYPE_HARDON
= 0, /* 0 - Radio is always on */
912 SCHEDULERTYPE_SIMPLE
, /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
913 SCHEDULERTYPE_DOM
, /* 2 - Day of month scheduling */
914 SCHEDULERTYPE_DOW
, /* 3 - Day of week scheduling */
915 SCHEDULERTYPE_COMMUSER
, /* 4 - Only a comm user triggers power on */
916 SCHEDULERTYPE_HOD
, /* 5 - Hour of day scheduling */
917 SCHEDULERTYPE_OFF
, /* 6 - Nothing wakes up radio */
925 TIMEZONEMODE_NORMAL
= 0, /* 0 - Timezone is applied to user, no auto unlocking */
926 TIMEZONEMODE_EXCLUSION
, /* 1 - User NOT permitted access if in this zone at this time */
927 TIMEZONEMODE_AUTOTIME
, /* 2 - Auto unlock at the start of the TZ, lock at end */
928 TIMEZONEMODE_AUTOFPT
, /* 3 - Unlock on first person through, lock at end */
929 TIMEZONEMODE_UAPM
, /* 4 - Permits user activated passage mode when active */
937 UNLOCKMODE_NORMAL
= 0, /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
938 UNLOCKMODE_UNLOCK
, /* 1 - Unlock, switching to passage mode */
939 UNLOCKMODE_LOCK
, /* 2 - Lock, regardless of mode */
945 /* XXX: enum vals don't all match vals in comments ??? */
948 UPSTREAMCOMMAND_RESERVED
= 0, /* 0 - Not used */
949 UPSTREAMCOMMAND_DEBUGMSG
, /* 1 - Debug message (zero terminated) */
950 UPSTREAMCOMMAND_QUERYVERSION
, /* 2 - Version string (zero terminated) */
951 UPSTREAMCOMMAND_QUERYDATETIME
, /* 3 - Current date/time */
952 UPSTREAMCOMMAND_QUERYSERIALNUMBER
, /* 5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
953 UPSTREAMCOMMAND_DUMPEVENTLOG
, /* 6 - Event log record */
954 UPSTREAMCOMMAND_DUMPNVRAM
, /* 7 - NVRAM dump record */
955 UPSTREAMCOMMAND_RMTAUTHREQUEST
, /* 8 - Remote authorization request */
956 UPSTREAMCOMMAND_RETRIEVEUSER
, /* 9 - Retrieve user record */
957 UPSTREAMCOMMAND_QUERYCONFIG
, /* 10 - Query configuration */
958 UPSTREAMCOMMAND_RMTEVENTLOGRECORD
, /* 11 - Remote event log record */
959 UPSTREAMCOMMAND_DPAC
, /* 12 - DPAC related message */
960 UPSTREAMCOMMAND_NOTIFY
, /* 14 - Notify user message */
961 UPSTREAMCOMMAND_MFG
, /* 15 - Manufacturing data */
962 UPSTREAMCOMMAND_EVENTLOGWARNING
, /* 16 - Event log warning level message */
963 UPSTREAMCOMMAND_DUMPNVRAMRLE
, /* 17 - Run Length Encoded (RLE) NVRAM dump record */
964 UPSTREAMCOMMAND_RMTDECLINEDRECORD
, /* 18 - Remote declined log record */
965 UPSTREAMCOMMAND_DECLINEDWARNING
, /* 19 - Declined log warning level message */
966 UPSTREAMCOMMAND_DUMPDECLINEDLOG
, /* 20 - Declined log record dump */
967 UPSTREAMCOMMAND_RMTALARMRECORD
, /* 21 - Remote alarm log record */
968 UPSTREAMCOMMAND_ALARMWARNING
, /* 22 - Alarm log warning level message */
969 UPSTREAMCOMMAND_DUMPALARMLOG
, /* 23 - Alarm log record dump */
970 UPSTREAMCOMMAND_CONNECTSCHEDULER
, /* 24 - Connection because of scheduler, contains serial number */
971 UPSTREAMCOMMAND_CONNECTCOMMUSER
, /* 25 - Connection because of comm user, contains serial number */
972 UPSTREAMCOMMAND_CONNECTALARM
, /* 26 - Connection because of alarm event, contains serial number */
973 UPSTREAMCOMMAND_DUMPDEBUGLOG
, /* 27 - Debug log dump record */
978 /* XXX: enum vals don't all match vals in comments ??? */
981 UPSTREAMFIELD_NOTUSED
= 0, /* 0 - Not used */
982 UPSTREAMFIELD_SERIALNUMBER
, /* 1 - Contains unit serial number */
983 UPSTREAMFIELD_NAR
, /* 2 - Contains 16 bit Next Available Record */
984 UPSTREAMFIELD_ENTRYDEVICE
, /* 3 - Contains a ppmSource_e */
985 UPSTREAMFIELD_PPMIFIELDTYPE
, /* 4 - Contains a type of _PIN (auxFieldType_e) */
986 UPSTREAMFIELD_PIN
, /* 5 - Contains a PIN, Prox, mag key */
987 UPSTREAMFIELD_SEQUENCENUMBER
, /* 6 - Contains 16 bit sequence number */
988 UPSTREAMFIELD_RESPONSEWINDOW
, /* 7 - Contains 8 bit response window (number of seconds) */
989 UPSTREAMFIELD_USERNUMBER
, /* 8 - Contains 16 bit user number */
990 UPSTREAMFIELD_VERSION
, /* 9 - Contains version string */
991 UPSTREAMFIELD_EVENTLOGRECORD
, /* 10 - Contains eventLog_e event log record */
992 UPSTREAMFIELD_DATETIME
, /* 11 - Contains 8 byte date/time data */
993 UPSTREAMFIELD_EVENTLOGRECORDCOUNT
, /* 17 - Contains number of event log records */
994 UPSTREAMFIELD_DECLINEDRECORDCOUNT
, /* 20 - Contains number of declined log records */
995 UPSTREAMFIELD_DECLINEDRECORD
, /* 21 - Contains declinedLog_t declined log record */
996 UPSTREAMFIELD_USERTYPE
, /* 23 - Contains the user type (master, emergency, normal, etc) */
997 UPSTREAMFIELD_ACCESSALWAYS
, /* 24 - Contains the access always mode (true, false) */
998 UPSTREAMFIELD_CACHED
, /* 25 - Contains the cached flag (true, false) */
999 UPSTREAMFIELD_PRIMARYFIELDTYPE
, /* 26 - Contains the primary field type (pin, prox, mag) */
1000 UPSTREAMFIELD_AUXFIELDTYPE
, /* 27 - Contains the aux field type (pin, prox, mag) */
1001 UPSTREAMFIELD_ACCESSMODE
, /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
1002 UPSTREAMFIELD_EXPIREON
, /* 29 - Contains the date the user expires on (00/00/00 if not set) */
1003 UPSTREAMFIELD_USECOUNT
, /* 30 - Contains the use count (if user type is ONE_TIME) */
1004 UPSTREAMFIELD_TIMEZONE
, /* 31 - Contains the timezone bit map */
1005 UPSTREAMFIELD_EXCEPTIONGROUP
, /* 32 - Contains the exception group */
1006 UPSTREAMFIELD_PRIMARYPIN
, /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
1007 UPSTREAMFIELD_AUXPIN
, /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
1008 UPSTREAMFIELD_ALARMRECORDCOUNT
, /* 35 - Contains number of alarm log records */
1009 UPSTREAMFIELD_ALARMRECORD
, /* 36 - Contains alarmLog_t alarm log record */
1010 UPSTREAMFIELD_AUXCTLRVERSION
, /* 37 - Contains the version number of the auxiliary controller */
1017 USERTYPE_NONE
= 0, /* 0 - No user */
1018 USERTYPE_MASTER
, /* 1 - Master user (clears panic, relock, lockout and auto open) */
1019 USERTYPE_EMERGENCY
, /* 2 - Opens door regardless of state */
1020 USERTYPE_SUPERVISOR
, /* 3 - Like emergency user, except won't unlock when in panic mode */
1021 USERTYPE_USER
, /* 4 - Generic user */
1022 USERTYPE_EXTENDED
, /* 5 - Same as _USER, but strike can be kept open longer */
1023 USERTYPE_PASSAGE
, /* 6 - Toggles strike between passage and non-passage modes */
1024 USERTYPE_ONETIME
, /* 7 - User may be used one time */
1025 USERTYPE_PANIC
, /* 8 - Locks down locks, no user except master valid */
1026 USERTYPE_LOCKOUT
, /* 9 - Locks out regular, extended, passage, one time, and notify users */
1027 USERTYPE_RELOCK
, /* 10 - Relock cancels passage mode, but can't unlock */
1028 USERTYPE_NOTIFY
, /* 11 - Same as _USER, only sends unsolicited message to server */
1029 USERTYPE_COMM
, /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
1030 USERTYPE_SUSPENDED
, /* 13 - User is suspended */
1037 * Wireshark ID of the R3 protocol
1039 static gint proto_r3
= -1;
1044 static gint hf_r3_tildex3ds
= -1; /* Got ~~~ds */
1046 static gint hf_r3_header
= -1; /* Packet header */
1047 static gint hf_r3_payload
= -1; /* Packet payload */
1048 static gint hf_r3_tail
= -1; /* Packet tail */
1050 static gint hf_r3_sigil
= -1; /* Packet sigil */
1051 static gint hf_r3_address
= -1; /* Packet address */
1052 static gint hf_r3_packetnumber
= -1; /* Packet number */
1053 static gint hf_r3_packetlength
= -1; /* Packet length */
1054 static gint hf_r3_encryption
= -1; /* Packet encryption scheme */
1055 static gint hf_r3_crc
= -1; /* Packet CRC */
1056 static gint hf_r3_crc_bad
= -1; /* Packet CRC bad (for filtering) */
1057 static gint hf_r3_xor
= -1; /* Packet Xor */
1058 static gint hf_r3_xor_bad
= -1; /* Packet Xor bad (for filtering) */
1060 static gint hf_r3_commandlength
= -1; /* Command length */
1061 static gint hf_r3_command
= -1; /* Command (cmdCommand_e) */
1062 static gint hf_r3_commanddata
= -1; /* Command data (not always present) */
1064 static gint hf_r3_commandmfglength
= -1; /* Mfg Command length */
1065 static gint hf_r3_commandmfg
= -1; /* Mfg Command (cmdCommand_e) */
1066 /*static gint hf_r3_commandmfgdata = -1;*/ /* Mfg Command data (not always present) */
1068 static gint hf_r3_responselength
= -1; /* Response length */
1069 static gint hf_r3_responsecommand
= -1; /* Response command */
1070 static gint hf_r3_responsetype
= -1; /* Response type (responseType_e) */
1071 static gint hf_r3_responsetocommand
= -1; /* Response to command (cmdCommand_e) */
1072 /*static gint hf_r3_responsedata = -1;*/ /* Response data (not always present) */
1074 static gint hf_r3_upstreamcommand
= -1;
1076 static gint hf_r3_upstreamfield
= -1; /* Upstream field (length + type + data) */
1077 static gint hf_r3_upstreamfieldlength
= -1; /* Upstream field length */
1078 static gint hf_r3_upstreamfieldtype
= -1; /* Upstream field type (upstreamField_e) */
1079 /*static gint hf_r3_upstreamfielddatalen = -1;*/ /* Upstream field data length */
1080 static gint hf_r3_upstreamfielderror
= -1; /* Upstream field is unknown type */
1081 static gint hf_r3_upstreamfieldarray
[UPSTREAMFIELD_LAST
];
1083 static gint hf_r3_configitems
= -1;
1084 static gint hf_r3_configitem
= -1;
1085 /*static gint hf_r3_configfield = -1;*/
1086 static gint hf_r3_configitemlength
= -1;
1087 static gint hf_r3_configitemtype
= -1;
1088 static gint hf_r3_configitemdata
= -1;
1089 static gint hf_r3_configitemdata_bool
= -1;
1090 static gint hf_r3_configitemdata_8
= -1;
1091 static gint hf_r3_configitemdata_16
= -1;
1092 static gint hf_r3_configitemdata_32
= -1;
1093 static gint hf_r3_configitemdata_string
= -1;
1095 static gint hf_r3_timezonearray
[32];
1097 static gint hf_r3_expireon_year
= -1;
1098 static gint hf_r3_expireon_month
= -1;
1099 static gint hf_r3_expireon_day
= -1;
1101 static gint hf_r3_datetime_year
= -1;
1102 static gint hf_r3_datetime_month
= -1;
1103 static gint hf_r3_datetime_day
= -1;
1104 static gint hf_r3_datetime_dow
= -1;
1105 static gint hf_r3_datetime_hours
= -1;
1106 static gint hf_r3_datetime_minutes
= -1;
1107 static gint hf_r3_datetime_seconds
= -1;
1108 static gint hf_r3_datetime_dst
= -1;
1110 static gint hf_r3_eventlog_recordnumber
= -1;
1111 static gint hf_r3_eventlog_year
= -1;
1112 static gint hf_r3_eventlog_month
= -1;
1113 static gint hf_r3_eventlog_day
= -1;
1114 static gint hf_r3_eventlog_hour
= -1;
1115 static gint hf_r3_eventlog_minute
= -1;
1116 static gint hf_r3_eventlog_second
= -1;
1117 static gint hf_r3_eventlog_usernumber
= -1;
1118 static gint hf_r3_eventlog_event
= -1;
1120 static gint hf_r3_declinedlog_recordnumber
= -1;
1121 static gint hf_r3_declinedlog_year
= -1;
1122 static gint hf_r3_declinedlog_month
= -1;
1123 static gint hf_r3_declinedlog_day
= -1;
1124 static gint hf_r3_declinedlog_hour
= -1;
1125 static gint hf_r3_declinedlog_minute
= -1;
1126 static gint hf_r3_declinedlog_second
= -1;
1127 static gint hf_r3_declinedlog_usernumber
= -1;
1128 static gint hf_r3_declinedlog_cred1type
= -1;
1129 static gint hf_r3_declinedlog_cred2type
= -1;
1130 static gint hf_r3_declinedlog_cred1
= -1;
1131 static gint hf_r3_declinedlog_cred2
= -1;
1133 static gint hf_r3_alarmlog_recordnumber
= -1;
1134 static gint hf_r3_alarmlog_year
= -1;
1135 static gint hf_r3_alarmlog_month
= -1;
1136 static gint hf_r3_alarmlog_day
= -1;
1137 static gint hf_r3_alarmlog_hour
= -1;
1138 static gint hf_r3_alarmlog_minute
= -1;
1139 static gint hf_r3_alarmlog_second
= -1;
1140 static gint hf_r3_alarmlog_id
= -1;
1141 static gint hf_r3_alarmlog_usernumber
= -1;
1143 static gint hf_r3_debugmsg
= -1;
1145 static gint hf_r3_setdate_year
= -1;
1146 static gint hf_r3_setdate_month
= -1;
1147 static gint hf_r3_setdate_day
= -1;
1148 static gint hf_r3_setdate_dow
= -1;
1149 static gint hf_r3_setdate_hours
= -1;
1150 static gint hf_r3_setdate_minutes
= -1;
1151 static gint hf_r3_setdate_seconds
= -1;
1153 static gint hf_r3_deleteusers
= -1;
1155 static gint hf_r3_defineexception_number
= -1;
1156 static gint hf_r3_defineexception_startdate_month
= -1;
1157 static gint hf_r3_defineexception_startdate_day
= -1;
1158 static gint hf_r3_defineexception_startdate_hours
= -1;
1159 static gint hf_r3_defineexception_startdate_minutes
= -1;
1160 static gint hf_r3_defineexception_enddate_month
= -1;
1161 static gint hf_r3_defineexception_enddate_day
= -1;
1162 static gint hf_r3_defineexception_enddate_hours
= -1;
1163 static gint hf_r3_defineexception_enddate_minutes
= -1;
1165 static gint hf_r3_defineexceptiongroup_number
= -1;
1166 static gint hf_r3_defineexceptiongroup_bits
= -1;
1168 static gint hf_r3_definecalendar_number
= -1;
1169 static gint hf_r3_definecalendar_bits
= -1;
1171 static gint hf_r3_definetimezone_number
= -1;
1172 static gint hf_r3_definetimezone_starttime_hours
= -1;
1173 static gint hf_r3_definetimezone_starttime_minutes
= -1;
1174 static gint hf_r3_definetimezone_endtime_hours
= -1;
1175 static gint hf_r3_definetimezone_endtime_minutes
= -1;
1176 static gint hf_r3_definetimezone_daymap
[7];
1177 static gint hf_r3_definetimezone_exceptiongroup
= -1;
1178 static gint hf_r3_definetimezone_mode
= -1;
1179 static gint hf_r3_definetimezone_calendar
= -1;
1181 static gint hf_r3_rmtauthretry_sequence
= -1;
1182 static gint hf_r3_rmtauthretry_retry
= -1;
1184 static gint hf_r3_eventlogdump_starttime_year
= -1;
1185 static gint hf_r3_eventlogdump_starttime_month
= -1;
1186 static gint hf_r3_eventlogdump_starttime_day
= -1;
1187 static gint hf_r3_eventlogdump_starttime_hours
= -1;
1188 static gint hf_r3_eventlogdump_starttime_minutes
= -1;
1189 static gint hf_r3_eventlogdump_endtime_year
= -1;
1190 static gint hf_r3_eventlogdump_endtime_month
= -1;
1191 static gint hf_r3_eventlogdump_endtime_day
= -1;
1192 static gint hf_r3_eventlogdump_endtime_hours
= -1;
1193 static gint hf_r3_eventlogdump_endtime_minutes
= -1;
1194 static gint hf_r3_eventlogdump_user
= -1;
1196 static gint hf_r3_declinedlogdump_starttime_year
= -1;
1197 static gint hf_r3_declinedlogdump_starttime_month
= -1;
1198 static gint hf_r3_declinedlogdump_starttime_day
= -1;
1199 static gint hf_r3_declinedlogdump_starttime_hours
= -1;
1200 static gint hf_r3_declinedlogdump_starttime_minutes
= -1;
1201 static gint hf_r3_declinedlogdump_endtime_year
= -1;
1202 static gint hf_r3_declinedlogdump_endtime_month
= -1;
1203 static gint hf_r3_declinedlogdump_endtime_day
= -1;
1204 static gint hf_r3_declinedlogdump_endtime_hours
= -1;
1205 static gint hf_r3_declinedlogdump_endtime_minutes
= -1;
1207 static gint hf_r3_alarmlogdump_starttime_year
= -1;
1208 static gint hf_r3_alarmlogdump_starttime_month
= -1;
1209 static gint hf_r3_alarmlogdump_starttime_day
= -1;
1210 static gint hf_r3_alarmlogdump_starttime_hours
= -1;
1211 static gint hf_r3_alarmlogdump_starttime_minutes
= -1;
1212 static gint hf_r3_alarmlogdump_endtime_year
= -1;
1213 static gint hf_r3_alarmlogdump_endtime_month
= -1;
1214 static gint hf_r3_alarmlogdump_endtime_day
= -1;
1215 static gint hf_r3_alarmlogdump_endtime_hours
= -1;
1216 static gint hf_r3_alarmlogdump_endtime_minutes
= -1;
1218 static gint hf_r3_nvramclearoptions
[16];
1220 static gint hf_r3_writeeventlog_user
= -1;
1221 static gint hf_r3_writeeventlog_event
= -1;
1223 static gint hf_r3_powertableselection
= -1;
1225 static gint hf_r3_filter_type
= -1;
1226 static gint hf_r3_filter_list
= -1;
1228 static gint hf_r3_alarm_length
= -1;
1229 static gint hf_r3_alarm_id
= -1;
1230 static gint hf_r3_alarm_state
= -1;
1232 static gint hf_r3_dpac_action
= -1;
1233 static gint hf_r3_dpac_waittime
= -1;
1234 static gint hf_r3_dpac_command
= -1;
1236 static gint hf_r3_dpacreply_stuff
= -1;
1237 static gint hf_r3_dpacreply_length
= -1;
1238 static gint hf_r3_dpacreply_reply
= -1;
1240 static gint hf_r3_mfgfield_length
= -1;
1241 static gint hf_r3_mfgfield
= -1;
1242 /*static gint hf_r3_mfgfield_data = -1;*/
1244 static gint hf_r3_mfgsetserialnumber
= -1;
1245 static gint hf_r3_mfgsetcryptkey
= -1;
1246 static gint hf_r3_mfgdumpnvram
= -1;
1247 static gint hf_r3_mfgremoteunlock
= -1;
1248 static gint hf_r3_mfgtestpreserve
= -1;
1250 static gint hf_r3_adc
[8];
1252 static gint hf_r3_hardwareid_board
= -1;
1253 static gint hf_r3_hardwareid_cpuid
= -1;
1254 static gint hf_r3_hardwareid_cpurev
= -1;
1256 static gint hf_r3_testkeypad
= -1;
1257 static gint hf_r3_testmagcard
= -1;
1258 static gint hf_r3_testproxcard
= -1;
1260 static gint hf_r3_nvramdump_record
= -1;
1261 static gint hf_r3_nvramdump_length
= -1;
1262 static gint hf_r3_nvramdump_data
= -1;
1264 static gint hf_r3_nvramdumprle_record
= -1;
1265 static gint hf_r3_nvramdumprle_length
= -1;
1266 static gint hf_r3_nvramdumprle_data
= -1;
1268 static gint hf_r3_iopins_lat
= -1;
1269 static gint hf_r3_iopins_port
= -1;
1270 static gint hf_r3_iopins_tris
= -1;
1272 static gint hf_r3_mortisepins_s1
= -1;
1273 static gint hf_r3_mortisepins_s2
= -1;
1274 static gint hf_r3_mortisepins_s3
= -1;
1275 static gint hf_r3_mortisepins_s4
= -1;
1277 static gint hf_r3_checksumresults
= -1;
1278 static gint hf_r3_checksumresults_field
= -1;
1279 static gint hf_r3_checksumresults_length
= -1;
1280 static gint hf_r3_checksumresults_state
= -1;
1282 static gint hf_r3_forceoptions_length
= -1;
1283 static gint hf_r3_forceoptions_item
= -1;
1284 static gint hf_r3_forceoptions_state_8
= -1;
1285 static gint hf_r3_forceoptions_state_16
= -1;
1286 static gint hf_r3_forceoptions_state_24
= -1;
1287 static gint hf_r3_forceoptions_state_32
= -1;
1289 static gint hf_r3_peekpoke_operation
= -1;
1290 static gint hf_r3_peekpoke_address
= -1;
1291 static gint hf_r3_peekpoke_length
= -1;
1292 static gint hf_r3_peekpoke_poke8
= -1;
1293 static gint hf_r3_peekpoke_poke16
= -1;
1294 static gint hf_r3_peekpoke_poke24
= -1;
1295 static gint hf_r3_peekpoke_poke32
= -1;
1296 static gint hf_r3_peekpoke_pokestring
= -1;
1298 static gint hf_r3_firmwaredownload_length
= -1;
1299 static gint hf_r3_firmwaredownload_record
= -1;
1300 static gint hf_r3_firmwaredownload_action
= -1;
1301 static gint hf_r3_firmwaredownload_timeout
= -1;
1302 static gint hf_r3_firmwaredownload_nvram
= -1;
1303 static gint hf_r3_firmwaredownload_address
= -1;
1304 static gint hf_r3_firmwaredownload_bytes
= -1;
1305 static gint hf_r3_firmwaredownload_data
= -1;
1306 static gint hf_r3_firmwaredownload_crc
= -1;
1307 static gint hf_r3_firmwaredownload_crc_bad
= -1;
1309 static gint hf_r3_nvramchecksumvalue
= -1;
1310 static gint hf_r3_nvramchecksumvalue_fixup
= -1;
1312 static gint hf_r3_capabilities
= -1;
1313 static gint hf_r3_capabilities_length
= -1;
1314 static gint hf_r3_capabilities_type
= -1;
1315 static gint hf_r3_capabilities_value
= -1;
1317 static gint hf_r3_lockstate_passage
= -1;
1318 static gint hf_r3_lockstate_panic
= -1;
1319 static gint hf_r3_lockstate_lockout
= -1;
1320 static gint hf_r3_lockstate_relock
= -1;
1321 static gint hf_r3_lockstate_autoopen
= -1;
1322 static gint hf_r3_lockstate_nextauto
= -1;
1323 static gint hf_r3_lockstate_lockstate
= -1;
1324 static gint hf_r3_lockstate_wantstate
= -1;
1325 static gint hf_r3_lockstate_remote
= -1;
1326 static gint hf_r3_lockstate_update
= -1;
1327 static gint hf_r3_lockstate_exceptionspresent
= -1;
1328 static gint hf_r3_lockstate_exceptionsactive
= -1;
1329 static gint hf_r3_lockstate_timezonespresent
= -1;
1330 static gint hf_r3_lockstate_timezonesactive
= -1;
1331 static gint hf_r3_lockstate_autounlockspresent
= -1;
1332 static gint hf_r3_lockstate_autounlocksactive
= -1;
1333 static gint hf_r3_lockstate_uapmspresent
= -1;
1334 static gint hf_r3_lockstate_uapmsactive
= -1;
1335 static gint hf_r3_lockstate_uapmrelockspresent
= -1;
1336 static gint hf_r3_lockstate_uapmreslocksactive
= -1;
1337 static gint hf_r3_lockstate_nvramprotect
= -1;
1338 static gint hf_r3_lockstate_nvramchecksum
= -1;
1340 /*static gint hf_r3_mortisestatelog = -1;*/
1341 static gint hf_r3_mortisestatelog_pointer
= -1;
1342 static gint hf_r3_mortisestatelog_mortisetype
= -1;
1343 static gint hf_r3_mortisestatelog_waiting
= -1;
1344 static gint hf_r3_mortisestatelog_state
= -1;
1345 static gint hf_r3_mortisestatelog_last
= -1;
1346 static gint hf_r3_mortisestatelog_event
= -1;
1348 static gint hf_r3_timerchain_newtick
= -1;
1349 static gint hf_r3_timerchain_currentboundary
= -1;
1350 static gint hf_r3_timerchain_tasktag
= -1;
1351 static gint hf_r3_timerchain_address
= -1;
1352 static gint hf_r3_timerchain_reload
= -1;
1353 static gint hf_r3_timerchain_boundary
= -1;
1354 static gint hf_r3_timerchain_count
= -1;
1355 static gint hf_r3_timerchain_flags
= -1;
1357 static gint hf_r3_taskflags_taskid
= -1;
1358 static gint hf_r3_taskflags_flags
= -1;
1360 static gint hf_r3_checkpointlog_entryptr
= -1;
1361 static gint hf_r3_checkpointlog_rcon
= -1;
1362 static gint hf_r3_checkpointlog_checkpoint
= -1;
1364 static gint hf_r3_cpuregisters_intcon
= -1;
1365 static gint hf_r3_cpuregisters_intcon2
= -1;
1366 static gint hf_r3_cpuregisters_intcon3
= -1;
1367 static gint hf_r3_cpuregisters_pir1
= -1;
1368 static gint hf_r3_cpuregisters_pir2
= -1;
1369 static gint hf_r3_cpuregisters_pir3
= -1;
1370 static gint hf_r3_cpuregisters_pie1
= -1;
1371 static gint hf_r3_cpuregisters_pie2
= -1;
1372 static gint hf_r3_cpuregisters_pie3
= -1;
1373 static gint hf_r3_cpuregisters_ipr1
= -1;
1374 static gint hf_r3_cpuregisters_ipr2
= -1;
1375 static gint hf_r3_cpuregisters_ipr3
= -1;
1376 static gint hf_r3_cpuregisters_rcon
= -1;
1377 static gint hf_r3_cpuregisters_osccon
= -1;
1378 static gint hf_r3_cpuregisters_rcsta
= -1;
1379 static gint hf_r3_cpuregisters_txsta
= -1;
1380 static gint hf_r3_cpuregisters_rcsta2
= -1;
1381 static gint hf_r3_cpuregisters_txsta2
= -1;
1382 static gint hf_r3_cpuregisters_wdtcon
= -1;
1384 static gint hf_r3_cpuregisters_intcon_rbif
= -1;
1385 static gint hf_r3_cpuregisters_intcon_int0if
= -1;
1386 static gint hf_r3_cpuregisters_intcon_tmr0if
= -1;
1387 static gint hf_r3_cpuregisters_intcon_rbie
= -1;
1388 static gint hf_r3_cpuregisters_intcon_int0ie
= -1;
1389 static gint hf_r3_cpuregisters_intcon_tmr0ie
= -1;
1390 static gint hf_r3_cpuregisters_intcon_giel
= -1;
1391 static gint hf_r3_cpuregisters_intcon_gieh
= -1;
1392 static gint hf_r3_cpuregisters_intcon2_rbip
= -1;
1393 static gint hf_r3_cpuregisters_intcon2_int3ip
= -1;
1394 static gint hf_r3_cpuregisters_intcon2_tmr0ip
= -1;
1395 static gint hf_r3_cpuregisters_intcon2_intedg3
= -1;
1396 static gint hf_r3_cpuregisters_intcon2_intedg2
= -1;
1397 static gint hf_r3_cpuregisters_intcon2_intedg1
= -1;
1398 static gint hf_r3_cpuregisters_intcon2_intedg0
= -1;
1399 static gint hf_r3_cpuregisters_intcon2_rbpu
= -1;
1400 static gint hf_r3_cpuregisters_intcon3_int1if
= -1;
1401 static gint hf_r3_cpuregisters_intcon3_int2if
= -1;
1402 static gint hf_r3_cpuregisters_intcon3_int3if
= -1;
1403 static gint hf_r3_cpuregisters_intcon3_int1ie
= -1;
1404 static gint hf_r3_cpuregisters_intcon3_int2ie
= -1;
1405 static gint hf_r3_cpuregisters_intcon3_int3ie
= -1;
1406 static gint hf_r3_cpuregisters_intcon3_int1ip
= -1;
1407 static gint hf_r3_cpuregisters_intcon3_int2ip
= -1;
1408 static gint hf_r3_cpuregisters_pir1_tmr1if
= -1;
1409 static gint hf_r3_cpuregisters_pir1_tmr2if
= -1;
1410 static gint hf_r3_cpuregisters_pir1_ccp1if
= -1;
1411 static gint hf_r3_cpuregisters_pir1_ssp1if
= -1;
1412 static gint hf_r3_cpuregisters_pir1_tx1if
= -1;
1413 static gint hf_r3_cpuregisters_pir1_rc1if
= -1;
1414 static gint hf_r3_cpuregisters_pir1_adif
= -1;
1415 static gint hf_r3_cpuregisters_pir1_pspif
= -1;
1416 static gint hf_r3_cpuregisters_pir2_ccp2if
= -1;
1417 static gint hf_r3_cpuregisters_pir2_tmr3if
= -1;
1418 static gint hf_r3_cpuregisters_pir2_hlvdif
= -1;
1419 static gint hf_r3_cpuregisters_pir2_bcl1if
= -1;
1420 static gint hf_r3_cpuregisters_pir2_eeif
= -1;
1421 static gint hf_r3_cpuregisters_pir2_unused5
= -1;
1422 static gint hf_r3_cpuregisters_pir2_cmif
= -1;
1423 static gint hf_r3_cpuregisters_pir2_oscfif
= -1;
1424 static gint hf_r3_cpuregisters_pir3_ccp3if
= -1;
1425 static gint hf_r3_cpuregisters_pir3_ccp4if
= -1;
1426 static gint hf_r3_cpuregisters_pir3_ccp5if
= -1;
1427 static gint hf_r3_cpuregisters_pir3_tmr4if
= -1;
1428 static gint hf_r3_cpuregisters_pir3_tx2if
= -1;
1429 static gint hf_r3_cpuregisters_pir3_rc2if
= -1;
1430 static gint hf_r3_cpuregisters_pir3_bcl2if
= -1;
1431 static gint hf_r3_cpuregisters_pir3_ssp2if
= -1;
1432 static gint hf_r3_cpuregisters_pie1_tmr1ie
= -1;
1433 static gint hf_r3_cpuregisters_pie1_tmr2ie
= -1;
1434 static gint hf_r3_cpuregisters_pie1_ccp1ie
= -1;
1435 static gint hf_r3_cpuregisters_pie1_ssp1ie
= -1;
1436 static gint hf_r3_cpuregisters_pie1_tx1ie
= -1;
1437 static gint hf_r3_cpuregisters_pie1_rc1ie
= -1;
1438 static gint hf_r3_cpuregisters_pie1_adie
= -1;
1439 static gint hf_r3_cpuregisters_pie1_pspie
= -1;
1440 static gint hf_r3_cpuregisters_pie2_oscfie
= -1;
1441 static gint hf_r3_cpuregisters_pie2_cmie
= -1;
1442 static gint hf_r3_cpuregisters_pie2_unused2
= -1;
1443 static gint hf_r3_cpuregisters_pie2_eeie
= -1;
1444 static gint hf_r3_cpuregisters_pie2_bcl1ie
= -1;
1445 static gint hf_r3_cpuregisters_pie2_hlvdie
= -1;
1446 static gint hf_r3_cpuregisters_pie2_tmr3ie
= -1;
1447 static gint hf_r3_cpuregisters_pie2_ccp2ie
= -1;
1448 static gint hf_r3_cpuregisters_pie3_ccp3ie
= -1;
1449 static gint hf_r3_cpuregisters_pie3_ccp4ie
= -1;
1450 static gint hf_r3_cpuregisters_pie3_ccp5ie
= -1;
1451 static gint hf_r3_cpuregisters_pie3_tmr4ie
= -1;
1452 static gint hf_r3_cpuregisters_pie3_tx2ie
= -1;
1453 static gint hf_r3_cpuregisters_pie3_rc2ie
= -1;
1454 static gint hf_r3_cpuregisters_pie3_bcl2ie
= -1;
1455 static gint hf_r3_cpuregisters_pie3_ssp2ie
= -1;
1456 static gint hf_r3_cpuregisters_ipr1_tmr1ip
= -1;
1457 static gint hf_r3_cpuregisters_ipr1_tmr2ip
= -1;
1458 static gint hf_r3_cpuregisters_ipr1_ccp1ip
= -1;
1459 static gint hf_r3_cpuregisters_ipr1_ssp1ip
= -1;
1460 static gint hf_r3_cpuregisters_ipr1_tx1ip
= -1;
1461 static gint hf_r3_cpuregisters_ipr1_rc1ip
= -1;
1462 static gint hf_r3_cpuregisters_ipr1_adip
= -1;
1463 static gint hf_r3_cpuregisters_ipr1_pspip
= -1;
1464 static gint hf_r3_cpuregisters_ipr2_ccp2ip
= -1;
1465 static gint hf_r3_cpuregisters_ipr2_tmr3ip
= -1;
1466 static gint hf_r3_cpuregisters_ipr2_hlvdip
= -1;
1467 static gint hf_r3_cpuregisters_ipr2_bcl1ip
= -1;
1468 static gint hf_r3_cpuregisters_ipr2_eeip
= -1;
1469 static gint hf_r3_cpuregisters_ipr2_unused5
= -1;
1470 static gint hf_r3_cpuregisters_ipr2_cmip
= -1;
1471 static gint hf_r3_cpuregisters_ipr2_oscfip
= -1;
1472 static gint hf_r3_cpuregisters_ipr3_ccp2ip
= -1;
1473 static gint hf_r3_cpuregisters_ipr3_ccp4ip
= -1;
1474 static gint hf_r3_cpuregisters_ipr3_ccp5ip
= -1;
1475 static gint hf_r3_cpuregisters_ipr3_tmr4ip
= -1;
1476 static gint hf_r3_cpuregisters_ipr3_tx2ip
= -1;
1477 static gint hf_r3_cpuregisters_ipr3_rc2ip
= -1;
1478 static gint hf_r3_cpuregisters_ipr3_bcl2ip
= -1;
1479 static gint hf_r3_cpuregisters_ipr3_ssp2ip
= -1;
1480 static gint hf_r3_cpuregisters_rcon_bor
= -1;
1481 static gint hf_r3_cpuregisters_rcon_por
= -1;
1482 static gint hf_r3_cpuregisters_rcon_pd
= -1;
1483 static gint hf_r3_cpuregisters_rcon_to
= -1;
1484 static gint hf_r3_cpuregisters_rcon_unused4
= -1;
1485 static gint hf_r3_cpuregisters_rcon_ri
= -1;
1486 static gint hf_r3_cpuregisters_rcon_sboren
= -1;
1487 static gint hf_r3_cpuregisters_rcon_ipen
= -1;
1488 static gint hf_r3_cpuregisters_osccon_scs0
= -1;
1489 static gint hf_r3_cpuregisters_osccon_scs1
= -1;
1490 static gint hf_r3_cpuregisters_osccon_iofs
= -1;
1491 static gint hf_r3_cpuregisters_osccon_osts
= -1;
1492 static gint hf_r3_cpuregisters_osccon_ircf0
= -1;
1493 static gint hf_r3_cpuregisters_osccon_ircf1
= -1;
1494 static gint hf_r3_cpuregisters_osccon_ircf2
= -1;
1495 static gint hf_r3_cpuregisters_osccon_idlen
= -1;
1496 static gint hf_r3_cpuregisters_rcsta_rx9d
= -1;
1497 static gint hf_r3_cpuregisters_rcsta_oerr
= -1;
1498 static gint hf_r3_cpuregisters_rcsta_ferr
= -1;
1499 static gint hf_r3_cpuregisters_rcsta_adden
= -1;
1500 static gint hf_r3_cpuregisters_rcsta_cren
= -1;
1501 static gint hf_r3_cpuregisters_rcsta_sren
= -1;
1502 static gint hf_r3_cpuregisters_rcsta_rx9
= -1;
1503 static gint hf_r3_cpuregisters_rcsta_spen
= -1;
1504 static gint hf_r3_cpuregisters_txsta_tx9d
= -1;
1505 static gint hf_r3_cpuregisters_txsta_trmt
= -1;
1506 static gint hf_r3_cpuregisters_txsta_brgh
= -1;
1507 static gint hf_r3_cpuregisters_txsta_sendb
= -1;
1508 static gint hf_r3_cpuregisters_txsta_sync
= -1;
1509 static gint hf_r3_cpuregisters_txsta_txen
= -1;
1510 static gint hf_r3_cpuregisters_txsta_tx9
= -1;
1511 static gint hf_r3_cpuregisters_txsta_csrc
= -1;
1512 static gint hf_r3_cpuregisters_rcsta2_rx9d
= -1;
1513 static gint hf_r3_cpuregisters_rcsta2_oerr
= -1;
1514 static gint hf_r3_cpuregisters_rcsta2_ferr
= -1;
1515 static gint hf_r3_cpuregisters_rcsta2_adden
= -1;
1516 static gint hf_r3_cpuregisters_rcsta2_cren
= -1;
1517 static gint hf_r3_cpuregisters_rcsta2_sren
= -1;
1518 static gint hf_r3_cpuregisters_rcsta2_rx9
= -1;
1519 static gint hf_r3_cpuregisters_rcsta2_spen
= -1;
1520 static gint hf_r3_cpuregisters_txsta2_tx9d
= -1;
1521 static gint hf_r3_cpuregisters_txsta2_trmt
= -1;
1522 static gint hf_r3_cpuregisters_txsta2_brgh
= -1;
1523 static gint hf_r3_cpuregisters_txsta2_sendb
= -1;
1524 static gint hf_r3_cpuregisters_txsta2_sync
= -1;
1525 static gint hf_r3_cpuregisters_txsta2_txen
= -1;
1526 static gint hf_r3_cpuregisters_txsta2_tx9
= -1;
1527 static gint hf_r3_cpuregisters_txsta2_csrc
= -1;
1528 static gint hf_r3_cpuregisters_wdtcon_swdten
= -1;
1529 static gint hf_r3_cpuregisters_wdtcon_unused1
= -1;
1530 static gint hf_r3_cpuregisters_wdtcon_unused2
= -1;
1531 static gint hf_r3_cpuregisters_wdtcon_unused3
= -1;
1532 static gint hf_r3_cpuregisters_wdtcon_unused4
= -1;
1533 static gint hf_r3_cpuregisters_wdtcon_unused5
= -1;
1534 static gint hf_r3_cpuregisters_wdtcon_unused6
= -1;
1535 static gint hf_r3_cpuregisters_wdtcon_unused7
= -1;
1537 static gint hf_r3_dumpm41t81_reg00
= -1;
1538 static gint hf_r3_dumpm41t81_reg01
= -1;
1539 static gint hf_r3_dumpm41t81_reg02
= -1;
1540 static gint hf_r3_dumpm41t81_reg03
= -1;
1541 static gint hf_r3_dumpm41t81_reg04
= -1;
1542 static gint hf_r3_dumpm41t81_reg05
= -1;
1543 static gint hf_r3_dumpm41t81_reg06
= -1;
1544 static gint hf_r3_dumpm41t81_reg07
= -1;
1545 static gint hf_r3_dumpm41t81_reg08
= -1;
1546 static gint hf_r3_dumpm41t81_reg09
= -1;
1547 static gint hf_r3_dumpm41t81_reg0a
= -1;
1548 static gint hf_r3_dumpm41t81_reg0b
= -1;
1549 static gint hf_r3_dumpm41t81_reg0c
= -1;
1550 static gint hf_r3_dumpm41t81_reg0d
= -1;
1551 static gint hf_r3_dumpm41t81_reg0e
= -1;
1552 static gint hf_r3_dumpm41t81_reg0f
= -1;
1553 static gint hf_r3_dumpm41t81_reg10
= -1;
1554 static gint hf_r3_dumpm41t81_reg11
= -1;
1555 static gint hf_r3_dumpm41t81_reg12
= -1;
1556 static gint hf_r3_dumpm41t81_reg13
= -1;
1558 static gint hf_r3_dumpm41t81_reg00_sec1
= -1;
1559 static gint hf_r3_dumpm41t81_reg00_sec01
= -1;
1560 static gint hf_r3_dumpm41t81_reg01_st
= -1;
1561 static gint hf_r3_dumpm41t81_reg01_10sec
= -1;
1562 static gint hf_r3_dumpm41t81_reg01_1sec
= -1;
1563 static gint hf_r3_dumpm41t81_reg02_notused
= -1;
1564 static gint hf_r3_dumpm41t81_reg02_10min
= -1;
1565 static gint hf_r3_dumpm41t81_reg02_1min
= -1;
1566 static gint hf_r3_dumpm41t81_reg03_cbe
= -1;
1567 static gint hf_r3_dumpm41t81_reg03_cb
= -1;
1568 static gint hf_r3_dumpm41t81_reg03_10hour
= -1;
1569 static gint hf_r3_dumpm41t81_reg03_1hour
= -1;
1570 static gint hf_r3_dumpm41t81_reg04_notused
= -1;
1571 static gint hf_r3_dumpm41t81_reg04_dow
= -1;
1572 static gint hf_r3_dumpm41t81_reg05_notused
= -1;
1573 static gint hf_r3_dumpm41t81_reg05_10day
= -1;
1574 static gint hf_r3_dumpm41t81_reg05_1day
= -1;
1575 static gint hf_r3_dumpm41t81_reg06_notused
= -1;
1576 static gint hf_r3_dumpm41t81_reg06_10month
= -1;
1577 static gint hf_r3_dumpm41t81_reg06_1month
= -1;
1578 static gint hf_r3_dumpm41t81_reg07_10year
= -1;
1579 static gint hf_r3_dumpm41t81_reg07_1year
= -1;
1580 static gint hf_r3_dumpm41t81_reg08_out
= -1;
1581 static gint hf_r3_dumpm41t81_reg08_ft
= -1;
1582 static gint hf_r3_dumpm41t81_reg08_s
= -1;
1583 static gint hf_r3_dumpm41t81_reg08_cal
= -1;
1584 static gint hf_r3_dumpm41t81_reg09_notused
= -1;
1585 static gint hf_r3_dumpm41t81_reg09_bmb
= -1;
1586 static gint hf_r3_dumpm41t81_reg09_rb
= -1;
1587 static gint hf_r3_dumpm41t81_reg0a_afe
= -1;
1588 static gint hf_r3_dumpm41t81_reg0a_sqwe
= -1;
1589 static gint hf_r3_dumpm41t81_reg0a_abe
= -1;
1590 static gint hf_r3_dumpm41t81_reg0a_10monthalm
= -1;
1591 static gint hf_r3_dumpm41t81_reg0a_1monthalm
= -1;
1592 static gint hf_r3_dumpm41t81_reg0b_rpt5
= -1;
1593 static gint hf_r3_dumpm41t81_reg0b_rpt4
= -1;
1594 static gint hf_r3_dumpm41t81_reg0b_10dayalm
= -1;
1595 static gint hf_r3_dumpm41t81_reg0b_1dayalm
= -1;
1596 static gint hf_r3_dumpm41t81_reg0c_rpt3
= -1;
1597 static gint hf_r3_dumpm41t81_reg0c_ht
= -1;
1598 static gint hf_r3_dumpm41t81_reg0c_10houralm
= -1;
1599 static gint hf_r3_dumpm41t81_reg0c_1houralm
= -1;
1600 static gint hf_r3_dumpm41t81_reg0d_rpt2
= -1;
1601 static gint hf_r3_dumpm41t81_reg0d_10minalm
= -1;
1602 static gint hf_r3_dumpm41t81_reg0d_1minalm
= -1;
1603 static gint hf_r3_dumpm41t81_reg0e_rpt1
= -1;
1604 static gint hf_r3_dumpm41t81_reg0e_10secalm
= -1;
1605 static gint hf_r3_dumpm41t81_reg0e_1secalm
= -1;
1606 static gint hf_r3_dumpm41t81_reg0f_wdf
= -1;
1607 static gint hf_r3_dumpm41t81_reg0f_af
= -1;
1608 static gint hf_r3_dumpm41t81_reg0f_notused
= -1;
1609 static gint hf_r3_dumpm41t81_reg10_notused
= -1;
1610 static gint hf_r3_dumpm41t81_reg11_notused
= -1;
1611 static gint hf_r3_dumpm41t81_reg12_notused
= -1;
1612 static gint hf_r3_dumpm41t81_reg13_rs
= -1;
1613 static gint hf_r3_dumpm41t81_reg13_notused
= -1;
1615 static gint hf_r3_debuglog_recordnumber
= -1;
1616 static gint hf_r3_debuglog_flags
= -1;
1617 static gint hf_r3_debuglog_tick
= -1;
1619 static gint hf_r3_adduserparamtype
= -1;
1620 static gint hf_r3_adduserparamtypelength
= -1;
1621 static gint hf_r3_adduserparamtypetype
= -1;
1622 /*static gint hf_r3_adduserparamtypedatalen = -1;*/
1623 /*static gint hf_r3_adduserparamtypeerror = -1;*/
1624 static gint hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_LAST
];
1626 static gint ett_r3
= -1;
1627 static gint ett_r3header
= -1;
1628 static gint ett_r3tail
= -1;
1629 static gint ett_r3payload
= -1;
1630 static gint ett_r3cmd
= -1;
1631 static gint ett_r3configitem
= -1;
1632 static gint ett_r3upstreamcommand
= -1;
1633 static gint ett_r3upstreamfield
= -1;
1634 static gint ett_r3timezone
= -1;
1635 static gint ett_r3expireon
= -1;
1636 static gint ett_r3datetime
= -1;
1637 static gint ett_r3eventlogrecord
= -1;
1638 static gint ett_r3declinedlogrecord
= -1;
1639 static gint ett_r3alarmlogrecord
= -1;
1640 static gint ett_r3debugmsg
= -1;
1641 static gint ett_r3defineexceptionstartdate
= -1;
1642 static gint ett_r3defineexceptionenddate
= -1;
1643 static gint ett_r3defineexceptiongroupbits
= -1;
1644 static gint ett_r3definecalendarmonth
[13] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
1645 static gint ett_r3definetimezonestarttime
= -1;
1646 static gint ett_r3definetimezoneendtime
= -1;
1647 static gint ett_r3definetimezonedaymap
= -1;
1648 static gint ett_r3eventlogdumpstarttime
= -1;
1649 static gint ett_r3eventlogdumpendtime
= -1;
1650 static gint ett_r3declinedlogdumpstarttime
= -1;
1651 static gint ett_r3declinedlogdumpendtime
= -1;
1652 static gint ett_r3alarmlogdumpstarttime
= -1;
1653 static gint ett_r3alarmlogdumpendtime
= -1;
1654 static gint ett_r3clearnvram
= -1;
1655 static gint ett_r3filters
= -1;
1656 static gint ett_r3alarmlist
= -1;
1657 static gint ett_r3alarmcfg
= -1;
1658 static gint ett_r3commandmfg
= -1;
1659 static gint ett_r3serialnumber
= -1;
1660 static gint ett_r3iopins
= -1;
1661 static gint ett_r3checksumresults
= -1;
1662 static gint ett_r3checksumresultsfield
= -1;
1663 static gint ett_r3forceoptions
= -1;
1664 static gint ett_r3peekpoke
= -1;
1665 static gint ett_r3downloadfirmware
= -1;
1666 static gint ett_r3capabilities
= -1;
1667 static gint ett_r3lockstate
= -1;
1668 static gint ett_r3mortisestatelog
= -1;
1669 static gint ett_r3timerchain
= -1;
1670 static gint ett_r3taskflags
= -1;
1671 static gint ett_r3taskflagsentry
= -1;
1672 static gint ett_r3checkpointlog
= -1;
1673 static gint ett_r3checkpointlogentry
= -1;
1674 static gint ett_r3cpuregisters
= -1;
1675 static gint ett_r3cpuregister
= -1;
1676 static gint ett_r3m41t81registers
= -1;
1677 static gint ett_r3m41t81register
= -1;
1678 static gint ett_r3debuglogrecord
= -1;
1679 static gint ett_r3setdatetime
= -1;
1680 static gint ett_r3manageuser
= -1;
1682 static expert_field ei_r3_response_hasdata_octet_2
= EI_INIT
;
1683 static expert_field ei_r3_mfgfield_too_many_adc_values
= EI_INIT
;
1684 static expert_field ei_r3_peekpoke_operation
= EI_INIT
;
1685 static expert_field ei_r3_response_hasdata_octet_1
= EI_INIT
;
1686 static expert_field ei_r3_reserved_upstream_command_value
= EI_INIT
;
1687 static expert_field ei_r3_firmwaredownload_action
= EI_INIT
;
1688 static expert_field ei_r3_malformed_length
= EI_INIT
;
1689 static expert_field ei_r3_mfgfield
= EI_INIT
;
1690 static expert_field ei_r3_unknown_command_value
= EI_INIT
;
1691 static expert_field ei_r3_response_hasdata_octet_3
= EI_INIT
;
1692 static expert_field ei_r3_cmd_downloadfirmwaretimeout
= EI_INIT
;
1695 * Indicates next command to be processed as a manufacturing command
1697 static gint mfgCommandFlag
= FALSE
;
1700 * Some enums that don't exist in public.h and should
1704 CHECKPOINT_NONE
= 0,
1757 CHECKPOINT_WANDERING
,
1758 CHECKPOINT_STRAYHPINT
,
1759 CHECKPOINT_STRAYLPINT
,
1761 CHECKPOINT_DPACDEBUG
,
1768 CONFIGTYPE_NONE
= 0,
1780 DOWNLOADFIRMWARE_START
= 0,
1781 DOWNLOADFIRMWARE_DATA
,
1782 DOWNLOADFIRMWARE_COMPLETE
,
1783 DOWNLOADFIRMWARE_ABORT
,
1784 DOWNLOADFIRMWARE_RESET
,
1785 DOWNLOADFIRMWARE_LAST
1791 MORTISEEVENT_DX_THROWN
= 0,
1792 MORTISEEVENT_DX_RETRACTED
,
1793 MORTISEEVENT_LX_RETRACTED
,
1794 MORTISEEVENT_LX_EXTENDED
,
1795 MORTISEEVENT_AX_EXTENDED
,
1796 MORTISEEVENT_AX_RETRACTED
,
1797 MORTISEEVENT_RX_DEPRESSED
,
1798 MORTISEEVENT_RX_RELEASED
,
1799 MORTISEEVENT_PX_OPEN
,
1800 MORTISEEVENT_PX_CLOSED
,
1801 MORTISEEVENT_MX_UNLOCKED
,
1802 MORTISEEVENT_MX_LOCKED
,
1809 * Print things with nice textual names
1811 static const value_string r3_accessmodenames
[] =
1813 { ACCESSMODE_NONE
, "ACCESMODE_NONE" },
1814 { ACCESSMODE_PRIMARYONLY
, "ACCESSMODE_PRIMARYONLY" },
1815 { ACCESSMODE_PRIMARYORAUX
, "ACCESSMODE_PRIMARYORAUX" },
1816 { ACCESSMODE_PRIMARYANDAUX
, "ACCESSMODE_PRIMARYANDAUX" },
1817 { ACCESSMODE_PRIMARYTHENAUX
, "ACCESSMODE_PRIMARYTHENAUX" },
1820 static value_string_ext r3_accessmodenames_ext
= VALUE_STRING_EXT_INIT(r3_accessmodenames
);
1822 static const value_string r3_adduserparamtypenames
[] =
1824 { ADDUSERPARAMTYPE_DISPOSITION
, "ADDUSERPARAMTYPE_DISPOSITION" },
1825 { ADDUSERPARAMTYPE_USERNO
, "ADDUSERPARAMTYPE_USERNO" },
1826 { ADDUSERPARAMTYPE_ACCESSALWAYS
, "ADDUSERPARAMTYPE_ACCESSALWAYS" },
1827 { ADDUSERPARAMTYPE_ACCESSMODE
, "ADDUSERPARAMTYPE_ACCESSMODE" },
1828 { ADDUSERPARAMTYPE_CACHED
, "ADDUSERPARAMTYPE_CACHED" },
1829 { ADDUSERPARAMTYPE_USERTYPE
, "ADDUSERPARAMTYPE_USERTYPE" },
1830 { ADDUSERPARAMTYPE_PRIMARYFIELD
, "ADDUSERPARAMTYPE_PRIMARYFIELD" },
1831 { ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
, "ADDUSERPARAMTYPE_PRIMARYFIELDTYPE" },
1832 { ADDUSERPARAMTYPE_AUXFIELD
, "ADDUSERPARAMTYPE_AUXFIELD" },
1833 { ADDUSERPARAMTYPE_AUXFIELDTYPE
, "ADDUSERPARAMTYPE_AUXFIELDTYPE" },
1834 { ADDUSERPARAMTYPE_TIMEZONE
, "ADDUSERPARAMTYPE_TIMEZONE" },
1835 { ADDUSERPARAMTYPE_EXPIREON
, "ADDUSERPARAMTYPE_EXPIREON" },
1836 { ADDUSERPARAMTYPE_USECOUNT
, "ADDUSERPARAMTYPE_USECOUNT" },
1837 { ADDUSERPARAMTYPE_EXCEPTIONGROUP
, "ADDUSERPARAMTYPE_EXCEPTIONGROUP" },
1840 static value_string_ext r3_adduserparamtypenames_ext
= VALUE_STRING_EXT_INIT(r3_adduserparamtypenames
);
1842 static const value_string r3_alarmidnames
[] =
1844 { ALARMID_NONE
, "ALARMID_NONE" },
1845 { ALARMID_VALIDIN
, "ALARMID_VALIDIN" },
1846 { ALARMID_DENIEDACCESS
, "ALARMID_DENIEDACCESS" },
1847 { ALARMID_SECURED
, "ALARMID_SECURED" },
1848 { ALARMID_DOORFORCED
, "ALARMID_DOORFORCED" },
1849 { ALARMID_KEYOVERRIDE
, "ALARMID_KEYOVERRIDE" },
1850 { ALARMID_INVALIDENTRY
, "ALARMID_INVALIDENTRY" },
1851 { ALARMID_DOORAJAR
, "ALARMID_DOORAJAR" },
1852 { ALARMID_LOWBATTERY
, "ALARMID_LOWBATTERY" },
1853 { ALARMID_RXHELD
, "ALARMID_RXHELD" },
1856 static value_string_ext r3_alarmidnames_ext
= VALUE_STRING_EXT_INIT(r3_alarmidnames
);
1858 static const value_string r3_capabilitiesnames
[] =
1860 { CAPABILITIES_USERS
, "CAPABILITIES_USERS" },
1861 { CAPABILITIES_TIMEZONES
, "CAPABILITIES_TIMEZONES" },
1862 { CAPABILITIES_EXCEPTIONS
, "CAPABILITIES_EXCEPTIONS" },
1863 { CAPABILITIES_EXCEPTIONGROUPS
, "CAPABILITIES_EXCEPTIONGROUPS" },
1864 { CAPABILITIES_EVENTLOG
, "CAPABILITIES_EVENTLOG" },
1865 { CAPABILITIES_DECLINEDLOG
, "CAPABILITIES_DECLINEDLOG" },
1866 { CAPABILITIES_ALARMLOG
, "CAPABILITIES_ALARMLOG" },
1867 { CAPABILITIES_TOTALEVENTS
, "CAPABILITIES_TOTALEVENTS" },
1870 static value_string_ext r3_capabilitiesnames_ext
= VALUE_STRING_EXT_INIT(r3_capabilitiesnames
);
1872 static const value_string r3_checkpointnames
[] =
1874 { CHECKPOINT_NONE
, "CHECKPOINT_NONE" },
1875 { CHECKPOINT_ADC
, "CHECKPOINT_ADC" },
1876 { CHECKPOINT_DPAC1
, "CHECKPOINT_DPAC1" },
1877 { CHECKPOINT_DPAC2
, "CHECKPOINT_DPAC2" },
1878 { CHECKPOINT_I2C1
, "CHECKPOINT_I2C1" },
1879 { CHECKPOINT_I2C2
, "CHECKPOINT_I2C2" },
1880 { CHECKPOINT_I2C3
, "CHECKPOINT_I2C3" },
1881 { CHECKPOINT_I2C4
, "CHECKPOINT_I2C4" },
1882 { CHECKPOINT_I2C5
, "CHECKPOINT_I2C5" },
1883 { CHECKPOINT_I2C6
, "CHECKPOINT_I2C6" },
1884 { CHECKPOINT_I2C7
, "CHECKPOINT_I2C7" },
1885 { CHECKPOINT_I2C8
, "CHECKPOINT_I2C8" },
1886 { CHECKPOINT_I2C9
, "CHECKPOINT_I2C9" },
1887 { CHECKPOINT_I2C10
, "CHECKPOINT_I2C10" },
1888 { CHECKPOINT_I2C11
, "CHECKPOINT_I2C11" },
1889 { CHECKPOINT_I2C12
, "CHECKPOINT_I2C12" },
1890 { CHECKPOINT_I2C13
, "CHECKPOINT_I2C13" },
1891 { CHECKPOINT_I2C14
, "CHECKPOINT_I2C14" },
1892 { CHECKPOINT_I2C15
, "CHECKPOINT_I2C15" },
1893 { CHECKPOINT_I2C16
, "CHECKPOINT_I2C16" },
1894 { CHECKPOINT_I2C17
, "CHECKPOINT_I2C17" },
1895 { CHECKPOINT_I2C18
, "CHECKPOINT_I2C18" },
1896 { CHECKPOINT_I2C19
, "CHECKPOINT_I2C19" },
1897 { CHECKPOINT_I2C20
, "CHECKPOINT_I2C20" },
1898 { CHECKPOINT_I2C21
, "CHECKPOINT_I2C21" },
1899 { CHECKPOINT_I2C22
, "CHECKPOINT_I2C22" },
1900 { CHECKPOINT_I2C23
, "CHECKPOINT_I2C23" },
1901 { CHECKPOINT_I2C24
, "CHECKPOINT_I2C24" },
1902 { CHECKPOINT_I2C25
, "CHECKPOINT_I2C25" },
1903 { CHECKPOINT_I2C26
, "CHECKPOINT_I2C26" },
1904 { CHECKPOINT_I2C27
, "CHECKPOINT_I2C27" },
1905 { CHECKPOINT_I2C28
, "CHECKPOINT_I2C28" },
1906 { CHECKPOINT_I2C29
, "CHECKPOINT_I2C29" },
1907 { CHECKPOINT_I2C30
, "CHECKPOINT_I2C30" },
1908 { CHECKPOINT_I2C31
, "CHECKPOINT_I2C31" },
1909 { CHECKPOINT_I2C32
, "CHECKPOINT_I2C32" },
1910 { CHECKPOINT_I2C33
, "CHECKPOINT_I2C33" },
1911 { CHECKPOINT_I2C34
, "CHECKPOINT_I2C34" },
1912 { CHECKPOINT_I2C35
, "CHECKPOINT_I2C35" },
1913 { CHECKPOINT_I2C36
, "CHECKPOINT_I2C36" },
1914 { CHECKPOINT_I2C37
, "CHECKPOINT_I2C37" },
1915 { CHECKPOINT_I2C38
, "CHECKPOINT_I2C38" },
1916 { CHECKPOINT_I2C39
, "CHECKPOINT_I2C39" },
1917 { CHECKPOINT_I2C40
, "CHECKPOINT_I2C40" },
1918 { CHECKPOINT_I2C41
, "CHECKPOINT_I2C41" },
1919 { CHECKPOINT_I2C42
, "CHECKPOINT_I2C42" },
1920 { CHECKPOINT_I2C43
, "CHECKPOINT_I2C43" },
1921 { CHECKPOINT_I2C44
, "CHECKPOINT_I2C44" },
1922 { CHECKPOINT_I2C45
, "CHECKPOINT_I2C45" },
1923 { CHECKPOINT_NVRAM
, "CHECKPOINT_NVRAM" },
1924 { CHECKPOINT_SERIAL1
, "CHECKPOINT_SERIAL1" },
1925 { CHECKPOINT_SERIAL2
, "CHECKPOINT_SERIAL2" },
1926 { CHECKPOINT_SERIAL3
, "CHECKPOINT_SERIAL3" },
1927 { CHECKPOINT_WANDERING
, "CHECKPOINT_WANDERING" },
1928 { CHECKPOINT_STRAYHPINT
, "CHECKPOINT_STRAYHPINT" },
1929 { CHECKPOINT_STRAYLPINT
, "CHECKPOINT_STRAYLPINT" },
1930 { CHECKPOINT_TESTWDT
, "CHECKPOINT_TESTWDT" },
1931 { CHECKPOINT_DPACDEBUG
, "CHECKPOINT_DPACDEBUG" },
1934 static value_string_ext r3_checkpointnames_ext
= VALUE_STRING_EXT_INIT(r3_checkpointnames
);
1936 static const value_string r3_checksumresultnames
[] =
1938 { CHECKSUMRESULT_CONFIGURATIONNVRAM
, "CHECKSUMRESULT_CONFIGURATIONNVRAM" },
1939 { CHECKSUMRESULT_EXCEPTIONS
, "CHECKSUMRESULT_EXCEPTIONS" },
1940 { CHECKSUMRESULT_EXCEPTIONGROUPS
, "CHECKSUMRESULT_EXCEPTIONGROUPS" },
1941 { CHECKSUMRESULT_TZCALENDARS
, "CHECKSUMRESULT_TZCALENDARS" },
1942 { CHECKSUMRESULT_TIMEZONES
, "CHECKSUMRESULT_TIMEZONES" },
1943 { CHECKSUMRESULT_USERS
, "CHECKSUMRESULT_USERS" },
1944 { CHECKSUMRESULT_CACHELRU
, "CHECKSUMRESULT_CACHELRU" },
1947 static value_string_ext r3_checksumresultnames_ext
= VALUE_STRING_EXT_INIT(r3_checksumresultnames
);
1949 static const value_string r3_cmdnames
[] =
1951 { CMD_RESPONSE
, "CMD_RESPONSE" },
1952 { CMD_HANDSHAKE
, "CMD_HANDSHAKE" },
1953 { CMD_KILLSESSION
, "CMD_KILLSESSION" },
1954 { CMD_QUERYSERIALNUMBER
, "CMD_QUERYSERIALNUMBER" },
1955 { CMD_QUERYVERSION
, "CMD_QUERYVERSION" },
1956 { CMD_SETDATETIME
, "CMD_SETDATETIME" },
1957 { CMD_QUERYDATETIME
, "CMD_QUERYDATETIME" },
1958 { CMD_SETCONFIG
, "CMD_SETCONFIG" },
1959 { CMD_GETCONFIG
, "CMD_GETCONFIG" },
1960 { CMD_MANAGEUSER
, "CMD_MANAGEUSER" },
1961 { CMD_DELETEUSERS
, "CMD_DELETEUSERS" },
1962 { CMD_DEFINEEXCEPTION
, "CMD_DEFINEEXCEPTION" },
1963 { CMD_DEFINEEXCEPTIONGROUP
, "CMD_DEFINEEXCEPTIONGROUP" },
1964 { CMD_DEFINECALENDAR
, "CMD_DEFINECALENDAR" },
1965 { CMD_DEFINETIMEZONE
, "CMD_DEFINETIMEZONE" },
1966 { CMD_RMTAUTHRETRY
, "CMD_RMTAUTHRETRY" },
1967 { CMD_FILTERS
, "CMD_FILTERS" },
1968 { CMD_ALARMCONFIGURE
, "CMD_ALARMCONFIGURE" },
1969 { CMD_EVENTLOGDUMP
, "CMD_EVENTLOGDUMP" },
1970 { CMD_DECLINEDLOGDUMP
, "CMD_DECLINEDLOGDUMP" },
1971 { CMD_ALARMLOGDUMP
, "CMD_ALARMLOGDUMP" },
1972 { CMD_DOWNLOADFIRMWARE
, "CMD_DOWNLOADFIRMWARE" },
1973 { CMD_DOWNLOADFIRMWARETIMEOUT
, "CMD_DOWNLOADFIRMWARETIMEOUT" },
1974 { CMD_POWERTABLESELECTION
, "CMD_POWERTABLESELECTION" },
1975 { CMD_CLEARNVRAM
, "CMD_CLEARNVRAM" },
1976 { CMD_DPAC
, "CMD_DPAC" },
1977 { CMD_SELFTEST
, "CMD_SELFTEST" },
1978 { CMD_RESET
, "CMD_RESET" },
1979 { CMD_LOGWRITE
, "CMD_LOGWRITE" },
1980 { CMD_MFGCOMMAND
, "CMD_MFGCOMMAND" },
1981 { CMD_NVRAMBACKUP
, "CMD_NVRAMBACKUP" },
1982 { CMD_EXTENDEDRESPONSE
, "CMD_EXTENDEDRESPONSE" },
1985 static value_string_ext r3_cmdnames_ext
= VALUE_STRING_EXT_INIT(r3_cmdnames
);
1987 static const value_string r3_cmdmfgnames
[] =
1989 { CMDMFG_SETSERIALNUMBER
, "CMDMFG_SETSERIALNUMBER" },
1990 { CMDMFG_SETCRYPTKEY
, "CMDMFG_SETCRYPTKEY" },
1991 { CMDMFG_DUMPNVRAM
, "CMDMFG_DUMPNVRAM" },
1992 { CMDMFG_TERMINAL
, "CMDMFG_TERMINAL" },
1993 { CMDMFG_REMOTEUNLOCK
, "CMDMFG_REMOTEUNLOCK" },
1994 { CMDMFG_AUXCTLRVERSION
, "CMDMFG_AUXCTLRVERSION" },
1995 { CMDMFG_IOPINS
, "CMDMFG_IOPINS" },
1996 { CMDMFG_ADCS
, "CMDMFG_ADCS" },
1997 { CMDMFG_HARDWAREID
, "CMDMFG_HARDWAREID" },
1998 { CMDMFG_CHECKPOINTLOGDUMP
, "CMDMFG_CHECKPOINTLOGDUMP" },
1999 { CMDMFG_CHECKPOINTLOGCLEAR
, "CMDMFG_CHECKPOINTLOGCLEAR" },
2000 { CMDMFG_READREGISTERS
, "CMDMFG_READREGISTERS" },
2001 { CMDMFG_FORCEOPTIONS
, "CMDMFG_FORCEOPTIONS" },
2002 { CMDMFG_COMMUSER
, "CMDMFG_COMMUSER" },
2003 { CMDMFG_DUMPKEYPAD
, "CMDMFG_DUMPKEYPAD" },
2004 { CMDMFG_BATTERYCHECK
, "CMDMFG_BATTERYCHECK" },
2005 { CMDMFG_RAMREFRESH
, "CMDMFG_RAMREFRESH" },
2006 { CMDMFG_TASKFLAGS
, "CMDMFG_TASKFLAGS" },
2007 { CMDMFG_TIMERCHAIN
, "CMDMFG_TIMERCHAIN" },
2008 { CMDMFG_PEEKPOKE
, "CMDMFG_PEEKPOKE" },
2009 { CMDMFG_LOCKSTATE
, "CMDMFG_LOCKSTATE" },
2010 { CMDMFG_CAPABILITIES
, "CMDMFG_CAPABILITIES" },
2011 { CMDMFG_DUMPM41T81
, "CMDMFG_DUMPM41T81" },
2012 { CMDMFG_DEBUGLOGDUMP
, "CMDMFG_DEBUGLOGDUMP" },
2013 { CMDMFG_DEBUGLOGCLEAR
, "CMDMFG_DEBUGLOGCLEAR" },
2014 { CMDMFG_TESTWDT
, "CMDMFG_TESTWDT" },
2015 { CMDMFG_QUERYCKSUM
, "CMDMFG_QUERYCKSUM" },
2016 { CMDMFG_VALIDATECHECKSUMS
, "CMDMFG_VALIDATECHECKSUMS" },
2017 { CMDMFG_REBUILDLRUCACHE
, "CMDMFG_REBUILDLRUCACHE" },
2018 { CMDMFG_TZUPDATE
, "CMDMFG_TZUPDATE" },
2019 { CMDMFG_TESTPRESERVE
, "CMDMFG_TESTPRESERVE" },
2020 { CMDMFG_MORTISESTATELOGDUMP
, "CMDMFG_MORTISESTATELOGDUMP" },
2021 { CMDMFG_MORTISESTATELOGCLEAR
, "CMDMFG_MORTISESTATELOGCLEAR" },
2022 { CMDMFG_MORTISEPINS
, "CMDMFG_MORTISEPINS" },
2023 { CMDMFG_HALTANDCATCHFIRE
, "CMDMFG_HALTANDCATCHFIRE" },
2026 static value_string_ext r3_cmdmfgnames_ext
= VALUE_STRING_EXT_INIT(r3_cmdmfgnames
);
2028 static const value_string r3_configitemnames
[] =
2030 { CONFIGITEM_SERIAL_NUMBER
, "CONFIGITEM_SERIAL_NUMBER" },
2031 { CONFIGITEM_CRYPT_KEY
, "CONFIGITEM_CRYPT_KEY" },
2032 { CONFIGITEM_HARDWARE_OPTIONS_MFG
, "CONFIGITEM_HARDWARE_OPTIONS_MFG" },
2033 { CONFIGITEM_HARDWARE_OPTIONS
, "CONFIGITEM_HARDWARE_OPTIONS" },
2034 { CONFIGITEM_NVRAM_CHANGES
, "CONFIGITEM_NVRAM_CHANGES" },
2035 { CONFIGITEM_NVRAMDIRTY
, "CONFIGITEM_NVRAMDIRTY" },
2036 { CONFIGITEM_NVRAM_WV
, "CONFIGITEM_NVRAM_WV" },
2037 { CONFIGITEM_ENABLE_WDT
, "CONFIGITEM_ENABLE_WDT" },
2038 { CONFIGITEM_EARLY_ACK
, "CONFIGITEM_EARLY_ACK" },
2039 { CONFIGITEM_CONSOLE_AES_ONLY
, "CONFIGITEM_CONSOLE_AES_ONLY" },
2040 { CONFIGITEM_RADIO_AES_ONLY
, "CONFIGITEM_RADIO_AES_ONLY" },
2041 { CONFIGITEM_NDRLE
, "CONFIGITEM_NDRLE" },
2042 { CONFIGITEM_SOMF
, "CONFIGITEM_SOMF" },
2043 { CONFIGITEM_NOGAF
, "CONFIGITEM_NOGAF" },
2044 { CONFIGITEM_CARD_READER_POWER
, "CONFIGITEM_CARD_READER_POWER" },
2045 { CONFIGITEM_PROX_ENABLE
, "CONFIGITEM_PROX_ENABLE" },
2046 { CONFIGITEM_CKSUMCONFIG
, "CONFIGITEM_CKSUMCONFIG" },
2047 { CONFIGITEM_DAILY_BATTERY_CHECK
, "CONFIGITEM_DAILY_BATTERY_CHECK" },
2048 { CONFIGITEM_DAILY_BATTERY_CHECK_HOUR
, "CONFIGITEM_DAILY_BATTERY_CHECK_HOUR" },
2049 { CONFIGITEM_BATTERY_LOW
, "CONFIGITEM_BATTERY_LOW" },
2050 { CONFIGITEM_LRU_HEAD
, "CONFIGITEM_LRU_HEAD" },
2051 { CONFIGITEM_LRU_TAIL
, "CONFIGITEM_LRU_TAIL" },
2052 { CONFIGITEM_RTC_CALIBRATION
, "CONFIGITEM_RTC_CALIBRATION" },
2053 { CONFIGITEM_ACVREQUESTER
, "CONFIGITEM_ACVREQUESTER" },
2054 { CONFIGITEM_LOCAL_LED
, "CONFIGITEM_LOCAL_LED" },
2055 { CONFIGITEM_ERRCNT_XORLEN
, "CONFIGITEM_ERRCNT_XORLEN" },
2056 { CONFIGITEM_ERRCNT_CRC
, "CONFIGITEM_ERRCNT_CRC" },
2057 { CONFIGITEM_ERRCNT_NOTSIGIL
, "CONFIGITEM_ERRCNT_NOTSIGIL" },
2058 { CONFIGITEM_ERRCNT_TIMEOUT
, "CONFIGITEM_ERRCNT_TIMEOUT" },
2059 { CONFIGITEM_ERRCNT_TOOLONG
, "CONFIGITEM_ERRCNT_TOOLONG" },
2060 { CONFIGITEM_ERRCNT_TOOSHORT
, "CONFIGITEM_ERRCNT_TOOSHORT" },
2061 { CONFIGITEM_ERRCNT_HITDEFAULT
, "CONFIGITEM_ERRCNT_HITDEFAULT" },
2062 { CONFIGITEM_ERRCNT_OVERRUN
, "CONFIGITEM_ERRCNT_OVERRUN" },
2063 { CONFIGITEM_ERRCNT_UARTFE
, "CONFIGITEM_ERRCNT_UARTFE" },
2064 { CONFIGITEM_ERRCNT_UARTOE
, "CONFIGITEM_ERRCNT_UARTOE" },
2065 { CONFIGITEM_DST_SET
, "CONFIGITEM_DST_SET" },
2066 { CONFIGITEM_DST_MODE
, "CONFIGITEM_DST_MODE" },
2067 { CONFIGITEM_DST_FORWARD_MONTH
, "CONFIGITEM_DST_FORWARD_MONTH" },
2068 { CONFIGITEM_DST_FORWARD_DOM
, "CONFIGITEM_DST_FORWARD_DOM" },
2069 { CONFIGITEM_DST_FORWARD_OOD
, "CONFIGITEM_DST_FORWARD_OOD" },
2070 { CONFIGITEM_DST_FORWARD_DOW
, "CONFIGITEM_DST_FORWARD_DOW" },
2071 { CONFIGITEM_DST_FORWARD_HOUR
, "CONFIGITEM_DST_FORWARD_HOUR" },
2072 { CONFIGITEM_DST_FORWARD_MINUTE
, "CONFIGITEM_DST_FORWARD_MINUTE" },
2073 { CONFIGITEM_DST_FORWARD_ADJUST
, "CONFIGITEM_DST_FORWARD_ADJUST" },
2074 { CONFIGITEM_DST_BACK_MONTH
, "CONFIGITEM_DST_BACK_MONTH" },
2075 { CONFIGITEM_DST_BACK_DOM
, "CONFIGITEM_DST_BACK_DOM" },
2076 { CONFIGITEM_DST_BACK_OOD
, "CONFIGITEM_DST_BACK_OOD" },
2077 { CONFIGITEM_DST_BACK_DOW
, "CONFIGITEM_DST_BACK_DOW" },
2078 { CONFIGITEM_DST_BACK_HOUR
, "CONFIGITEM_DST_BACK_HOUR" },
2079 { CONFIGITEM_DST_BACK_MINUTE
, "CONFIGITEM_DST_BACK_MINUTE" },
2080 { CONFIGITEM_DST_BACK_ADJUST
, "CONFIGITEM_DST_BACK_ADJUST" },
2081 { CONFIGITEM_EVENTLOG_ZEROMEM
, "CONFIGITEM_EVENTLOG_ZEROMEM" },
2082 { CONFIGITEM_EVENTLOG_BEGIN
, "CONFIGITEM_EVENTLOG_BEGIN" },
2083 { CONFIGITEM_EVENTLOG_RECORD
, "CONFIGITEM_EVENTLOG_RECORD" },
2084 { CONFIGITEM_EVENTLOG_ENTRIES
, "CONFIGITEM_EVENTLOG_ENTRIES" },
2085 { CONFIGITEM_EVENTLOG_WARNDEVICE
, "CONFIGITEM_EVENTLOG_WARNDEVICE" },
2086 { CONFIGITEM_EVENTLOG_WARNEVERY
, "CONFIGITEM_EVENTLOG_WARNEVERY" },
2087 { CONFIGITEM_EVENTLOG_RMTDEVICE
, "CONFIGITEM_EVENTLOG_RMTDEVICE" },
2088 { CONFIGITEM_DECLINEDLOG_ZEROMEM
, "CONFIGITEM_DECLINEDLOG_ZEROMEM" },
2089 { CONFIGITEM_DECLINEDLOG_BEGIN
, "CONFIGITEM_DECLINEDLOG_BEGIN" },
2090 { CONFIGITEM_DECLINEDLOG_RECORD
, "CONFIGITEM_DECLINEDLOG_RECORD" },
2091 { CONFIGITEM_DECLINEDLOG_ENTRIES
, "CONFIGITEM_DECLINEDLOG_ENTRIES" },
2092 { CONFIGITEM_DECLINEDLOG_WARNDEVICE
, "CONFIGITEM_DECLINEDLOG_WARNDEVICE" },
2093 { CONFIGITEM_DECLINEDLOG_WARNEVERY
, "CONFIGITEM_DECLINEDLOG_WARNEVERY" },
2094 { CONFIGITEM_DECLINEDLOG_RMTDEVICE
, "CONFIGITEM_DECLINEDLOG_RMTDEVICE" },
2095 { CONFIGITEM_ALARMLOG_ZEROMEM
, "CONFIGITEM_ALARMLOG_ZEROMEM" },
2096 { CONFIGITEM_ALARMLOG_BEGIN
, "CONFIGITEM_ALARMLOG_BEGIN" },
2097 { CONFIGITEM_ALARMLOG_RECORD
, "CONFIGITEM_ALARMLOG_RECORD" },
2098 { CONFIGITEM_ALARMLOG_ENTRIES
, "CONFIGITEM_ALARMLOG_ENTRIES" },
2099 { CONFIGITEM_ALARMLOG_WARNDEVICE
, "CONFIGITEM_ALARMLOG_WARNDEVICE" },
2100 { CONFIGITEM_ALARMLOG_WARNEVERY
, "CONFIGITEM_ALARMLOG_WARNEVERY" },
2101 { CONFIGITEM_ALARMLOG_RMTDEVICE
, "CONFIGITEM_ALARMLOG_RMTDEVICE" },
2102 { CONFIGITEM_VISIBLE_FEEDBACK
, "CONFIGITEM_VISIBLE_FEEDBACK" },
2103 { CONFIGITEM_AUDIBLE_FEEDBACK
, "CONFIGITEM_AUDIBLE_FEEDBACK" },
2104 { CONFIGITEM_VISIBLE_INDICATORS
, "CONFIGITEM_VISIBLE_INDICATORS" },
2105 { CONFIGITEM_AUDIBLE_INDICATORS
, "CONFIGITEM_AUDIBLE_INDICATORS" },
2106 { CONFIGITEM_2NDPINDURATION
, "CONFIGITEM_2NDPINDURATION" },
2107 { CONFIGITEM_LOCKOUT_ATTEMPTS
, "CONFIGITEM_LOCKOUT_ATTEMPTS" },
2108 { CONFIGITEM_LOCKOUT_DURATION
, "CONFIGITEM_LOCKOUT_DURATION" },
2109 { CONFIGITEM_KEYPAD_INACTIVITY
, "CONFIGITEM_KEYPAD_INACTIVITY" },
2110 { CONFIGITEM_ICIDLE_DURATION
, "CONFIGITEM_ICIDLE_DURATION" },
2111 { CONFIGITEM_WRITE_DECLINED_LOG
, "CONFIGITEM_WRITE_DECLINED_LOG" },
2112 { CONFIGITEM_LOW_BATTERY_INDICATOR
, "CONFIGITEM_LOW_BATTERY_INDICATOR" },
2113 { CONFIGITEM_PANIC_MODE
, "CONFIGITEM_PANIC_MODE" },
2114 { CONFIGITEM_TIMEZONE_ENABLE
, "CONFIGITEM_TIMEZONE_ENABLE" },
2115 { CONFIGITEM_EXCEPTION_ENABLE
, "CONFIGITEM_EXCEPTION_ENABLE" },
2116 { CONFIGITEM_AUTOUNLOCK_ENABLE
, "CONFIGITEM_AUTOUNLOCK_ENABLE" },
2117 { CONFIGITEM_LOCK_PRIORITY_EMERGENCY
, "CONFIGITEM_LOCK_PRIORITY_EMERGENCY" },
2118 { CONFIGITEM_LOCK_PRIORITY_SUPERVISOR
, "CONFIGITEM_LOCK_PRIORITY_SUPERVISOR" },
2119 { CONFIGITEM_LOCK_PRIORITY_USER
, "CONFIGITEM_LOCK_PRIORITY_USER" },
2120 { CONFIGITEM_LOCK_PRIORITY_PASSAGE
, "CONFIGITEM_LOCK_PRIORITY_PASSAGE" },
2121 { CONFIGITEM_LOCK_PRIORITY_PANIC
, "CONFIGITEM_LOCK_PRIORITY_PANIC" },
2122 { CONFIGITEM_LOCK_PRIORITY_LOCKOUT
, "CONFIGITEM_LOCK_PRIORITY_LOCKOUT" },
2123 { CONFIGITEM_LOCK_PRIORITY_RELOCK
, "CONFIGITEM_LOCK_PRIORITY_RELOCK" },
2124 { CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN
, "CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN" },
2125 { CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE
, "CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE" },
2126 { CONFIGITEM_LOCK_PRIORITY_REMOTE
, "CONFIGITEM_LOCK_PRIORITY_REMOTE" },
2127 { CONFIGITEM_LOCK_TYPE
, "CONFIGITEM_LOCK_TYPE" },
2128 { CONFIGITEM_DOUBLE_PULSE
, "CONFIGITEM_DOUBLE_PULSE" },
2129 { CONFIGITEM_DOUBLE_DELAY
, "CONFIGITEM_DOUBLE_DELAY" },
2130 { CONFIGITEM_MOTOR_DURATION
, "CONFIGITEM_MOTOR_DURATION" },
2131 { CONFIGITEM_MORTISE_TYPE
, "CONFIGITEM_MORTISE_TYPE" },
2132 { CONFIGITEM_UNLOCK_TIME
, "CONFIGITEM_UNLOCK_TIME" },
2133 { CONFIGITEM_EXT_UNLOCK_TIME
, "CONFIGITEM_EXT_UNLOCK_TIME" },
2134 { CONFIGITEM_DOOR_AJAR_TIME
, "CONFIGITEM_DOOR_AJAR_TIME" },
2135 { CONFIGITEM_SESSION_TIMEOUT
, "CONFIGITEM_SESSION_TIMEOUT" },
2136 { CONFIGITEM_RETRY_ON_TIMEOUT
, "CONFIGITEM_RETRY_ON_TIMEOUT" },
2137 { CONFIGITEM_UNSOLICITED_ENCRYPT
, "CONFIGITEM_UNSOLICITED_ENCRYPT" },
2138 { CONFIGITEM_RMT_AUTH_TIMEOUT
, "CONFIGITEM_RMT_AUTH_TIMEOUT" },
2139 { CONFIGITEM_RMT_AUTH_DEVICE
, "CONFIGITEM_RMT_AUTH_DEVICE" },
2140 { CONFIGITEM_ALARM_DEVICE
, "CONFIGITEM_ALARM_DEVICE" },
2141 { CONFIGITEM_NOTIFY_DEVICE
, "CONFIGITEM_NOTIFY_DEVICE" },
2142 { CONFIGITEM_COMMUSER_DEVICE
, "CONFIGITEM_COMMUSER_DEVICE" },
2143 { CONFIGITEM_SCHEDULER_DEVICE
, "CONFIGITEM_SCHEDULER_DEVICE" },
2144 { CONFIGITEM_SCHEDULER_TYPE
, "CONFIGITEM_SCHEDULER_TYPE" },
2145 { CONFIGITEM_SCHEDULER_AWAKE
, "CONFIGITEM_SCHEDULER_AWAKE" },
2146 { CONFIGITEM_SCHEDULER_PERIOD
, "CONFIGITEM_SCHEDULER_PERIOD" },
2147 { CONFIGITEM_SCHEDULER_HOD
, "CONFIGITEM_SCHEDULER_HOD" },
2148 { CONFIGITEM_SCHEDULER_DOW
, "CONFIGITEM_SCHEDULER_DOW" },
2149 { CONFIGITEM_SCHEDULER_DOM
, "CONFIGITEM_SCHEDULER_DOM" },
2150 { CONFIGITEM_SCHEDULER_HM1
, "CONFIGITEM_SCHEDULER_HM1" },
2151 { CONFIGITEM_SCHEDULER_HM2
, "CONFIGITEM_SCHEDULER_HM2" },
2152 { CONFIGITEM_SCHEDULER_HM3
, "CONFIGITEM_SCHEDULER_HM3" },
2153 { CONFIGITEM_SCHEDULER_HM4
, "CONFIGITEM_SCHEDULER_HM4" },
2154 { CONFIGITEM_RADIO_TYPE
, "CONFIGITEM_RADIO_TYPE" },
2155 { CONFIGITEM_RADIO_MODE
, "CONFIGITEM_RADIO_MODE" },
2156 { CONFIGITEM_RADIO_TIMEOUT
, "CONFIGITEM_RADIO_TIMEOUT" },
2157 { CONFIGITEM_RADIO_ATTEMPTS
, "CONFIGITEM_RADIO_ATTEMPTS" },
2158 { CONFIGITEM_RADIO_HOUSEKEEPING
, "CONFIGITEM_RADIO_HOUSEKEEPING" },
2159 { CONFIGITEM_RADIO_LEAPUSERNAME
, "CONFIGITEM_RADIO_LEAPUSERNAME" },
2160 { CONFIGITEM_RADIO_LEAPPASSWORD
, "CONFIGITEM_RADIO_LEAPPASSWORD" },
2161 { CONFIGITEM_INHIBIT_VOLTAGE
, "CONFIGITEM_INHIBIT_VOLTAGE" },
2162 { CONFIGITEM_LOW_VOLTAGE
, "CONFIGITEM_LOW_VOLTAGE" },
2163 { CONFIGITEM_PT_RANGE_1
, "CONFIGITEM_PT_RANGE_1" },
2164 { CONFIGITEM_PT_RANGE_2
, "CONFIGITEM_PT_RANGE_2" },
2165 { CONFIGITEM_PT_RANGE_3
, "CONFIGITEM_PT_RANGE_3" },
2166 { CONFIGITEM_PT_RANGE_4
, "CONFIGITEM_PT_RANGE_4" },
2167 { CONFIGITEM_PT_RANGE_5
, "CONFIGITEM_PT_RANGE_5" },
2168 { CONFIGITEM_PT_RANGE_6
, "CONFIGITEM_PT_RANGE_6" },
2169 { CONFIGITEM_PT_RANGE_7
, "CONFIGITEM_PT_RANGE_7" },
2170 { CONFIGITEM_PT_RANGE_8
, "CONFIGITEM_PT_RANGE_8" },
2171 { CONFIGITEM_MAGCARD_IFS
, "CONFIGITEM_MAGCARD_IFS" },
2172 { CONFIGITEM_MAGCARD_FIELDS
, "CONFIGITEM_MAGCARD_FIELDS" },
2173 { CONFIGITEM_MAGCARD_OFFSET
, "CONFIGITEM_MAGCARD_OFFSET" },
2174 { CONFIGITEM_MAGCARD_DIGITS
, "CONFIGITEM_MAGCARD_DIGITS" },
2175 { CONFIGITEM_ALARMS
, "CONFIGITEM_ALARMS" },
2176 { CONFIGITEM_FILTERS
, "CONFIGITEM_FILTERS" },
2177 { CONFIGITEM_ALARMSTATE
, "CONFIGITEM_ALARMSTATE" },
2178 { CONFIGITEM_DOORSTATE
, "CONFIGITEM_DOORSTATE" },
2179 { CONFIGITEM_DPACDEBUG
, "CONFIGITEM_DPACDEBUG" },
2180 { CONFIGITEM_FAILOPENSECURE
, "CONFIGITEM_FAILOPENSECURE" },
2181 { CONFIGITEM_REPLACED_VOLTAGE
, "CONFIGITEM_REPLACED_VOLTAGE" },
2182 { CONFIGITEM_RX_HELD_TIME
, "CONFIGITEM_RX_HELD_TIME" },
2183 { CONFIGITEM_PACKET_TIMEOUT
, "CONFIGITEM_PACKET_TIMEOUT" },
2184 { CONFIGITEM_EXTENDEDRESPONSE
, "CONFIGITEM_EXTENDEDRESPONSE" },
2185 { CONFIGITEM_PASSAGEMODEINDICATOR
, "CONFIGITEM_PASSAGEMODEINDICATOR" },
2186 { CONFIGITEM_PFMRETURNTIME
, "CONFIGITEM_PFMRETURNTIME" },
2189 static value_string_ext r3_configitemnames_ext
= VALUE_STRING_EXT_INIT(r3_configitemnames
);
2191 static const value_string r3_configtypenames
[] =
2193 { CONFIGTYPE_NONE
, "CONFIGTYPE_NONE" },
2194 { CONFIGTYPE_BOOL
, "CONFIGTYPE_BOOL" },
2195 { CONFIGTYPE_8
, "CONFIGTYPE_8" },
2196 { CONFIGTYPE_16
, "CONFIGTYPE_16" },
2197 { CONFIGTYPE_32
, "CONFIGTYPE_32" },
2198 { CONFIGTYPE_STRING
, "CONFIGTYPE_STRING" },
2201 static value_string_ext r3_configtypenames_ext
= VALUE_STRING_EXT_INIT(r3_configtypenames
);
2203 static const value_string r3_dispositionnames
[] =
2205 { DISPOSITION_ADD
, "DISPOSITION_ADD" },
2206 { DISPOSITION_REPLACE
, "DISPOSITION_REPLACE" },
2207 { DISPOSITION_UPDATE
, "DISPOSITION_UPDATE" },
2208 { DISPOSITION_DELETE
, "DISPOSITION_DELETE" },
2209 { DISPOSITION_RETRIEVE
, "DISPOSITION_RETRIEVE" },
2212 static value_string_ext r3_dispositionnames_ext
= VALUE_STRING_EXT_INIT(r3_dispositionnames
);
2214 static const value_string r3_deleteusersnames
[] =
2216 { DELETEUSERS_ALL
, "DELETEUSER_ALL" },
2217 { DELETEUSERS_CACHED
, "DELETEUSER_CACHED" },
2220 static value_string_ext r3_deleteusersnames_ext
= VALUE_STRING_EXT_INIT(r3_deleteusersnames
);
2222 static const value_string r3_downloadfirmwarenames
[] =
2224 { DOWNLOADFIRMWARE_START
, "DOWNLOADFIRMWARE_START" },
2225 { DOWNLOADFIRMWARE_DATA
, "DOWNLOADFIRMWARE_DATA" },
2226 { DOWNLOADFIRMWARE_COMPLETE
, "DOWNLOADFIRMWARE_COMPLETE" },
2227 { DOWNLOADFIRMWARE_ABORT
, "DOWNLOADFIRMWARE_ABORT" },
2228 { DOWNLOADFIRMWARE_RESET
, "DOWNLOADFIRMWARE_RESET" },
2231 static value_string_ext r3_downloadfirmwarenames_ext
= VALUE_STRING_EXT_INIT(r3_downloadfirmwarenames
);
2233 static const value_string r3_encryptionschemenames
[] =
2235 { ENCRYPTIONSCHEME_NONE
, "ENCRYPTIONSCHEME_NONE" },
2236 { ENCRYPTIONSCHEME_ROLLING
, "ENCRYPTIONSCHEME_ROLLING" },
2237 { ENCRYPTIONSCHEME_SN
, "ENCRYPTIONSCHEME_SN" },
2238 { ENCRYPTIONSCHEME_AESIV
, "ENCRYPTIONSCHEME_AESIV" },
2239 { ENCRYPTIONSCHEME_AES
, "ENCRYPTIONSCHEME_AES" },
2242 static value_string_ext r3_encryptionschemenames_ext
= VALUE_STRING_EXT_INIT(r3_encryptionschemenames
);
2244 static const value_string r3_eventnames
[] =
2246 { EVENT_INVALIDPIN
, "EVENT_INVALIDPIN" },
2247 { EVENT_USER
, "EVENT_USER" },
2248 { EVENT_ONETIME
, "EVENT_ONETIME" },
2249 { EVENT_PASSAGEBEGIN
, "EVENT_PASSAGEBEGIN" },
2250 { EVENT_PASSAGEEND
, "EVENT_PASSAGEEND" },
2251 { EVENT_BADTIME
, "EVENT_BADTIME" },
2252 { EVENT_LOCKEDOUT
, "EVENT_LOCKEDOUT" },
2253 { EVENT_LOWBATTERY
, "EVENT_LOWBATTERY" },
2254 { EVENT_DEADBATTERY
, "EVENT_DEADBATTERY" },
2255 { EVENT_BATTERYREPLACED
, "EVENT_BATTERYREPLACED" },
2256 { EVENT_USERADDED
, "EVENT_USERADDED" },
2257 { EVENT_USERDELETED
, "EVENT_USERDELETED" },
2258 { EVENT_EMERGENCY
, "EVENT_EMERGENCY" },
2259 { EVENT_PANIC
, "EVENT_PANIC" },
2260 { EVENT_RELOCK
, "EVENT_RELOCK" },
2261 { EVENT_LOCKOUTBEGIN
, "EVENT_LOCKOUTBEGIN" },
2262 { EVENT_LOCKOUTEND
, "EVENT_LOCKOUTEND" },
2263 { EVENT_RESET
, "EVENT_RESET" },
2264 { EVENT_DATETIMESET
, "EVENT_DATETIMESET" },
2265 { EVENT_LOGCLEARED
, "EVENT_LOGCLEARED" },
2266 { EVENT_DBRESET
, "EVENT_DBRESET" },
2267 { EVENT_COMMSTARTED
, "EVENT_COMMSTARTED" },
2268 { EVENT_COMMENDED
, "EVENT_COMMENDED" },
2269 { EVENT_FIRMWAREABORT
, "EVENT_FIRMWAREABORT" },
2270 { EVENT_FIRMWAREERROR
, "EVENT_FIRMWAREERROR" },
2271 { EVENT_FIRMWARETIMEOUT
, "EVENT_FIRMWARETIMEOUT" },
2272 { EVENT_DSTFALLBACK
, "EVENT_DSTFALLBACK" },
2273 { EVENT_DSTSPRINGFORWARD
, "EVENT_DSTSPRINGFORWARD" },
2274 { EVENT_BOLTTHROWN
, "EVENT_BOLTTHROWN" },
2275 { EVENT_BOLTRETRACTED
, "EVENT_BOLTRETRACTED" },
2276 { EVENT_MASTERCODE
, "EVENT_MASTERCODE" },
2277 { EVENT_COMMUSER
, "EVENT_COMMUSER" },
2278 { EVENT_DPACDISABLED
, "EVENT_DPACDISABLED" },
2279 { EVENT_NOTIFY
, "EVENT_NOTIFY" },
2280 { EVENT_EXPIRED
, "EVENT_EXPIRED" },
2281 { EVENT_SUPERVISOR
, "EVENT_SUPERVISOR" },
2282 { EVENT_MCCENTER
, "EVENT_MCCENTER" },
2283 { EVENT_MCCEXIT
, "EVENT_MCCEXIT" },
2284 { EVENT_SERIALRXOVERRUN
, "EVENT_SERIALRXOVERRUN" },
2285 { EVENT_DPACRXOVERRUN
, "EVENT_DPACRXOVERRUN" },
2286 { EVENT_NVRAMPBCLEAR
, "EVENT_NVRAMPBCLEAR" },
2287 { EVENT_NVRAMLAYOUTCHANGE
, "EVENT_NVRAMLAYOUTCHANGE" },
2288 { EVENT_NVRAMOK
, "EVENT_NVRAMOK" },
2289 { EVENT_USERREPLACED
, "EVENT_USERREPLACED" },
2290 { EVENT_RADIOTIMEOUT
, "EVENT_RADIOTIMEOUT" },
2291 { EVENT_SUSPENDEDUSER
, "EVENT_SUSPENDEDUSER" },
2292 { EVENT_USERUPDATED
, "EVENT_USERUPDATED" },
2293 { EVENT_DOORBOLTED
, "EVENT_DOORBOLTED" },
2294 { EVENT_PANICACTIVE
, "EVENT_PANICACTIVE" },
2295 { EVENT_PASSAGEACTIVE
, "EVENT_PASSAGEACTIVE" },
2296 { EVENT_PASSAGEINACTIVE
, "EVENT_PASSAGEINACTIVE" },
2297 { EVENT_BADACCESSMODE
, "EVENT_BADACCESSMODE" },
2298 { EVENT_CLOCKERR
, "EVENT_CLOCKERR" },
2299 { EVENT_REMOTEUNLOCK
, "EVENT_REMOTEUNLOCK" },
2300 { EVENT_TZHAUDISABLED
, "EVENT_TZHAUDISABLED" },
2301 { EVENT_EVENTLOGWRAPPED
, "EVENT_EVENTLOGWRAPPED" },
2302 { EVENT_DECLINEDLOGWRAPPED
, "EVENT_DECLINEDLOGWRAPPED" },
2303 { EVENT_ALARMLOGWRAPPED
, "EVENT_ALARMLOGWRAPPED" },
2304 { EVENT_RADIOBUSYEMERGENCY
, "EVENT_RADIOBUSYEMERGENCY" },
2305 { EVENT_RADIOBUSYSUPERVISOR
, "EVENT_RADIOBUSYSUPERVISOR" },
2306 { EVENT_RADIOBUSYONETIME
, "EVENT_RADIOBUSYONETIME" },
2307 { EVENT_RADIOBUSYUSER
, "EVENT_RADIOBUSYUSER" },
2308 { EVENT_RADIOBUSYPANIC
, "EVENT_RADIOBUSYPANIC" },
2309 { EVENT_RADIOBUSYREX
, "EVENT_RADIOBUSYREX" },
2310 { EVENT_RADIOBUSYLOCKOUT
, "EVENT_RADIOBUSYLOCKOUT" },
2311 { EVENT_RADIOBUSYRELOCK
, "EVENT_RADIOBUSYRELOCK" },
2312 { EVENT_BATTERYCHECKHELDOFF
, "EVENT_BATTERYCHECKHELDOFF" },
2313 { EVENT_RMTAUTHREQUEST
, "EVENT_RMTAUTHREQUEST" },
2314 { EVENT_FIRMWAREUPDATE
, "EVENT_FIRMWAREUPDATE" },
2315 { EVENT_FIRMWAREUPDATEFAILED
, "EVENT_FIRMWAREUPDATEFAILED" },
2316 { EVENT_MSMFAILURE
, "EVENT_MSMFAILURE" },
2317 { EVENT_CLOCKRESET
, "EVENT_CLOCKRESET" },
2318 { EVENT_POWERFAIL
, "EVENT_POWERFAIL" },
2319 { EVENT_DPAC501WENTSTUPID
, "EVENT_DPAC501WENTSTUPID" },
2320 { EVENT_CHECKSUMCONFIG
, "EVENT_CHECKSUMCONFIG" },
2321 { EVENT_CHECKSUMTZ
, "EVENT_CHECKSUMTZ" },
2322 { EVENT_DEBUG
, "EVENT_DEBUG" },
2325 static value_string_ext r3_eventnames_ext
= VALUE_STRING_EXT_INIT(r3_eventnames
);
2327 static const value_string r3_fieldtypenames
[] =
2329 { FIELDTYPE_NONE
, "FIELDTYPE_NONE" },
2330 { FIELDTYPE_PIN
, "FIELDTYPE_PIN" },
2331 { FIELDTYPE_PROX
, "FIELDTYPE_PROX" },
2332 { FIELDTYPE_MAGCARD
, "FIELDTYPE_MAGCARD" },
2335 static value_string_ext r3_fieldtypenames_ext
= VALUE_STRING_EXT_INIT(r3_fieldtypenames
);
2337 static const value_string r3_filtereventnames
[] =
2339 { EVENT_INVALIDPIN
, "EVENT_INVALIDPIN" },
2340 { EVENT_USER
, "EVENT_USER" },
2341 { EVENT_ONETIME
, "EVENT_ONETIME" },
2342 { EVENT_PASSAGEBEGIN
, "EVENT_PASSAGEBEGIN" },
2343 { EVENT_PASSAGEEND
, "EVENT_PASSAGEEND" },
2344 { EVENT_BADTIME
, "EVENT_BADTIME" },
2345 { EVENT_LOCKEDOUT
, "EVENT_LOCKEDOUT" },
2346 { EVENT_LOWBATTERY
, "EVENT_LOWBATTERY" },
2347 { EVENT_DEADBATTERY
, "EVENT_DEADBATTERY" },
2348 { EVENT_BATTERYREPLACED
, "EVENT_BATTERYREPLACED" },
2349 { EVENT_USERADDED
, "EVENT_USERADDED" },
2350 { EVENT_USERDELETED
, "EVENT_USERDELETED" },
2351 { EVENT_EMERGENCY
, "EVENT_EMERGENCY" },
2352 { EVENT_PANIC
, "EVENT_PANIC" },
2353 { EVENT_RELOCK
, "EVENT_RELOCK" },
2354 { EVENT_LOCKOUTBEGIN
, "EVENT_LOCKOUTBEGIN" },
2355 { EVENT_LOCKOUTEND
, "EVENT_LOCKOUTEND" },
2356 { EVENT_RESET
, "EVENT_RESET" },
2357 { EVENT_DATETIMESET
, "EVENT_DATETIMESET" },
2358 { EVENT_LOGCLEARED
, "EVENT_LOGCLEARED" },
2359 { EVENT_DBRESET
, "EVENT_DBRESET" },
2360 { EVENT_COMMSTARTED
, "EVENT_COMMSTARTED" },
2361 { EVENT_COMMENDED
, "EVENT_COMMENDED" },
2362 { EVENT_FIRMWAREABORT
, "EVENT_FIRMWAREABORT" },
2363 { EVENT_FIRMWAREERROR
, "EVENT_FIRMWAREERROR" },
2364 { EVENT_FIRMWARETIMEOUT
, "EVENT_FIRMWARETIMEOUT" },
2365 { EVENT_DSTFALLBACK
, "EVENT_DSTFALLBACK" },
2366 { EVENT_DSTSPRINGFORWARD
, "EVENT_DSTSPRINGFORWARD" },
2367 { EVENT_BOLTTHROWN
, "EVENT_BOLTTHROWN" },
2368 { EVENT_BOLTRETRACTED
, "EVENT_BOLTRETRACTED" },
2369 { EVENT_MASTERCODE
, "EVENT_MASTERCODE" },
2370 { EVENT_COMMUSER
, "EVENT_COMMUSER" },
2371 { EVENT_DPACDISABLED
, "EVENT_DPACDISABLED" },
2372 { EVENT_NOTIFY
, "EVENT_NOTIFY" },
2373 { EVENT_EXPIRED
, "EVENT_EXPIRED" },
2374 { EVENT_SUPERVISOR
, "EVENT_SUPERVISOR" },
2375 { EVENT_MCCENTER
, "EVENT_MCCENTER" },
2376 { EVENT_MCCEXIT
, "EVENT_MCCEXIT" },
2377 { EVENT_SERIALRXOVERRUN
, "EVENT_SERIALRXOVERRUN" },
2378 { EVENT_DPACRXOVERRUN
, "EVENT_DPACRXOVERRUN" },
2379 { EVENT_NVRAMPBCLEAR
, "EVENT_NVRAMPBCLEAR" },
2380 { EVENT_NVRAMLAYOUTCHANGE
, "EVENT_NVRAMLAYOUTCHANGE" },
2381 { EVENT_NVRAMOK
, "EVENT_NVRAMOK" },
2382 { EVENT_USERREPLACED
, "EVENT_USERREPLACED" },
2383 { EVENT_RADIOTIMEOUT
, "EVENT_RADIOTIMEOUT" },
2384 { EVENT_SUSPENDEDUSER
, "EVENT_SUSPENDEDUSER" },
2385 { EVENT_USERUPDATED
, "EVENT_USERUPDATED" },
2386 { EVENT_DOORBOLTED
, "EVENT_DOORBOLTED" },
2387 { EVENT_PANICACTIVE
, "EVENT_PANICACTIVE" },
2388 { EVENT_PASSAGEACTIVE
, "EVENT_PASSAGEACTIVE" },
2389 { EVENT_PASSAGEINACTIVE
, "EVENT_PASSAGEINACTIVE" },
2390 { EVENT_BADACCESSMODE
, "EVENT_BADACCESSMODE" },
2391 { EVENT_CLOCKERR
, "EVENT_CLOCKERR" },
2392 { EVENT_REMOTEUNLOCK
, "EVENT_REMOTEUNLOCK" },
2393 { EVENT_TZHAUDISABLED
, "EVENT_TZHAUDISABLED" },
2394 { EVENT_EVENTLOGWRAPPED
, "EVENT_EVENTLOGWRAPPED" },
2395 { EVENT_DECLINEDLOGWRAPPED
, "EVENT_DECLINEDLOGWRAPPED" },
2396 { EVENT_ALARMLOGWRAPPED
, "EVENT_ALARMLOGWRAPPED" },
2397 { EVENT_RADIOBUSYEMERGENCY
, "EVENT_RADIOBUSYEMERGENCY" },
2398 { EVENT_RADIOBUSYSUPERVISOR
, "EVENT_RADIOBUSYSUPERVISOR" },
2399 { EVENT_RADIOBUSYONETIME
, "EVENT_RADIOBUSYONETIME" },
2400 { EVENT_RADIOBUSYUSER
, "EVENT_RADIOBUSYUSER" },
2401 { EVENT_RADIOBUSYPANIC
, "EVENT_RADIOBUSYPANIC" },
2402 { EVENT_RADIOBUSYREX
, "EVENT_RADIOBUSYREX" },
2403 { EVENT_RADIOBUSYLOCKOUT
, "EVENT_RADIOBUSYLOCKOUT" },
2404 { EVENT_RADIOBUSYRELOCK
, "EVENT_RADIOBUSYRELOCK" },
2405 { EVENT_BATTERYCHECKHELDOFF
, "EVENT_BATTERYCHECKHELDOFF" },
2406 { EVENT_RMTAUTHREQUEST
, "EVENT_RMTAUTHREQUEST" },
2407 { EVENT_FIRMWAREUPDATE
, "EVENT_FIRMWAREUPDATE" },
2408 { EVENT_FIRMWAREUPDATEFAILED
, "EVENT_FIRMWAREUPDATEFAILED" },
2409 { EVENT_MSMFAILURE
, "EVENT_MSMFAILURE" },
2410 { EVENT_CLOCKRESET
, "EVENT_CLOCKRESET" },
2411 { EVENT_POWERFAIL
, "EVENT_POWERFAIL" },
2412 { EVENT_DPAC501WENTSTUPID
, "EVENT_DPAC501WENTSTUPID" },
2413 { EVENT_CHECKSUMCONFIG
, "EVENT_CHECKSUMCONFIG" },
2414 { EVENT_CHECKSUMTZ
, "EVENT_CHECKSUMTZ" },
2415 { EVENT_DEBUG
, "EVENT_DEBUG" },
2416 { 0xfe, "(Enable All Filters)" },
2417 { 0xff, "(Disable All Filters)" },
2420 static value_string_ext r3_filtereventnames_ext
= VALUE_STRING_EXT_INIT(r3_filtereventnames
);
2422 static const value_string r3_filtertypenames
[] =
2424 { FILTERSELECT_RECORDING
, "FILTERSELECT_RECORDING" },
2425 { FILTERSELECT_REPORTING
, "FILTERSELECT_REPORTING" },
2428 static value_string_ext r3_filtertypenames_ext
= VALUE_STRING_EXT_INIT(r3_filtertypenames
);
2430 static const value_string r3_forceitemnames
[] =
2432 { FORCEITEM_RADIOPOWER
, "FORCEITEM_RADIOPOWER" },
2433 { FORCEITEM_RADIOENABLE
, "FORCEITEM_RADIOENABLE" },
2434 { FORCEITEM_LEDRED
, "FORCEITEM_LEDRED" },
2435 { FORCEITEM_LEDGREEN
, "FORCEITEM_LEDGREEN" },
2436 { FORCEITEM_LEDYELLOW
, "FORCEITEM_LEDYELLOW" },
2437 { FORCEITEM_PIEZO
, "FORCEITEM_PIEZO" },
2438 { FORCEITEM_MAGPOWER
, "FORCEITEM_MAGPOWER" },
2439 { FORCEITEM_MAGLEDA
, "FORCEITEM_MAGLEDA" },
2440 { FORCEITEM_MAGLEDB
, "FORCEITEM_MAGLEDB" },
2441 { FORCEITEM_PROXPOWER
, "FORCEITEM_PROXPOWER" },
2442 { FORCEITEM_PROXPING
, "FORCEITEM_PROXPING" },
2443 { FORCEITEM_PROXMODE
, "FORCEITEM_PROXMODE" },
2444 { FORCEITEM_I2CPOWER
, "FORCEITEM_I2CPOWER" },
2445 { FORCEITEM_MOTORARUN
, "FORCEITEM_MOTORARUN" },
2446 { FORCEITEM_MOTORBRUN
, "FORCEITEM_MOTORBRUN" },
2447 { FORCEITEM_VMON
, "FORCEITEM_VMON" },
2448 { FORCEITEM_PROX
, "FORCEITEM_PROX" },
2449 { FORCEITEM_MORTISETEST
, "FORCEITEM_MORTISETEST" },
2450 { FORCEITEM_KEYPADTEST
, "FORCEITEM_KEYPADTEST" },
2451 { FORCEITEM_MAGTEST
, "FORCEITEM_MAGTEST" },
2452 { FORCEITEM_PROXTEST
, "FORCEITEM_PROXTEST" },
2455 static value_string_ext r3_forceitemnames_ext
= VALUE_STRING_EXT_INIT(r3_forceitemnames
);
2457 static const value_string r3_mfgfieldnames
[] =
2459 { MFGFIELD_IOPINS
, "MFGFIELD_IOPINS" },
2460 { MFGFIELD_ADCS
, "MFGFIELD_ADCS" },
2461 { MFGFIELD_HARDWAREID
, "MFGFIELD_HARDWAREID" },
2462 { MFGFIELD_CHECKPOINTLOG
, "MFGFIELD_CHECKPOINTLOG" },
2463 { MFGFIELD_CPUREGISTERS
, "MFGFIELD_CPUREGISTERS" },
2464 { MFGFIELD_TASKFLAGS
, "MFGFIELD_TASKFLAGS" },
2465 { MFGFIELD_TIMERCHAIN
, "MFGFIELD_TIMERCHAIN" },
2466 { MFGFIELD_PEEKPOKE
, "MFGFIELD_PEEKPOKE" },
2467 { MFGFIELD_LOCKSTATE
, "MFGFIELD_LOCKSTATE" },
2468 { MFGFIELD_CAPABILITIES
, "MFGFIELD_CAPABILITIES" },
2469 { MFGFIELD_DUMPM41T81
, "MFGFIELD_DUMPM41T81" },
2470 { MFGFIELD_NVRAMCHECKSUMVALUE
, "MFGFIELD_NVRAMCHECKSUMVALUE" },
2471 { MFGFIELD_CHECKSUMRESULTS
, "MFGFIELD_CHECKSUMRESULTS" },
2472 { MFGFIELD_MORTISESTATELOG
, "MFGFIELD_MORTISESTATELOG" },
2473 { MFGFIELD_MORTISEPINS
, "MFGFIELD_MORTISEPINS" },
2474 { MFGFIELD_KEYPADCHAR
, "MFGFIELD_KEYPADCHAR" },
2475 { MFGFIELD_MAGCARD
, "MFGFIELD_MAGCARD" },
2476 { MFGFIELD_PROXCARD
, "MFGFIELD_PROXCARD" },
2479 static value_string_ext r3_mfgfieldnames_ext
= VALUE_STRING_EXT_INIT(r3_mfgfieldnames
);
2481 static const value_string r3_mortiseeventnames
[] =
2483 { MORTISEEVENT_DX_THROWN
, "MORTISEEVENT_DX_THROWN" },
2484 { MORTISEEVENT_DX_RETRACTED
, "MORTISEEVENT_DX_RETRACTED" },
2485 { MORTISEEVENT_LX_RETRACTED
, "MORTISEEVENT_LX_RETRACTED" },
2486 { MORTISEEVENT_LX_EXTENDED
, "MORTISEEVENT_LX_EXTENDED" },
2487 { MORTISEEVENT_AX_EXTENDED
, "MORTISEEVENT_AX_EXTENDED" },
2488 { MORTISEEVENT_AX_RETRACTED
, "MORTISEEVENT_AX_RETRACTED" },
2489 { MORTISEEVENT_RX_DEPRESSED
, "MORTISEEVENT_RX_DEPRESSED" },
2490 { MORTISEEVENT_RX_RELEASED
, "MORTISEEVENT_RX_RELEASED" },
2491 { MORTISEEVENT_PX_OPEN
, "MORTISEEVENT_PX_OPEN" },
2492 { MORTISEEVENT_PX_CLOSED
, "MORTISEEVENT_PX_CLOSED" },
2493 { MORTISEEVENT_MX_UNLOCKED
, "MORTISEEVENT_MX_UNLOCKED" },
2494 { MORTISEEVENT_MX_LOCKED
, "MORTISEEVENT_MX_LOCKED" },
2495 { MORTISEEVENT_LAST
, "MORTISEEVENT_LAST" },
2496 { MORTISEEVENT_IGNORE
, "MORTISEEVENT_IGNORE" },
2499 static value_string_ext r3_mortiseeventnames_ext
= VALUE_STRING_EXT_INIT(r3_mortiseeventnames
);
2501 static const value_string r3_mortisetypenames
[] =
2503 { MORTISETYPE_NONE
, "MORTISETYPE_NONE" },
2504 { MORTISETYPE_S82276
, "MORTISETYPE_S82276" },
2505 { MORTISETYPE_S82277
, "MORTISETYPE_S82277" },
2506 { MORTISETYPE_S82278
, "MORTISETYPE_S82278" },
2507 { MORTISETYPE_S82279
, "MORTISETYPE_S82279" },
2508 { MORTISETYPE_S10G77
, "MORTISETYPE_S10G77" },
2509 { MORTISETYPE_S8877
, "MORTISETYPE_S8877" },
2510 { MORTISETYPE_S8878
, "MORTISETYPE_S8878" },
2511 { MORTISETYPE_S8977
, "MORTISETYPE_S8977" },
2512 { MORTISETYPE_S8978
, "MORTISETYPE_S8978" },
2513 { MORTISETYPE_CRML20x36
, "MORTISETYPE_CRML20x36" },
2514 { MORTISETYPE_CRML20x35
, "MORTISETYPE_CRML20x35" },
2515 { MORTISETYPE_CRML20x34
, "MORTISETYPE_CRML20x34" },
2516 { MORTISETYPE_CRML20x33
, "MORTISETYPE_CRML20x33" },
2517 { MORTISETYPE_CRCL33x34
, "MORTISETYPE_CRCL33x34" },
2518 { MORTISETYPE_CR9X34
, "MORTISETYPE_CR9X34" },
2519 { MORTISETYPE_CR9X33
, "MORTISETYPE_CR9X33" },
2520 { MORTISETYPE_CR9MX34
, "MORTISETYPE_CR9MX34" },
2521 { MORTISETYPE_CR9MX33
, "MORTISETYPE_CR9MX33" },
2524 static value_string_ext r3_mortisetypenames_ext
= VALUE_STRING_EXT_INIT(r3_mortisetypenames
);
2526 static const value_string r3_peekpokenames
[] =
2528 { PEEKPOKE_READU8
, "PEEKPOKE_READU8" },
2529 { PEEKPOKE_READU16
, "PEEKPOKE_READU16" },
2530 { PEEKPOKE_READU24
, "PEEKPOKE_READU24" },
2531 { PEEKPOKE_READU32
, "PEEKPOKE_READU32" },
2532 { PEEKPOKE_READSTRING
, "PEEKPOKE_READSTRING" },
2533 { PEEKPOKE_WRITEU8
, "PEEKPOKE_WRITEU8" },
2534 { PEEKPOKE_WRITEU16
, "PEEKPOKE_WRITEU16" },
2535 { PEEKPOKE_WRITEU24
, "PEEKPOKE_WRITEU24" },
2536 { PEEKPOKE_WRITEU32
, "PEEKPOKE_WRITEU32" },
2537 { PEEKPOKE_WRITESTRING
, "PEEKPOKE_WRITESTRING" },
2540 static value_string_ext r3_peekpokenames_ext
= VALUE_STRING_EXT_INIT(r3_peekpokenames
);
2542 static const value_string r3_ppmisourcenames
[] =
2544 { PPMISOURCE_NONE
, "PPMISOURCE_NONE" },
2545 { PPMISOURCE_PIN
, "PPMISOURCE_PIN" },
2546 { PPMISOURCE_PROX
, "PPMISOURCE_PROX" },
2547 { PPMISOURCE_MAGCARD
, "PPMISOURCE_MAGCARD" },
2550 static value_string_ext r3_ppmisourcenames_ext
= VALUE_STRING_EXT_INIT(r3_ppmisourcenames
);
2552 static const value_string r3_responsetypenames
[] =
2554 { RESPONSETYPE_OK
, "RESPONSETYPE_OK" },
2555 { RESPONSETYPE_ERROR
, "RESPONSETYPE_ERROR" },
2556 { RESPONSETYPE_HASDATA
, "RESPONSETYPE_HASDATA" },
2557 { RESPONSETYPE_NOHANDLER
, "RESPONSETYPE_NOHANDLER" },
2558 { RESPONSETYPE_NOSESSION
, "RESPONSETYPE_NOSESSION" },
2559 { RESPONSETYPE_BADCOMMAND
, "RESPONSETYPE_BADCOMMAND" },
2560 { RESPONSETYPE_BADPARAMETER
, "RESPONSETYPE_BADPARAMETER" },
2561 { RESPONSETYPE_BADPARAMETERLEN
, "RESPONSETYPE_BADPARAMETERLEN" },
2562 { RESPONSETYPE_MISSINGPARAMETER
, "RESPONSETYPE_MISSINGPARAMETER" },
2563 { RESPONSETYPE_DUPLICATEPARAMETER
, "RESPONSETYPE_DUPLICATEPARAMETER" },
2564 { RESPONSETYPE_PARAMETERCONFLICT
, "RESPONSETYPE_PARAMETERCONFLICT" },
2565 { RESPONSETYPE_BADDEVICE
, "RESPONSETYPE_BADDEVICE" },
2566 { RESPONSETYPE_NVRAMERROR
, "RESPONSETYPE_NVRAMERROR" },
2567 { RESPONSETYPE_NVRAMERRORNOACK
, "RESPONSETYPE_NVRAMERRORNOACK" },
2568 { RESPONSETYPE_NVRAMERRORNOACK32
, "RESPONSETYPE_NVRAMERRORNOACK32" },
2569 { RESPONSETYPE_NOTI2CADDRESS
, "RESPONSETYPE_NOTI2CADDRESS" },
2570 { RESPONSETYPE_FIRMWAREERROR
, "RESPONSETYPE_FIRMWAREERROR" },
2571 { RESPONSETYPE_DUMPINPROGRESS
, "RESPONSETYPE_DUMPINPROGRESS" },
2572 { RESPONSETYPE_INTERNALERROR
, "RESPONSETYPE_INTERNALERROR" },
2573 { RESPONSETYPE_NOTIMPLEMENTED
, "RESPONSETYPE_NOTIMPLEMENTED" },
2574 { RESPONSETYPE_PINFORMATERROR
, "RESPONSETYPE_PINFORMATERROR" },
2575 { RESPONSETYPE_PINEXISTS
, "RESPONSETYPE_PINEXISTS" },
2576 { RESPONSETYPE_PINNOTFOUND
, "RESPONSETYPE_PINNOTFOUND" },
2577 { RESPONSETYPE_USERACTIVE
, "RESPONSETYPE_USERACTIVE" },
2578 { RESPONSETYPE_USERINACTIVE
, "RESPONSETYPE_USERINACTIVE" },
2579 { RESPONSETYPE_PARENTNOTFOUND
, "RESPONSETYPE_PARENTNOTFOUND" },
2580 { RESPONSETYPE_NOCHAIN
, "RESPONSETYPE_NOCHAIN" },
2581 { RESPONSETYPE_CAUGHTINLOOP
, "RESPONSETYPE_CAUGHTINLOOP" },
2582 { RESPONSETYPE_EVENTFILTERED
, "RESPONSETYPE_EVENTFILTERED" },
2583 { RESPONSETYPE_PAYLOADTOOLARGE
, "RESPONSETYPE_PAYLOADTOOLARGE" },
2584 { RESPONSETYPE_ENDOFDATA
, "RESPONSETYPE_ENDOFDATA" },
2585 { RESPONSETYPE_RMTAUTHREJECTED
, "RESPONSETYPE_RMTAUTHREJECTED" },
2586 { RESPONSETYPE_NVRAMVERSIONERROR
, "RESPONSETYPE_NVRAMVERSIONERROR" },
2587 { RESPONSETYPE_NOHARDWARE
, "RESPONSETYPE_NOHARDWARE" },
2588 { RESPONSETYPE_SCHEDULERCONFLICT
, "RESPONSETYPE_SCHEDULERCONFLICT" },
2589 { RESPONSETYPE_NVRAMWRITEERROR
, "RESPONSETYPE_NVRAMWRITEERROR" },
2590 { RESPONSETYPE_DECLINEDFILTERED
, "RESPONSETYPE_DECLINEDFILTERED" },
2591 { RESPONSETYPE_NECONFIGPARM
, "RESPONSETYPE_NECONFIGPARM" },
2592 { RESPONSETYPE_FLASHERASEERROR
, "RESPONSETYPE_FLASHERASEERROR" },
2593 { RESPONSETYPE_FLASHWRITEERROR
, "RESPONSETYPE_FLASHWRITEERROR" },
2594 { RESPONSETYPE_BADNVBACKUP
, "RESPONSETYPE_BADNVBACKUP" },
2595 { RESPONSETYPE_EARLYACK
, "RESPONSETYPE_EARLYACK" },
2596 { RESPONSETYPE_ALARMFILTERED
, "RESPONSETYPE_ALARMFILTERED" },
2597 { RESPONSETYPE_ACVFAILURE
, "RESPONSETYPE_ACVFAILURE" },
2598 { RESPONSETYPE_USERCHECKSUMERROR
, "RESPONSETYPE_USERCHECKSUMERROR" },
2599 { RESPONSETYPE_CHECKSUMERROR
, "RESPONSETYPE_CHECKSUMERROR" },
2600 { RESPONSETYPE_RTCSQWFAILURE
, "RESPONSETYPE_RTCSQWFAILURE" },
2601 { RESPONSETYPE_PRIORITYSHUTDOWN
, "RESPONSETYPE_PRIORITYSHUTDOWN" },
2602 { RESPONSETYPE_NOTMODIFIABLE
, "RESPONSETYPE_NOTMODIFIABLE" },
2603 { RESPONSETYPE_CANTPRESERVE
, "RESPONSETYPE_CANTPRESERVE" },
2604 { RESPONSETYPE_INPASSAGEMODE
, "RESPONSETYPE_INPASSAGEMODE" },
2607 static value_string_ext r3_responsetypenames_ext
= VALUE_STRING_EXT_INIT(r3_responsetypenames
);
2609 static const value_string r3_timezonemodenames
[] =
2611 { TIMEZONEMODE_NORMAL
, "TIMEZONEMODE_NORMAL" },
2612 { TIMEZONEMODE_EXCLUSION
, "TIMEZONEMODE_EXCLUSION" },
2613 { TIMEZONEMODE_AUTOTIME
, "TIMEZONEMODE_AUTOTIME" },
2614 { TIMEZONEMODE_AUTOFPT
, "TIMEZONEMODE_AUTOFPT" },
2615 { TIMEZONEMODE_UAPM
, "TIMEZONEMODE_UAPM" },
2618 static value_string_ext r3_timezonemodenames_ext
= VALUE_STRING_EXT_INIT(r3_timezonemodenames
);
2620 static const value_string r3_upstreamcommandnames
[] =
2622 { UPSTREAMCOMMAND_RESERVED
, "UPSTREAMCOMMAND_RESERVED" },
2623 { UPSTREAMCOMMAND_DEBUGMSG
, "UPSTREAMCOMMAND_DEBUGMSG" },
2624 { UPSTREAMCOMMAND_QUERYVERSION
, "UPSTREAMCOMMAND_QUERYVERSION" },
2625 { UPSTREAMCOMMAND_QUERYDATETIME
, "UPSTREAMCOMMAND_QUERYDATETIME" },
2626 { UPSTREAMCOMMAND_QUERYSERIALNUMBER
, "UPSTREAMCOMMAND_QUERYSERIALNUMBER" },
2627 { UPSTREAMCOMMAND_DUMPEVENTLOG
, "UPSTREAMCOMMAND_DUMPEVENTLOG" },
2628 { UPSTREAMCOMMAND_DUMPNVRAM
, "UPSTREAMCOMMAND_DUMPNVRAM" },
2629 { UPSTREAMCOMMAND_RMTAUTHREQUEST
, "UPSTREAMCOMMAND_RMTAUTHREQUEST" },
2630 { UPSTREAMCOMMAND_RETRIEVEUSER
, "UPSTREAMCOMMAND_RETRIEVEUSER" },
2631 { UPSTREAMCOMMAND_QUERYCONFIG
, "UPSTREAMCOMMAND_QUERYCONFIG" },
2632 { UPSTREAMCOMMAND_RMTEVENTLOGRECORD
, "UPSTREAMCOMMAND_RMTEVENTLOGRECORD" },
2633 { UPSTREAMCOMMAND_DPAC
, "UPSTREAMCOMMAND_DPAC" },
2634 { UPSTREAMCOMMAND_NOTIFY
, "UPSTREAMCOMMAND_NOTIFY" },
2635 { UPSTREAMCOMMAND_MFG
, "UPSTREAMCOMMAND_MFG" },
2636 { UPSTREAMCOMMAND_EVENTLOGWARNING
, "UPSTREAMCOMMAND_EVENTLOGWARNING" },
2637 { UPSTREAMCOMMAND_DUMPNVRAMRLE
, "UPSTREAMCOMMAND_DUMPNVRAMRLE" },
2638 { UPSTREAMCOMMAND_RMTDECLINEDRECORD
, "UPSTREAMCOMMAND_RMTDECLINEDRECORD" },
2639 { UPSTREAMCOMMAND_DECLINEDWARNING
, "UPSTREAMCOMMAND_DECLINEDWARNING" },
2640 { UPSTREAMCOMMAND_DUMPDECLINEDLOG
, "UPSTREAMCOMMAND_DUMPDECLINEDLOG" },
2641 { UPSTREAMCOMMAND_RMTALARMRECORD
, "UPSTREAMCOMMAND_RMTALARMRECORD" },
2642 { UPSTREAMCOMMAND_ALARMWARNING
, "UPSTREAMCOMMAND_ALARMWARNING" },
2643 { UPSTREAMCOMMAND_DUMPALARMLOG
, "UPSTREAMCOMMAND_DUMPALARMLOG" },
2644 { UPSTREAMCOMMAND_CONNECTSCHEDULER
, "UPSTREAMCOMMAND_CONNECTSCHEDULER" },
2645 { UPSTREAMCOMMAND_CONNECTCOMMUSER
, "UPSTREAMCOMMAND_CONNECTCOMMUSER" },
2646 { UPSTREAMCOMMAND_CONNECTALARM
, "UPSTREAMCOMMAND_CONNECTALARM" },
2647 { UPSTREAMCOMMAND_DUMPDEBUGLOG
, "UPSTREAMCOMMAND_DUMPDEBUGLOG" },
2650 static value_string_ext r3_upstreamcommandnames_ext
= VALUE_STRING_EXT_INIT(r3_upstreamcommandnames
);
2652 static const value_string r3_upstreamfieldnames
[] =
2654 { UPSTREAMFIELD_NOTUSED
, "UPSTREAMFIELD_NOTUSED" },
2655 { UPSTREAMFIELD_SERIALNUMBER
, "UPSTREAMFIELD_SERIALNUMBER" },
2656 { UPSTREAMFIELD_NAR
, "UPSTREAMFIELD_NAR" },
2657 { UPSTREAMFIELD_ENTRYDEVICE
, "UPSTREAMFIELD_ENTRYDEVICE" },
2658 { UPSTREAMFIELD_PPMIFIELDTYPE
, "UPSTREAMFIELD_PPMIFIELDTYPE" },
2659 { UPSTREAMFIELD_PIN
, "UPSTREAMFIELD_PIN" },
2660 { UPSTREAMFIELD_SEQUENCENUMBER
, "UPSTREAMFIELD_SEQUENCENUMBER" },
2661 { UPSTREAMFIELD_RESPONSEWINDOW
, "UPSTREAMFIELD_RESPONSEWINDOW" },
2662 { UPSTREAMFIELD_USERNUMBER
, "UPSTREAMFIELD_USERNUMBER" },
2663 { UPSTREAMFIELD_VERSION
, "UPSTREAMFIELD_VERSION" },
2664 { UPSTREAMFIELD_EVENTLOGRECORD
, "UPSTREAMFIELD_EVENTLOGRECORD" },
2665 { UPSTREAMFIELD_DATETIME
, "UPSTREAMFIELD_DATETIME" },
2666 { UPSTREAMFIELD_EVENTLOGRECORDCOUNT
, "UPSTREAMFIELD_EVENTLOGRECORDCOUNT" },
2667 { UPSTREAMFIELD_DECLINEDRECORDCOUNT
, "UPSTREAMFIELD_DECLINEDRECORDCOUNT" },
2668 { UPSTREAMFIELD_DECLINEDRECORD
, "UPSTREAMFIELD_DECLINEDRECORD" },
2669 { UPSTREAMFIELD_USERTYPE
, "UPSTREAMFIELD_USERTYPE" },
2670 { UPSTREAMFIELD_ACCESSALWAYS
, "UPSTREAMFIELD_ACCESSALWAYS" },
2671 { UPSTREAMFIELD_CACHED
, "UPSTREAMFIELD_CACHED" },
2672 { UPSTREAMFIELD_PRIMARYFIELDTYPE
, "UPSTREAMFIELD_PRIMARYFIELDTYPE" },
2673 { UPSTREAMFIELD_AUXFIELDTYPE
, "UPSTREAMFIELD_AUXFIELDTYPE" },
2674 { UPSTREAMFIELD_ACCESSMODE
, "UPSTREAMFIELD_ACCESSMODE" },
2675 { UPSTREAMFIELD_EXPIREON
, "UPSTREAMFIELD_EXPIREON" },
2676 { UPSTREAMFIELD_USECOUNT
, "UPSTREAMFIELD_USECOUNT" },
2677 { UPSTREAMFIELD_TIMEZONE
, "UPSTREAMFIELD_TIMEZONE" },
2678 { UPSTREAMFIELD_EXCEPTIONGROUP
, "UPSTREAMFIELD_EXCEPTIONGROUP" },
2679 { UPSTREAMFIELD_PRIMARYPIN
, "UPSTREAMFIELD_PRIMARYPIN" },
2680 { UPSTREAMFIELD_AUXPIN
, "UPSTREAMFIELD_AUXPIN" },
2681 { UPSTREAMFIELD_ALARMRECORDCOUNT
, "UPSTREAMFIELD_ALARMRECORDCOUNT" },
2682 { UPSTREAMFIELD_ALARMRECORD
, "UPSTREAMFIELD_ALARMRECORD" },
2683 { UPSTREAMFIELD_AUXCTLRVERSION
, "UPSTREAMFIELD_AUXCTLRVERSION" },
2686 static value_string_ext r3_upstreamfieldnames_ext
= VALUE_STRING_EXT_INIT(r3_upstreamfieldnames
);
2688 static const value_string r3_usertypenames
[] =
2690 { USERTYPE_NONE
, "USERTYPE_NONE" },
2691 { USERTYPE_MASTER
, "USERTYPE_MASTER" },
2692 { USERTYPE_EMERGENCY
, "USERTYPE_EMERGENCY" },
2693 { USERTYPE_SUPERVISOR
, "USERTYPE_SUPERVISOR" },
2694 { USERTYPE_USER
, "USERTYPE_USER" },
2695 { USERTYPE_EXTENDED
, "USERTYPE_EXTENDED" },
2696 { USERTYPE_PASSAGE
, "USERTYPE_PASSAGE" },
2697 { USERTYPE_ONETIME
, "USERTYPE_ONETIME" },
2698 { USERTYPE_PANIC
, "USERTYPE_PANIC" },
2699 { USERTYPE_LOCKOUT
, "USERTYPE_LOCKOUT" },
2700 { USERTYPE_RELOCK
, "USERTYPE_RELOCK" },
2701 { USERTYPE_NOTIFY
, "USERTYPE_NOTIFY" },
2702 { USERTYPE_COMM
, "USERTYPE_COMM" },
2703 { USERTYPE_SUSPENDED
, "USERTYPE_SUSPENDED" },
2706 static value_string_ext r3_usertypenames_ext
= VALUE_STRING_EXT_INIT(r3_usertypenames
);
2708 static const value_string r3_mfgnvramdumpnames
[] =
2716 static value_string_ext r3_mfgnvramdumpnames_ext
= VALUE_STRING_EXT_INIT(r3_mfgnvramdumpnames
);
2718 static const value_string r3_mfgremoteunlocknames
[] =
2725 static value_string_ext r3_mfgremoteunlocknames_ext
= VALUE_STRING_EXT_INIT(r3_mfgremoteunlocknames
);
2727 static const value_string r3_mfgtestpreservenames
[] =
2733 static value_string_ext r3_mfgtestpreservenames_ext
= VALUE_STRING_EXT_INIT(r3_mfgtestpreservenames
);
2735 static const value_string r3_daynames
[] =
2746 static value_string_ext r3_daynames_ext
= VALUE_STRING_EXT_INIT(r3_daynames
);
2748 static const value_string r3_monthnames
[] =
2765 static value_string_ext r3_monthnames_ext
= VALUE_STRING_EXT_INIT(r3_monthnames
);
2767 static const value_string r3_monthdaynames
[] =
2803 static value_string_ext r3_monthdaynames_ext
= VALUE_STRING_EXT_INIT(r3_monthdaynames
);
2805 static const value_string r3_powertablenames
[] =
2807 { 1, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2808 { 2, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2809 { 3, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2810 { 4, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8}" },
2811 { 5, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {13, 12, 12, 11, 11, 10, 10, 9}" },
2812 { 6, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {14, 13, 13, 12, 12, 11, 11, 10}" },
2813 { 7, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {15, 14, 14, 13, 13, 12, 12, 11}" },
2814 { 8, "CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {16, 15, 15, 14, 14, 13, 13, 12}" },
2817 static value_string_ext r3_powertablenames_ext
= VALUE_STRING_EXT_INIT(r3_powertablenames
);
2819 static const true_false_string tfs_rmtauthretry_flags
=
2825 static const true_false_string tfs_mortisepins_flags
=
2831 static const true_false_string tfs_errornoerror_flags
=
2837 static const string_string r3_snmanufacturernames
[] =
2840 { "KC", "Kimchuk" },
2844 static const string_string r3_snyearnames
[] =
2859 static const string_string r3_snmodelnames
[] =
2861 { "H", "Sx controller" },
2862 { "J", "Px controller" },
2863 { "D", "PG offline interface board" },
2864 { "E", "Px online interface board" },
2865 { "N", "Ethernet-PD board" },
2866 { "O", "CAM board" },
2870 static const string_string r3_sngroupnames
[] =
2874 { "C", "Corbin-Russwin" },
2878 static const string_string r3_snnidnames
[] =
2880 { "A", "Ethernet" },
2881 { "B", "DPAC 802.11b" },
2882 { "C", "DPAC 802.11bg" },
2888 static const string_string r3_snhidnames
[] =
2893 { "03", "eProx, Keypad" },
2895 { "05", "iProx, Keypad" },
2896 { "06", "iProx, eProx" },
2897 { "07", "iProx, eProx, Keypad" },
2898 { "08", "Mag Card" },
2899 { "09", "Mag Card, Keypad" },
2900 { "0a", "Mag Card, eProx" },
2901 { "0b", "Mag Card, eProx, Keypad" },
2902 { "0c", "Mag Card, iProx" },
2903 { "0d", "Mag Card, iProx, Keypad" },
2904 { "0e", "Mag Card, iProx, eProx" },
2905 { "0f", "Mag Card, iProx, eProx, Keypad" },
2906 { "10", "Biometric" },
2907 { "11", "Biometric, Keypad" },
2908 { "12", "Biometric, eProx" },
2909 { "13", "Biometric, eProx, Keypad" },
2910 { "14", "Biometric, iProx" },
2911 { "15", "Biometric, iProx, Keypad" },
2912 { "16", "Biometric, iProx, eProx" },
2913 { "17", "Biometric, iProx, eProx, Keypad" },
2914 { "18", "Biometric, Mag Card" },
2915 { "19", "Biometric, Mag Card, Keypad" },
2916 { "1a", "Biometric, Mag Card, eProx" },
2917 { "1b", "Biometric, Mag Card, eProx, Keypad" },
2918 { "1c", "Biometric, Mag Card, iProx" },
2919 { "1d", "Biometric, Mag Card, iProx, Keypad" },
2920 { "1e", "Biometric, Mag Card, iProx, eProx" },
2921 { "1f", "Biometric, Mag Card, iProx, eProx, Keypad" },
2925 static const string_string r3_snpowersupplynames
[] =
2927 { "A", "Batteries" },
2928 { "B", "External power" },
2929 { "C", "Power over Ethernet" },
2930 { "D", "External power w/ backup" },
2931 { "E", "Power over Ethernet w/ backup" },
2935 static const string_string r3_snmortisenames
[] =
2937 { "A", "Sargent 82276 mortise" },
2938 { "B", "Sargent 82277 mortise" },
2939 { "C", "Sargent 82278 mortise" },
2940 { "D", "Sargent 82279 mortise" },
2941 { "E", "Sargent 10G77 bored" },
2942 { "F", "Sargent 8877 exit" },
2943 { "G", "Sargent 8878 exit" },
2944 { "H", "Sargent 8977 exit" },
2945 { "I", "Sargent 8878 exit" },
2946 { "J", "Corbin-Russwin ML20736/ML20836 mortise" },
2947 { "K", "Corbin-Russwin ML20735/ML20835 mortise" },
2948 { "L", "Corbin-Russwin ML20734/ML20834 mortise" },
2949 { "M", "Corbin-Russwin ML20733/ML20833 mortise" },
2950 { "N", "Corbin-Russwin CL33734/CL33834 bored" },
2951 { "O", "Corbin-Russwin 9734/9834 exit" },
2952 { "P", "Corbin-Russwin 9733/9833 exit" },
2953 { "Q", "Corbin-Russwin 9M734/9M834 exit" },
2954 { "R", "Corbin-Russwin 9M733/9M833 exit" },
2959 * Mapping table so dissect_r3_cmd_setconfig() knows what the configuration item type is
2961 static configType_e configMap
[] =
2963 /* CONFIGITEM_SERIAL_NUMBER */ CONFIGTYPE_STRING
,
2964 /* CONFIGITEM_CRYPT_KEY */ CONFIGTYPE_STRING
,
2965 /* CONFIGITEM_HARDWARE_OPTIONS_MFG */ CONFIGTYPE_16
,
2966 /* CONFIGITEM_HARDWARE_OPTIONS */ CONFIGTYPE_16
,
2967 /* CONFIGITEM_NVRAM_CHANGES */ CONFIGTYPE_16
,
2968 /* CONFIGITEM_NVRAMDIRTY */ CONFIGTYPE_BOOL
,
2969 /* CONFIGITEM_NVRAM_WV */ CONFIGTYPE_BOOL
,
2970 /* CONFIGITEM_ENABLE_WDT */ CONFIGTYPE_BOOL
,
2971 /* CONFIGITEM_EARLY_ACK */ CONFIGTYPE_BOOL
,
2972 /* CONFIGITEM_CONSOLE_AES_ONLY */ CONFIGTYPE_BOOL
,
2973 /* CONFIGITEM_RADIO_AES_ONLY */ CONFIGTYPE_BOOL
,
2974 /* CONFIGITEM_NDRLE */ CONFIGTYPE_BOOL
,
2975 /* CONFIGITEM_SOMF */ CONFIGTYPE_BOOL
,
2976 /* CONFIGITEM_NOGAF */ CONFIGTYPE_BOOL
,
2977 /* CONFIGITEM_CARD_READER_POWER */ CONFIGTYPE_BOOL
,
2978 /* CONFIGITEM_PROX_ENABLE */ CONFIGTYPE_BOOL
,
2979 /* CONFIGITEM_CKSUMCONFIG */ CONFIGTYPE_BOOL
,
2980 /* CONFIGITEM_DAILY_BATTERY_CHECK */ CONFIGTYPE_BOOL
,
2981 /* CONFIGITEM_DAILY_BATTERY_CHECK_HOUR */ CONFIGTYPE_8
,
2982 /* CONFIGITEM_BATTERY_LOW */ CONFIGTYPE_BOOL
,
2983 /* CONFIGITEM_LRU_HEAD */ CONFIGTYPE_16
,
2984 /* CONFIGITEM_LRU_TAIL */ CONFIGTYPE_16
,
2985 /* CONFIGITEM_RTC_CALIBRATION */ CONFIGTYPE_8
,
2986 /* CONFIGITEM_ACVREQUESTER */ CONFIGTYPE_8
,
2987 /* CONFIGITEM_LOCAL_LED */ CONFIGTYPE_8
,
2988 /* CONFIGITEM_ERRCNT_XORLEN */ CONFIGTYPE_16
,
2989 /* CONFIGITEM_ERRCNT_CRC */ CONFIGTYPE_16
,
2990 /* CONFIGITEM_ERRCNT_NOTSIGIL */ CONFIGTYPE_16
,
2991 /* CONFIGITEM_ERRCNT_TIMEOUT */ CONFIGTYPE_16
,
2992 /* CONFIGITEM_ERRCNT_TOOLONG */ CONFIGTYPE_16
,
2993 /* CONFIGITEM_ERRCNT_TOOSHORT */ CONFIGTYPE_16
,
2994 /* CONFIGITEM_ERRCNT_HITDEFAULT */ CONFIGTYPE_16
,
2995 /* CONFIGITEM_ERRCNT_OVERRUN */ CONFIGTYPE_16
,
2996 /* CONFIGITEM_ERRCNT_UARTFE */ CONFIGTYPE_16
,
2997 /* CONFIGITEM_ERRCNT_UARTOE */ CONFIGTYPE_16
,
2998 /* CONFIGITEM_DST_SET */ CONFIGTYPE_BOOL
,
2999 /* CONFIGITEM_DST_MODE */ CONFIGTYPE_8
,
3000 /* CONFIGITEM_DST_FORWARD_MONTH */ CONFIGTYPE_8
,
3001 /* CONFIGITEM_DST_FORWARD_DOM */ CONFIGTYPE_8
,
3002 /* CONFIGITEM_DST_FORWARD_OOD */ CONFIGTYPE_8
,
3003 /* CONFIGITEM_DST_FORWARD_DOW */ CONFIGTYPE_8
,
3004 /* CONFIGITEM_DST_FORWARD_HOUR */ CONFIGTYPE_8
,
3005 /* CONFIGITEM_DST_FORWARD_MINUTE */ CONFIGTYPE_8
,
3006 /* CONFIGITEM_DST_FORWARD_ADJUST */ CONFIGTYPE_8
,
3007 /* CONFIGITEM_DST_BACK_MONTH */ CONFIGTYPE_8
,
3008 /* CONFIGITEM_DST_BACK_DOM */ CONFIGTYPE_8
,
3009 /* CONFIGITEM_DST_BACK_OOD */ CONFIGTYPE_8
,
3010 /* CONFIGITEM_DST_BACK_DOW */ CONFIGTYPE_8
,
3011 /* CONFIGITEM_DST_BACK_HOUR */ CONFIGTYPE_8
,
3012 /* CONFIGITEM_DST_BACK_MINUTE */ CONFIGTYPE_8
,
3013 /* CONFIGITEM_DST_BACK_ADJUST */ CONFIGTYPE_8
,
3014 /* CONFIGITEM_EVENTLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3015 /* CONFIGITEM_EVENTLOG_BEGIN */ CONFIGTYPE_16
,
3016 /* CONFIGITEM_EVENTLOG_RECORD */ CONFIGTYPE_16
,
3017 /* CONFIGITEM_EVENTLOG_ENTRIES */ CONFIGTYPE_16
,
3018 /* CONFIGITEM_EVENTLOG_WARNDEVICE */ CONFIGTYPE_8
,
3019 /* CONFIGITEM_EVENTLOG_WARNEVERY */ CONFIGTYPE_16
,
3020 /* CONFIGITEM_EVENTLOG_RMTDEVICE */ CONFIGTYPE_8
,
3021 /* CONFIGITEM_DECLINEDLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3022 /* CONFIGITEM_DECLINEDLOG_BEGIN */ CONFIGTYPE_16
,
3023 /* CONFIGITEM_DECLINEDLOG_RECORD */ CONFIGTYPE_16
,
3024 /* CONFIGITEM_DECLINEDLOG_ENTRIES */ CONFIGTYPE_16
,
3025 /* CONFIGITEM_DECLINEDLOG_WARNDEVICE */ CONFIGTYPE_8
,
3026 /* CONFIGITEM_DECLINEDLOG_WARNEVERY */ CONFIGTYPE_16
,
3027 /* CONFIGITEM_DECLINEDLOG_RMTDEVICE */ CONFIGTYPE_8
,
3028 /* CONFIGITEM_ALARMLOG_ZEROMEM */ CONFIGTYPE_BOOL
,
3029 /* CONFIGITEM_ALARMLOG_BEGIN */ CONFIGTYPE_16
,
3030 /* CONFIGITEM_ALARMLOG_RECORD */ CONFIGTYPE_16
,
3031 /* CONFIGITEM_ALARMLOG_ENTRIES */ CONFIGTYPE_16
,
3032 /* CONFIGITEM_ALARMLOG_WARNDEVICE */ CONFIGTYPE_8
,
3033 /* CONFIGITEM_ALARMLOG_WARNEVERY */ CONFIGTYPE_16
,
3034 /* CONFIGITEM_ALARMLOG_RMTDEVICE */ CONFIGTYPE_8
,
3035 /* CONFIGITEM_VISIBLE_FEEDBACK */ CONFIGTYPE_BOOL
,
3036 /* CONFIGITEM_AUDIBLE_FEEDBACK */ CONFIGTYPE_BOOL
,
3037 /* CONFIGITEM_VISIBLE_INDICATORS */ CONFIGTYPE_BOOL
,
3038 /* CONFIGITEM_AUDIBLE_INDICATORS */ CONFIGTYPE_BOOL
,
3039 /* CONFIGITEM_2NDPINDURATION */ CONFIGTYPE_8
,
3040 /* CONFIGITEM_LOCKOUT_ATTEMPTS */ CONFIGTYPE_8
,
3041 /* CONFIGITEM_LOCKOUT_DURATION */ CONFIGTYPE_8
,
3042 /* CONFIGITEM_KEYPAD_INACTIVITY */ CONFIGTYPE_8
,
3043 /* CONFIGITEM_ICIDLE_DURATION */ CONFIGTYPE_8
,
3044 /* CONFIGITEM_WRITE_DECLINED_LOG */ CONFIGTYPE_BOOL
,
3045 /* CONFIGITEM_LOW_BATTERY_INDICATOR */ CONFIGTYPE_BOOL
,
3046 /* CONFIGITEM_PANIC_MODE */ CONFIGTYPE_BOOL
,
3047 /* CONFIGITEM_TIMEZONE_ENABLE */ CONFIGTYPE_BOOL
,
3048 /* CONFIGITEM_EXCEPTION_ENABLE */ CONFIGTYPE_BOOL
,
3049 /* CONFIGITEM_AUTOUNLOCK_ENABLE */ CONFIGTYPE_BOOL
,
3050 /* CONFIGITEM_LOCK_PRIORITY_EMERGENCY */ CONFIGTYPE_8
,
3051 /* CONFIGITEM_LOCK_PRIORITY_SUPERVISOR */ CONFIGTYPE_8
,
3052 /* CONFIGITEM_LOCK_PRIORITY_USER */ CONFIGTYPE_8
,
3053 /* CONFIGITEM_LOCK_PRIORITY_PASSAGE */ CONFIGTYPE_8
,
3054 /* CONFIGITEM_LOCK_PRIORITY_PANIC */ CONFIGTYPE_8
,
3055 /* CONFIGITEM_LOCK_PRIORITY_LOCKOUT */ CONFIGTYPE_8
,
3056 /* CONFIGITEM_LOCK_PRIORITY_RELOCK */ CONFIGTYPE_8
,
3057 /* CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN */ CONFIGTYPE_8
,
3058 /* CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE */ CONFIGTYPE_8
,
3059 /* CONFIGITEM_LOCK_PRIORITY_REMOTE */ CONFIGTYPE_8
,
3060 /* CONFIGITEM_LOCK_TYPE */ CONFIGTYPE_8
,
3061 /* CONFIGITEM_DOUBLE_PULSE */ CONFIGTYPE_BOOL
,
3062 /* CONFIGITEM_DOUBLE_DELAY */ CONFIGTYPE_8
,
3063 /* CONFIGITEM_MOTOR_DURATION */ CONFIGTYPE_8
,
3064 /* CONFIGITEM_MORTISE_TYPE */ CONFIGTYPE_8
,
3065 /* CONFIGITEM_UNLOCK_TIME */ CONFIGTYPE_8
,
3066 /* CONFIGITEM_EXT_UNLOCK_TIME */ CONFIGTYPE_8
,
3067 /* CONFIGITEM_DOOR_AJAR_TIME */ CONFIGTYPE_8
,
3068 /* CONFIGITEM_SESSION_TIMEOUT */ CONFIGTYPE_8
,
3069 /* CONFIGITEM_RETRY_ON_TIMEOUT */ CONFIGTYPE_BOOL
,
3070 /* CONFIGITEM_UNSOLICITED_ENCRYPT */ CONFIGTYPE_8
,
3071 /* CONFIGITEM_RMT_AUTH_TIMEOUT */ CONFIGTYPE_8
,
3072 /* CONFIGITEM_RMT_AUTH_DEVICE */ CONFIGTYPE_8
,
3073 /* CONFIGITEM_ALARM_DEVICE */ CONFIGTYPE_8
,
3074 /* CONFIGITEM_NOTIFY_DEVICE */ CONFIGTYPE_8
,
3075 /* CONFIGITEM_COMMUSER_DEVICE */ CONFIGTYPE_8
,
3076 /* CONFIGITEM_SCHEDULER_DEVICE */ CONFIGTYPE_8
,
3077 /* CONFIGITEM_SCHEDULER_TYPE */ CONFIGTYPE_8
,
3078 /* CONFIGITEM_SCHEDULER_AWAKE */ CONFIGTYPE_8
,
3079 /* CONFIGITEM_SCHEDULER_PERIOD */ CONFIGTYPE_16
,
3080 /* CONFIGITEM_SCHEDULER_HOD */ CONFIGTYPE_STRING
,
3081 /* CONFIGITEM_SCHEDULER_DOW */ CONFIGTYPE_8
,
3082 /* CONFIGITEM_SCHEDULER_DOM */ CONFIGTYPE_32
,
3083 /* CONFIGITEM_SCHEDULER_HM1 */ CONFIGTYPE_16
,
3084 /* CONFIGITEM_SCHEDULER_HM2 */ CONFIGTYPE_16
,
3085 /* CONFIGITEM_SCHEDULER_HM3 */ CONFIGTYPE_16
,
3086 /* CONFIGITEM_SCHEDULER_HM4 */ CONFIGTYPE_16
,
3087 /* CONFIGITEM_RADIO_TYPE */ CONFIGTYPE_8
,
3088 /* CONFIGITEM_RADIO_MODE */ CONFIGTYPE_8
,
3089 /* CONFIGITEM_RADIO_TIMEOUT */ CONFIGTYPE_8
,
3090 /* CONFIGITEM_RADIO_ATTEMPTS */ CONFIGTYPE_8
,
3091 /* CONFIGITEM_RADIO_HOUSEKEEPING */ CONFIGTYPE_8
,
3092 /* CONFIGITEM_RADIO_LEAPUSERNAME */ CONFIGTYPE_STRING
,
3093 /* CONFIGITEM_RADIO_LEAPPASSWORD */ CONFIGTYPE_STRING
,
3094 /* CONFIGITEM_INHIBIT_VOLTAGE */ CONFIGTYPE_8
,
3095 /* CONFIGITEM_LOW_VOLTAGE */ CONFIGTYPE_8
,
3096 /* CONFIGITEM_PT_RANGE_1 */ CONFIGTYPE_8
,
3097 /* CONFIGITEM_PT_RANGE_2 */ CONFIGTYPE_8
,
3098 /* CONFIGITEM_PT_RANGE_3 */ CONFIGTYPE_8
,
3099 /* CONFIGITEM_PT_RANGE_4 */ CONFIGTYPE_8
,
3100 /* CONFIGITEM_PT_RANGE_5 */ CONFIGTYPE_8
,
3101 /* CONFIGITEM_PT_RANGE_6 */ CONFIGTYPE_8
,
3102 /* CONFIGITEM_PT_RANGE_7 */ CONFIGTYPE_8
,
3103 /* CONFIGITEM_PT_RANGE_8 */ CONFIGTYPE_8
,
3104 /* CONFIGITEM_MAGCARD_IFS */ CONFIGTYPE_BOOL
,
3105 /* CONFIGITEM_MAGCARD_FIELDS */ CONFIGTYPE_8
,
3106 /* CONFIGITEM_MAGCARD_OFFSET */ CONFIGTYPE_8
,
3107 /* CONFIGITEM_MAGCARD_DIGITS */ CONFIGTYPE_8
,
3108 /* CONFIGITEM_ALARMS */ CONFIGTYPE_STRING
,
3109 /* CONFIGITEM_FILTERS */ CONFIGTYPE_STRING
,
3110 /* CONFIGITEM_ALARMSTATE */ CONFIGTYPE_8
,
3111 /* CONFIGITEM_DOORSTATE */ CONFIGTYPE_8
,
3112 /* CONFIGITEM_DPACDEBUG */ CONFIGTYPE_BOOL
,
3113 /* CONFIGITEM_FAILOPENSECURE */ CONFIGTYPE_BOOL
,
3114 /* CONFIGITEM_REPLACED_VOLTAGE */ CONFIGTYPE_8
,
3115 /* CONFIGITEM_RX_HELD_TIME */ CONFIGTYPE_8
,
3116 /* CONFIGITEM_PACKET_TIMEOUT */ CONFIGTYPE_8
,
3117 /* CONFIGITEM_EXTENDEDRESPONSE */ CONFIGTYPE_BOOL
,
3118 /* CONFIGITEM_PASSAGEMODEINDICATOR */ CONFIGTYPE_BOOL
,
3119 /* CONFIGITEM_PFMRETURNTIME */ CONFIGTYPE_8
3124 * Dissectors for each command
3126 static void dissect_r3_cmd_response (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3127 static void dissect_r3_cmd_handshake (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3128 static void dissect_r3_cmd_killsession (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3129 static void dissect_r3_cmd_queryserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3130 static void dissect_r3_cmd_queryversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3131 static void dissect_r3_cmd_setdatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3132 static void dissect_r3_cmd_querydatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3133 static void dissect_r3_cmd_setconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3134 static void dissect_r3_cmd_getconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3135 static void dissect_r3_cmd_manageuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3136 static void dissect_r3_cmd_deleteusers (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3137 static void dissect_r3_cmd_defineexception (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3138 static void dissect_r3_cmd_defineexceptiongroup (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3139 static void dissect_r3_cmd_definecalendar (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3140 static void dissect_r3_cmd_definetimezone (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3141 static void dissect_r3_cmd_rmtauthretry (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3142 static void dissect_r3_cmd_filters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3143 static void dissect_r3_cmd_alarmconfigure (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3144 static void dissect_r3_cmd_eventlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3145 static void dissect_r3_cmd_declinedlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3146 static void dissect_r3_cmd_alarmlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3147 static void dissect_r3_cmd_downloadfirmware (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3148 static void dissect_r3_cmd_downloadfirmwaretimeout (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3149 static void dissect_r3_cmd_powertableselection (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3150 static void dissect_r3_cmd_clearnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3151 static void dissect_r3_cmd_dpac (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3152 static void dissect_r3_cmd_selftest (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3153 static void dissect_r3_cmd_reset (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3154 static void dissect_r3_cmd_logwrite (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3155 static void dissect_r3_cmd_mfgcommand (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3156 static void dissect_r3_cmd_nvrambackup (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3157 static void dissect_r3_cmd_extendedresponse (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3159 static void (*r3command_dissect
[]) (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3161 /* CMD_RESPONSE */ dissect_r3_cmd_response
,
3162 /* CMD_HANDSHAKE */ dissect_r3_cmd_handshake
,
3163 /* CMD_KILLSESSION */ dissect_r3_cmd_killsession
,
3164 /* CMD_QUERYSERIALNUMBER */ dissect_r3_cmd_queryserialnumber
,
3165 /* CMD_QUERYVERSION */ dissect_r3_cmd_queryversion
,
3166 /* CMD_SETDATETIME */ dissect_r3_cmd_setdatetime
,
3167 /* CMD_QUERYDATETIME */ dissect_r3_cmd_querydatetime
,
3168 /* CMD_SETCONFIG */ dissect_r3_cmd_setconfig
,
3169 /* CMD_GETCONFIG */ dissect_r3_cmd_getconfig
,
3170 /* CMD_MANAGEUSER */ dissect_r3_cmd_manageuser
,
3171 /* CMD_DELETEUSERS */ dissect_r3_cmd_deleteusers
,
3172 /* CMD_DEFINEEXCEPTION */ dissect_r3_cmd_defineexception
,
3173 /* CMD_DEFINEEXCEPTIONGROUP */ dissect_r3_cmd_defineexceptiongroup
,
3174 /* CMD_DEFINECALENDAR */ dissect_r3_cmd_definecalendar
,
3175 /* CMD_DEFINETIMEZONE */ dissect_r3_cmd_definetimezone
,
3176 /* CMD_RMTAUTHRETRY */ dissect_r3_cmd_rmtauthretry
,
3177 /* CMD_FILTERS */ dissect_r3_cmd_filters
,
3178 /* CMD_ALARMCONFIGURE */ dissect_r3_cmd_alarmconfigure
,
3179 /* CMD_EVENTLOGDUMP */ dissect_r3_cmd_eventlogdump
,
3180 /* CMD_DECLINEDLOGDUMP */ dissect_r3_cmd_declinedlogdump
,
3181 /* CMD_ALARMLOGDUMP */ dissect_r3_cmd_alarmlogdump
,
3182 /* CMD_DOWNLOADFIRMWARE */ dissect_r3_cmd_downloadfirmware
,
3183 /* CMD_DOWNLOADFIRMWARETIMEOUT */ dissect_r3_cmd_downloadfirmwaretimeout
,
3184 /* CMD_POWERTABLESELECTION */ dissect_r3_cmd_powertableselection
,
3185 /* CMD_CLEARNVRAM */ dissect_r3_cmd_clearnvram
,
3186 /* CMD_DPAC */ dissect_r3_cmd_dpac
,
3187 /* CMD_SELFTEST */ dissect_r3_cmd_selftest
,
3188 /* CMD_RESET */ dissect_r3_cmd_reset
,
3189 /* CMD_LOGWRITE */ dissect_r3_cmd_logwrite
,
3190 /* CMD_MFGCOMMAND */ dissect_r3_cmd_mfgcommand
,
3191 /* CMD_NVRAMBACKUP */ dissect_r3_cmd_nvrambackup
,
3192 /* CMD_EXTENDEDRESPONSE */ dissect_r3_cmd_extendedresponse
3195 static void dissect_r3_cmdmfg_setserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3196 static void dissect_r3_cmdmfg_setcryptkey (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3197 static void dissect_r3_cmdmfg_dumpnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3198 static void dissect_r3_cmdmfg_terminal (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3199 static void dissect_r3_cmdmfg_remoteunlock (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3200 static void dissect_r3_cmdmfg_auxctlrversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3201 static void dissect_r3_cmdmfg_iopins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3202 static void dissect_r3_cmdmfg_adcs (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3203 static void dissect_r3_cmdmfg_hardwareid (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3204 static void dissect_r3_cmdmfg_checkpointlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3205 static void dissect_r3_cmdmfg_checkpointlogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3206 static void dissect_r3_cmdmfg_readregisters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3207 static void dissect_r3_cmdmfg_forceoptions (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3208 static void dissect_r3_cmdmfg_commuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3209 static void dissect_r3_cmdmfg_dumpkeypad (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3210 static void dissect_r3_cmdmfg_batterycheck (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3211 static void dissect_r3_cmdmfg_ramrefresh (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3212 static void dissect_r3_cmdmfg_taskflags (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3213 static void dissect_r3_cmdmfg_timerchain (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3214 static void dissect_r3_cmdmfg_peekpoke (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3215 static void dissect_r3_cmdmfg_lockstate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3216 static void dissect_r3_cmdmfg_capabilities (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3217 static void dissect_r3_cmdmfg_dumpm41t81 (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3218 static void dissect_r3_cmdmfg_debuglogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3219 static void dissect_r3_cmdmfg_debuglogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3220 static void dissect_r3_cmdmfg_testwdt (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3221 static void dissect_r3_cmdmfg_querycksum (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3222 static void dissect_r3_cmdmfg_validatechecksums (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3223 static void dissect_r3_cmdmfg_rebuildlrucache (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3224 static void dissect_r3_cmdmfg_tzupdate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3225 static void dissect_r3_cmdmfg_testpreserve (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3226 static void dissect_r3_cmdmfg_mortisestatelogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3227 static void dissect_r3_cmdmfg_mortisestatelogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3228 static void dissect_r3_cmdmfg_mortisepins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3229 static void dissect_r3_cmdmfg_haltandcatchfire (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3231 static void (*r3commandmfg_dissect
[]) (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3233 /* CMDMFG_SETSERIALNUMBER */ dissect_r3_cmdmfg_setserialnumber
,
3234 /* CMDMFG_SETCRYPTKEY */ dissect_r3_cmdmfg_setcryptkey
,
3235 /* CMDMFG_DUMPNVRAM */ dissect_r3_cmdmfg_dumpnvram
,
3236 /* CMDMFG_TERMINAL */ dissect_r3_cmdmfg_terminal
,
3237 /* CMDMFG_REMOTEUNLOCK */ dissect_r3_cmdmfg_remoteunlock
,
3238 /* CMDMFG_AUXCTLRVERSION */ dissect_r3_cmdmfg_auxctlrversion
,
3239 /* CMDMFG_IOPINS */ dissect_r3_cmdmfg_iopins
,
3240 /* CMDMFG_ADCS */ dissect_r3_cmdmfg_adcs
,
3241 /* CMDMFG_HARDWAREID */ dissect_r3_cmdmfg_hardwareid
,
3242 /* CMDMFG_CHECKPOINTLOGDUMP */ dissect_r3_cmdmfg_checkpointlogdump
,
3243 /* CMDMFG_CHECKPOINTLOGCLEAR */ dissect_r3_cmdmfg_checkpointlogclear
,
3244 /* CMDMFG_READREGISTERS */ dissect_r3_cmdmfg_readregisters
,
3245 /* CMDMFG_FORCEOPTIONS */ dissect_r3_cmdmfg_forceoptions
,
3246 /* CMDMFG_COMMUSER */ dissect_r3_cmdmfg_commuser
,
3247 /* CMDMFG_DUMPKEYPAD */ dissect_r3_cmdmfg_dumpkeypad
,
3248 /* CMDMFG_BATTERYCHECK */ dissect_r3_cmdmfg_batterycheck
,
3249 /* CMDMFG_RAMREFRESH */ dissect_r3_cmdmfg_ramrefresh
,
3250 /* CMDMFG_TASKFLAGS */ dissect_r3_cmdmfg_taskflags
,
3251 /* CMDMFG_TIMERCHAIN */ dissect_r3_cmdmfg_timerchain
,
3252 /* CMDMFG_PEEKPOKE */ dissect_r3_cmdmfg_peekpoke
,
3253 /* CMDMFG_LOCKSTATE */ dissect_r3_cmdmfg_lockstate
,
3254 /* CMDMFG_CAPABILITIES */ dissect_r3_cmdmfg_capabilities
,
3255 /* CMDMFG_DUMPM41T81 */ dissect_r3_cmdmfg_dumpm41t81
,
3256 /* CMDMFG_DEBUGLOGDUMP */ dissect_r3_cmdmfg_debuglogdump
,
3257 /* CMDMFG_DEBUGLOGCLEAR */ dissect_r3_cmdmfg_debuglogclear
,
3258 /* CMDMFG_TESTWDT */ dissect_r3_cmdmfg_testwdt
,
3259 /* CMDMFG_QUERYCKSUM */ dissect_r3_cmdmfg_querycksum
,
3260 /* CMDMFG_VALIDATECHECKSUMS */ dissect_r3_cmdmfg_validatechecksums
,
3261 /* CMDMFG_REBUILDLRUCACHE */ dissect_r3_cmdmfg_rebuildlrucache
,
3262 /* CMDMFG_TZUPDATE */ dissect_r3_cmdmfg_tzupdate
,
3263 /* CMDMFG_TESTPRESERVE */ dissect_r3_cmdmfg_testpreserve
,
3264 /* CMDMFG_MORTISESTATELOGDUMP */ dissect_r3_cmdmfg_mortisestatelogdump
,
3265 /* CMDMFG_MORTISESTATELOGCLEAR */ dissect_r3_cmdmfg_mortisestatelogclear
,
3266 /* CMDMFG_MORTISEPINS */ dissect_r3_cmdmfg_mortisepins
,
3267 /* CMDMFG_HALTANDCATCHFIRE */ dissect_r3_cmdmfg_haltandcatchfire
3270 static void dissect_r3_response_singlebyte (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3271 static void dissect_r3_response_hasdata (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3273 static void (*r3response_dissect
[]) (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3275 /* RESPONSETYPE_OK */ dissect_r3_response_singlebyte
,
3276 /* RESPONSETYPE_ERROR */ dissect_r3_response_singlebyte
,
3277 /* RESPONSETYPE_HASDATA */ dissect_r3_response_hasdata
,
3278 /* RESPONSETYPE_NOHANDLER */ dissect_r3_response_singlebyte
,
3279 /* RESPONSETYPE_NOSESSION */ dissect_r3_response_singlebyte
,
3280 /* RESPONSETYPE_BADCOMMAND */ dissect_r3_response_singlebyte
,
3281 /* RESPONSETYPE_BADPARAMETER */ dissect_r3_response_singlebyte
,
3282 /* RESPONSETYPE_BADPARAMETERLEN */ dissect_r3_response_singlebyte
,
3283 /* RESPONSETYPE_MISSINGPARAMETER */ dissect_r3_response_singlebyte
,
3284 /* RESPONSETYPE_DUPLICATEPARAMETER */ dissect_r3_response_singlebyte
,
3285 /* RESPONSETYPE_PARAMETERCONFLICT */ dissect_r3_response_singlebyte
,
3286 /* RESPONSETYPE_BADDEVICE */ dissect_r3_response_singlebyte
,
3287 /* RESPONSETYPE_NVRAMERROR */ dissect_r3_response_singlebyte
,
3288 /* RESPONSETYPE_NVRAMERRORNOACK */ dissect_r3_response_singlebyte
,
3289 /* RESPONSETYPE_NVRAMERRORNOACK32 */ dissect_r3_response_singlebyte
,
3290 /* RESPONSETYPE_NOTI2CADDRESS */ dissect_r3_response_singlebyte
,
3291 /* RESPONSETYPE_FIRMWAREERROR */ dissect_r3_response_singlebyte
,
3292 /* RESPONSETYPE_DUMPINPROGRESS */ dissect_r3_response_singlebyte
,
3293 /* RESPONSETYPE_INTERNALERROR */ dissect_r3_response_singlebyte
,
3294 /* RESPONSETYPE_NOTIMPLEMENTED */ dissect_r3_response_singlebyte
,
3295 /* RESPONSETYPE_PINFORMATERROR */ dissect_r3_response_singlebyte
,
3296 /* RESPONSETYPE_PINEXISTS */ dissect_r3_response_singlebyte
,
3297 /* RESPONSETYPE_PINNOTFOUND */ dissect_r3_response_singlebyte
,
3298 /* RESPONSETYPE_USERACTIVE */ dissect_r3_response_singlebyte
,
3299 /* RESPONSETYPE_USERINACTIVE */ dissect_r3_response_singlebyte
,
3300 /* RESPONSETYPE_PARENTNOTFOUND */ dissect_r3_response_singlebyte
,
3301 /* RESPONSETYPE_NOCHAIN */ dissect_r3_response_singlebyte
,
3302 /* RESPONSETYPE_CAUGHTINLOOP */ dissect_r3_response_singlebyte
,
3303 /* RESPONSETYPE_EVENTFILTERED */ dissect_r3_response_singlebyte
,
3304 /* RESPONSETYPE_PAYLOADTOOLARGE */ dissect_r3_response_singlebyte
,
3305 /* RESPONSETYPE_ENDOFDATA */ dissect_r3_response_singlebyte
,
3306 /* RESPONSETYPE_RMTAUTHREJECTED */ dissect_r3_response_singlebyte
,
3307 /* RESPONSETYPE_NVRAMVERSIONERROR */ dissect_r3_response_singlebyte
,
3308 /* RESPONSETYPE_NOHARDWARE */ dissect_r3_response_singlebyte
,
3309 /* RESPONSETYPE_SCHEDULERCONFLICT */ dissect_r3_response_singlebyte
,
3310 /* RESPONSETYPE_NVRAMWRITEERROR */ dissect_r3_response_singlebyte
,
3311 /* RESPONSETYPE_DECLINEDFILTERED */ dissect_r3_response_singlebyte
,
3312 /* RESPONSETYPE_NECONFIGPARM */ dissect_r3_response_singlebyte
,
3313 /* RESPONSETYPE_FLASHERASEERROR */ dissect_r3_response_singlebyte
,
3314 /* RESPONSETYPE_FLASHWRITEERROR */ dissect_r3_response_singlebyte
,
3315 /* RESPONSETYPE_BADNVBACKUP */ dissect_r3_response_singlebyte
,
3316 /* RESPONSETYPE_EARLYACK */ dissect_r3_response_singlebyte
,
3317 /* RESPONSETYPE_ALARMFILTERED */ dissect_r3_response_singlebyte
,
3318 /* RESPONSETYPE_ACVFAILURE */ dissect_r3_response_singlebyte
,
3319 /* RESPONSETYPE_USERCHECKSUMERROR */ dissect_r3_response_singlebyte
,
3320 /* RESPONSETYPE_CHECKSUMERROR */ dissect_r3_response_singlebyte
,
3321 /* RESPONSETYPE_RTCSQWFAILURE */ dissect_r3_response_singlebyte
,
3322 /* RESPONSETYPE_PRIORITYSHUTDOWN */ dissect_r3_response_singlebyte
,
3323 /* RESPONSETYPE_NOTMODIFIABLE */ dissect_r3_response_singlebyte
,
3324 /* RESPONSETYPE_CANTPRESERVE */ dissect_r3_response_singlebyte
,
3325 /* RESPONSETYPE_INPASSAGEMODE */ dissect_r3_response_singlebyte
3328 static void dissect_r3_upstreamcommand_reserved (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3329 static void dissect_r3_upstreamcommand_debugmsg (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3330 static void dissect_r3_upstreamcommand_queryversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3331 static void dissect_r3_upstreamcommand_querydatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3332 static void dissect_r3_upstreamcommand_queryserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3333 static void dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3334 static void dissect_r3_upstreamcommand_dumpnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3335 static void dissect_r3_upstreamcommand_rmtquthrequest (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3336 static void dissect_r3_upstreamcommand_retrieveuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3337 static void dissect_r3_upstreamcommand_queryconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3338 static void dissect_r3_upstreamcommand_rmteventlogrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3339 static void dissect_r3_upstreamcommand_dpac (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3340 static void dissect_r3_upstreamcommand_notify (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3341 static void dissect_r3_upstreamcommand_mfg (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3342 static void dissect_r3_upstreamcommand_eventlogwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3343 static void dissect_r3_upstreamcommand_dumpnvramrle (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3344 static void dissect_r3_upstreamcommand_rmtdeclinedrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3345 static void dissect_r3_upstreamcommand_declinedwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3346 static void dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3347 static void dissect_r3_upstreamcommand_rmtalarmrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3348 static void dissect_r3_upstreamcommand_alarmwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3349 static void dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3350 static void dissect_r3_upstreamcommand_connectscheduler (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3351 static void dissect_r3_upstreamcommand_connectcommuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3352 static void dissect_r3_upstreamcommand_commandalarm (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3353 static void dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3355 static void (*r3upstreamcommand_dissect
[]) (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3357 /* UPSTREAMCOMMAND_RESERVED */ dissect_r3_upstreamcommand_reserved
,
3358 /* UPSTREAMCOMMAND_DEBUGMSG */ dissect_r3_upstreamcommand_debugmsg
,
3359 /* UPSTREAMCOMMAND_QUERYVERSION */ dissect_r3_upstreamcommand_queryversion
,
3360 /* UPSTREAMCOMMAND_QUERYDATETIME */ dissect_r3_upstreamcommand_querydatetime
,
3361 /* UPSTREAMCOMMAND_QUERYSERIALNUMBER */ dissect_r3_upstreamcommand_queryserialnumber
,
3362 /* UPSTREAMCOMMAND_DUMPEVENTLOG */ dissect_r3_upstreamcommand_dumpeventlog
,
3363 /* UPSTREAMCOMMAND_DUMPNVRAM */ dissect_r3_upstreamcommand_dumpnvram
,
3364 /* UPSTREAMCOMMAND_RMTAUTHREQUEST */ dissect_r3_upstreamcommand_rmtquthrequest
,
3365 /* UPSTREAMCOMMAND_RETRIEVEUSER */ dissect_r3_upstreamcommand_retrieveuser
,
3366 /* UPSTREAMCOMMAND_QUERYCONFIG */ dissect_r3_upstreamcommand_queryconfig
,
3367 /* UPSTREAMCOMMAND_RMTEVENTLOGRECORD */ dissect_r3_upstreamcommand_rmteventlogrecord
,
3368 /* UPSTREAMCOMMAND_DPAC */ dissect_r3_upstreamcommand_dpac
,
3369 /* UPSTREAMCOMMAND_NOTIFY */ dissect_r3_upstreamcommand_notify
,
3370 /* UPSTREAMCOMMAND_MFG */ dissect_r3_upstreamcommand_mfg
,
3371 /* UPSTREAMCOMMAND_EVENTLOGWARNING */ dissect_r3_upstreamcommand_eventlogwarning
,
3372 /* UPSTREAMCOMMAND_DUMPNVRAMRLE */ dissect_r3_upstreamcommand_dumpnvramrle
,
3373 /* UPSTREAMCOMMAND_RMTDECLINEDRECORD */ dissect_r3_upstreamcommand_rmtdeclinedrecord
,
3374 /* UPSTREAMCOMMAND_DECLINEDWARNING */ dissect_r3_upstreamcommand_declinedwarning
,
3375 /* UPSTREAMCOMMAND_DUMPDECLINEDLOG */ dissect_r3_upstreamcommand_dumpdeclinedlog
,
3376 /* UPSTREAMCOMMAND_RMTALARMRECORD */ dissect_r3_upstreamcommand_rmtalarmrecord
,
3377 /* UPSTREAMCOMMAND_ALARMWARNING */ dissect_r3_upstreamcommand_alarmwarning
,
3378 /* UPSTREAMCOMMAND_DUMPALARMLOG */ dissect_r3_upstreamcommand_dumpalarmlog
,
3379 /* UPSTREAMCOMMAND_CONNECTSCHEDULER */ dissect_r3_upstreamcommand_connectscheduler
,
3380 /* UPSTREAMCOMMAND_CONNECTCOMMUSER */ dissect_r3_upstreamcommand_connectcommuser
,
3381 /* UPSTREAMCOMMAND_CONNECTALARM */ dissect_r3_upstreamcommand_commandalarm
,
3382 /* UPSTREAMCOMMAND_DUMPDEBUGLOG */ dissect_r3_upstreamcommand_dumpdebuglog
3385 static void dissect_r3_upstreammfgfield_iopins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3386 static void dissect_r3_upstreammfgfield_adcs (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3387 static void dissect_r3_upstreammfgfield_hardwareid (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3388 static void dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3389 static void dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3390 static void dissect_r3_upstreammfgfield_taskflags (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3391 static void dissect_r3_upstreammfgfield_timerchain (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3392 static void dissect_r3_upstreammfgfield_peekpoke (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3393 static void dissect_r3_upstreammfgfield_lockstate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3394 static void dissect_r3_upstreammfgfield_capabilities (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3395 static void dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3396 static void dissect_r3_upstreammfgfield_nvramchecksumvalue (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3397 static void dissect_r3_upstreammfgfield_checksumresults (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3398 static void dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3399 static void dissect_r3_upstreammfgfield_mortisepins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3400 static void dissect_r3_upstreammfgfield_keypadchar (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3401 static void dissect_r3_upstreammfgfield_magcard (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3402 static void dissect_r3_upstreammfgfield_proxcard (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
);
3404 static void (*r3upstreammfgfield_dissect
[]) (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
) =
3406 /* MFGFIELD_IOPINS */ dissect_r3_upstreammfgfield_iopins
,
3407 /* MFGFIELD_ADCS */ dissect_r3_upstreammfgfield_adcs
,
3408 /* MFGFIELD_HARDWAREID */ dissect_r3_upstreammfgfield_hardwareid
,
3409 /* MFGFIELD_CHECKPOINTLOG */ dissect_r3_upstreammfgfield_checkpointlog
,
3410 /* MFGFIELD_CPUREGISTERS */ dissect_r3_upstreammfgfield_cpuregisters
,
3411 /* MFGFIELD_TASKFLAGS */ dissect_r3_upstreammfgfield_taskflags
,
3412 /* MFGFIELD_TIMERCHAIN */ dissect_r3_upstreammfgfield_timerchain
,
3413 /* MFGFIELD_PEEKPOKE */ dissect_r3_upstreammfgfield_peekpoke
,
3414 /* MFGFIELD_LOCKSTATE */ dissect_r3_upstreammfgfield_lockstate
,
3415 /* MFGFIELD_CAPABILITIES */ dissect_r3_upstreammfgfield_capabilities
,
3416 /* MFGFIELD_DUMPM41T81 */ dissect_r3_upstreammfgfield_dumpm41t81
,
3417 /* MFGFIELD_NVRAMCHECKSUMVALUE */ dissect_r3_upstreammfgfield_nvramchecksumvalue
,
3418 /* MFGFIELD_CHECKSUMRESULTS */ dissect_r3_upstreammfgfield_checksumresults
,
3419 /* MFGFIELD_MORTISESTATELOG */ dissect_r3_upstreammfgfield_mortisestatelog
,
3420 /* MFGFIELD_MORTISEPINS */ dissect_r3_upstreammfgfield_mortisepins
,
3421 /* MFGFIELD_KEYPADCHAR */ dissect_r3_upstreammfgfield_keypadchar
,
3422 /* MFGFIELD_MAGCARD */ dissect_r3_upstreammfgfield_magcard
,
3423 /* MFGFIELD_PROXCARD */ dissect_r3_upstreammfgfield_proxcard
3427 * ***************************************************************************
3429 * Cannot use wsutil/crc routines as ccitt-x25 uses a starting value of 0xffff
3430 * and we use 0x0000 (legacy compatibility). If an override method to set
3431 * the starting value existed, these could be replaced.
3433 static const guint16 ccitt_16
[256] =
3435 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
3436 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
3437 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
3438 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
3439 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
3440 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
3441 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
3442 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
3443 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
3444 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
3445 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
3446 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
3447 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
3448 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
3449 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
3450 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
3451 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
3452 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
3453 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
3454 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
3455 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
3456 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
3457 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
3458 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
3459 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
3460 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
3461 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
3462 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
3463 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
3464 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
3465 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
3466 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
3470 utilCrcCalculate (const void *ptr
, guint16 len
, guint16 crc
)
3472 const guint8
*p
= (const guint8
*) ptr
;
3475 crc
= (guint16
) ((crc
<< 8) ^ ccitt_16
[(crc
>> 8) ^ *p
++]);
3481 * ***************************************************************************
3484 dissect_serialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
, int hf_index
)
3486 proto_item
*sn_item
;
3487 proto_tree
*sn_tree
;
3490 tvb_ensure_bytes_exist (tvb
, start_offset
, 16);
3495 sn_item
= proto_tree_add_item (tree
, hf_index
, tvb
, start_offset
, 16, ENC_ASCII
|ENC_NA
);
3496 sn_tree
= proto_item_add_subtree (sn_item
, ett_r3serialnumber
);
3498 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 0, 2);
3499 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 0, 2, "Manufacturer .. : %s (%s)", s
, str_to_str (s
, r3_snmanufacturernames
, "[Unknown]"));
3500 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 2, 1);
3501 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 2, 1, "Year .......... : %s (%s)", s
, str_to_str (s
, r3_snyearnames
, "[Unknown]"));
3502 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 3, 2);
3503 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 3, 2, "Week .......... : %s", s
);
3504 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 5, 1);
3505 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 5, 1, "Model ......... : %s (%s)", s
, str_to_str (s
, r3_snmodelnames
, "[Unknown]"));
3506 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 6, 4);
3507 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 6, 4, "Sequence ...... : %s", s
);
3508 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 10, 1);
3509 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 10, 1, "Group ......... : %s (%s)", s
, str_to_str (s
, r3_sngroupnames
, "[Unknown]"));
3510 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 11, 1);
3511 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 11, 1, "NID ........... : %s (%s)", s
, str_to_str (s
, r3_snnidnames
, "[Unknown]"));
3512 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 12, 2);
3513 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 12, 2, "HID ........... : %s (%s)", s
, str_to_str (s
, r3_snhidnames
, "[Unknown]"));
3514 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 14, 1);
3515 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 14, 1, "Power Supply .. : %s (%s)", s
, str_to_str (s
, r3_snpowersupplynames
, "[Unknown]"));
3516 s
= tvb_get_string (wmem_packet_scope(), tvb
, start_offset
+ 15, 1);
3517 proto_tree_add_text (sn_tree
, tvb
, start_offset
+ 15, 1, "Mortise ....... : %s (%s)", s
, str_to_str (s
, r3_snmortisenames
, "[Unknown]"));
3521 * ***************************************************************************
3523 * We've already ensured we have enough bytes in the table via tvb_ensure_bytes_exist()
3527 dissect_r3_upstreamfields (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3531 DISSECTOR_ASSERT(start_offset
== 0);
3533 while (offset
< tvb_reported_length (tvb
))
3535 guint32 fieldLength
= tvb_get_guint8 (tvb
, offset
+ 0);
3536 guint32 fieldType
= tvb_get_guint8 (tvb
, offset
+ 1);
3537 guint32 dataLength
= fieldLength
- 2;
3538 proto_item
*upstreamfield_item
;
3539 proto_item
*upstreamfield_length
;
3540 proto_tree
*upstreamfield_tree
;
3543 usfn
= val_to_str_ext_const (fieldType
, &r3_upstreamfieldnames_ext
, "[Unknown Field]");
3545 upstreamfield_item
= proto_tree_add_none_format (tree
, hf_r3_upstreamfield
, tvb
, offset
+ 0, fieldLength
, "Upstream Field: %s (%u)", usfn
, fieldType
);
3546 upstreamfield_tree
= proto_item_add_subtree (upstreamfield_item
, ett_r3upstreamfield
);
3548 upstreamfield_length
= proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldlength
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3549 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldtype
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3551 if (fieldLength
< 2)
3554 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed length value -- all fields are at least 2 octets.");
3562 * Booleans, 8 & 16 bit values
3564 case UPSTREAMFIELD_NOTUSED
:
3565 case UPSTREAMFIELD_PRIMARYPIN
:
3566 case UPSTREAMFIELD_AUXPIN
:
3567 case UPSTREAMFIELD_ACCESSALWAYS
:
3568 case UPSTREAMFIELD_CACHED
:
3569 case UPSTREAMFIELD_ENTRYDEVICE
:
3570 case UPSTREAMFIELD_PPMIFIELDTYPE
:
3571 case UPSTREAMFIELD_RESPONSEWINDOW
:
3572 case UPSTREAMFIELD_USERTYPE
:
3573 case UPSTREAMFIELD_PRIMARYFIELDTYPE
:
3574 case UPSTREAMFIELD_AUXFIELDTYPE
:
3575 case UPSTREAMFIELD_ACCESSMODE
:
3576 case UPSTREAMFIELD_USECOUNT
:
3577 case UPSTREAMFIELD_EXCEPTIONGROUP
:
3578 case UPSTREAMFIELD_NAR
:
3579 case UPSTREAMFIELD_SEQUENCENUMBER
:
3580 case UPSTREAMFIELD_USERNUMBER
:
3581 case UPSTREAMFIELD_EVENTLOGRECORDCOUNT
:
3582 case UPSTREAMFIELD_DECLINEDRECORDCOUNT
:
3583 case UPSTREAMFIELD_ALARMRECORDCOUNT
:
3584 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
], tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
3590 case UPSTREAMFIELD_PIN
:
3591 case UPSTREAMFIELD_VERSION
:
3592 case UPSTREAMFIELD_AUXCTLRVERSION
:
3593 proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
], tvb
, offset
, dataLength
, ENC_ASCII
|ENC_NA
);
3599 case UPSTREAMFIELD_SERIALNUMBER
:
3601 tvbuff_t
*sn_tvb
= tvb_new_subset (tvb
, offset
, dataLength
, dataLength
);
3603 dissect_serialnumber (sn_tvb
, 0, length
, pinfo
, upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
]);
3607 case UPSTREAMFIELD_EVENTLOGRECORD
:
3609 if (dataLength
!= 9)
3611 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed event log field -- expected 9 octets");
3615 proto_item
*eventlog_item
;
3616 proto_tree
*eventlog_tree
;
3618 if (!upstreamfield_tree
)
3621 eventlog_item
= proto_tree_add_text (upstreamfield_tree
, tvb
, offset
, 9, "Event Log Record");
3622 eventlog_tree
= proto_item_add_subtree (eventlog_item
, ett_r3eventlogrecord
);
3624 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3625 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3626 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3627 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3628 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3629 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3630 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_usernumber
, tvb
, offset
+ 6, 2, ENC_LITTLE_ENDIAN
);
3631 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_event
, tvb
, offset
+ 8, 1, ENC_LITTLE_ENDIAN
);
3636 case UPSTREAMFIELD_DATETIME
:
3638 if (dataLength
!= 8)
3640 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed date/time field -- expected 8 octets");
3644 proto_item
*datetime_item
;
3645 proto_tree
*datetime_tree
;
3647 if (!upstreamfield_tree
)
3650 datetime_item
= proto_tree_add_text (upstreamfield_tree
, tvb
, offset
, 8, "Date/Time: %02u/%02u/%02u-%u %02u:%02u:%02u %u",
3651 tvb_get_guint8 (tvb
, offset
+ 0), tvb_get_guint8 (tvb
, offset
+ 1), tvb_get_guint8 (tvb
, offset
+ 2), tvb_get_guint8 (tvb
, offset
+ 3),
3652 tvb_get_guint8 (tvb
, offset
+ 4), tvb_get_guint8 (tvb
, offset
+ 5), tvb_get_guint8 (tvb
, offset
+ 6), tvb_get_guint8 (tvb
, offset
+ 7));
3653 datetime_tree
= proto_item_add_subtree (datetime_item
, ett_r3datetime
);
3655 proto_tree_add_item (datetime_tree
, hf_r3_datetime_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3656 proto_tree_add_item (datetime_tree
, hf_r3_datetime_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3657 proto_tree_add_item (datetime_tree
, hf_r3_datetime_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3658 proto_tree_add_item (datetime_tree
, hf_r3_datetime_dow
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3659 proto_tree_add_item (datetime_tree
, hf_r3_datetime_hours
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3660 proto_tree_add_item (datetime_tree
, hf_r3_datetime_minutes
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3661 proto_tree_add_item (datetime_tree
, hf_r3_datetime_seconds
, tvb
, offset
+ 6, 1, ENC_LITTLE_ENDIAN
);
3662 proto_tree_add_item (datetime_tree
, hf_r3_datetime_dst
, tvb
, offset
+ 7, 1, ENC_LITTLE_ENDIAN
);
3667 case UPSTREAMFIELD_DECLINEDRECORD
:
3670 if (dataLength
!= 49)
3672 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed declined log field -- expected 49 octets");
3676 proto_item
*declinedlog_item
;
3677 proto_tree
*declinedlog_tree
;
3681 if (!upstreamfield_tree
)
3684 declinedlog_item
= proto_tree_add_text (upstreamfield_tree
, tvb
, offset
, 49, "Declined Log Record");
3685 declinedlog_tree
= proto_item_add_subtree (declinedlog_item
, ett_r3declinedlogrecord
);
3687 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3688 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3689 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3690 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3691 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3692 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3693 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_usernumber
, tvb
, offset
+ 6, 2, ENC_LITTLE_ENDIAN
);
3695 cred1type
= tvb_get_guint8 (tvb
, offset
+ 8) & 0x07;
3696 cred2type
= (tvb_get_guint8 (tvb
, offset
+ 8) & 0x38) >> 3;
3698 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred1type
, tvb
, offset
, 1, cred1type
);
3699 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred2type
, tvb
, offset
, 1, cred2type
);
3700 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred1
, tvb
, offset
+ 9, 19, ENC_NA
);
3701 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred2
, tvb
, offset
+ 28, 19, ENC_NA
);
3706 case UPSTREAMFIELD_EXPIREON
:
3708 if (dataLength
!= 3)
3710 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed expiration field -- expected 3 octets");
3714 proto_item
*expireon_item
;
3715 proto_tree
*expireon_tree
;
3717 if (!upstreamfield_tree
)
3720 expireon_item
= proto_tree_add_text (upstreamfield_tree
, tvb
, offset
, 3, "Expire YY/MM/DD: %02u/%02u/%02u",
3721 tvb_get_guint8 (tvb
, offset
+ 2), tvb_get_guint8 (tvb
, offset
+ 0), tvb_get_guint8 (tvb
, offset
+ 1));
3722 expireon_tree
= proto_item_add_subtree (expireon_item
, ett_r3expireon
);
3724 proto_tree_add_item (expireon_tree
, hf_r3_expireon_month
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3725 proto_tree_add_item (expireon_tree
, hf_r3_expireon_day
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3726 proto_tree_add_item (expireon_tree
, hf_r3_expireon_year
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3731 case UPSTREAMFIELD_TIMEZONE
:
3733 if (dataLength
!= 4)
3735 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed timezone field -- expected 4 octets");
3739 proto_item
*timezone_item
;
3740 proto_tree
*timezone_tree
;
3744 if (!upstreamfield_tree
)
3747 tz
= tvb_get_letohl (tvb
, offset
);
3748 timezone_item
= proto_tree_add_item (upstreamfield_tree
, hf_r3_upstreamfieldarray
[fieldType
], tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3749 timezone_tree
= proto_item_add_subtree (timezone_item
, ett_r3timezone
);
3751 for (i
= 0; i
< 32; i
++)
3752 proto_tree_add_boolean (timezone_tree
, hf_r3_timezonearray
[i
], tvb
, offset
, 4, tz
);
3757 case UPSTREAMFIELD_ALARMRECORD
:
3759 if (dataLength
!= 9)
3761 expert_add_info_format(pinfo
, upstreamfield_length
, &ei_r3_malformed_length
, "Malformed alarm log field -- expected 9 octets");
3765 proto_item
*alarmlog_item
;
3766 proto_tree
*alarmlog_tree
;
3768 if (!upstreamfield_tree
)
3771 alarmlog_item
= proto_tree_add_text (upstreamfield_tree
, tvb
, offset
, 9, "Alarm Record");
3772 alarmlog_tree
= proto_item_add_subtree (alarmlog_item
, ett_r3alarmlogrecord
);
3774 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_year
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3775 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_month
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3776 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_day
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3777 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_hour
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3778 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_minute
, tvb
, offset
+ 4, 1, ENC_LITTLE_ENDIAN
);
3779 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_second
, tvb
, offset
+ 5, 1, ENC_LITTLE_ENDIAN
);
3780 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_id
, tvb
, offset
+ 6, 1, ENC_LITTLE_ENDIAN
);
3781 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_usernumber
, tvb
, offset
+ 7, 2, ENC_LITTLE_ENDIAN
);
3787 proto_tree_add_none_format (upstreamfield_tree
, hf_r3_upstreamfielderror
, tvb
, offset
, dataLength
, "Unknown Field Type");
3791 offset
+= dataLength
;
3796 * ***************************************************************************
3798 * These are passed a tvb that contains whatever occurs after the [UPSTREAMCOMMAND_*] byte
3801 dissect_r3_upstreamcommand_reserved (tvbuff_t
*tvb _U_
, guint32 start_offset _U_
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
3803 proto_tree_add_expert(tree
, pinfo
, &ei_r3_reserved_upstream_command_value
, tvb
, start_offset
, length
);
3807 dissect_r3_upstreamcommand_debugmsg (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3809 proto_item
*debugmsg_item
;
3810 proto_tree
*debugmsg_tree
;
3815 DISSECTOR_ASSERT(start_offset
== 0);
3817 debugmsg_item
= proto_tree_add_text (tree
, tvb
, 0, -1, "Debug message");
3818 debugmsg_tree
= proto_item_add_subtree (debugmsg_item
, ett_r3debugmsg
);
3820 proto_tree_add_item (debugmsg_tree
, hf_r3_debugmsg
, tvb
, 1, -1, ENC_ASCII
|ENC_NA
);
3824 dissect_r3_upstreamcommand_queryversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3826 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3830 dissect_r3_upstreamcommand_querydatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3832 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3836 dissect_r3_upstreamcommand_queryserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3838 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3842 dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3844 DISSECTOR_ASSERT(start_offset
== 0);
3846 tvb_ensure_bytes_exist (tvb
, 0, 11);
3850 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Malformed event log record -- expected 10 octets");
3854 proto_item
*eventlog_item
;
3855 proto_tree
*eventlog_tree
;
3861 en
= val_to_str_ext_const (tvb_get_guint8 (tvb
, 10), &r3_eventnames_ext
, "[Unknown Event]");
3863 eventlog_item
= proto_tree_add_text (tree
, tvb
, start_offset
, 10, "Event Log Record %u (%s)", tvb_get_letohs (tvb
, 0), en
);
3864 eventlog_tree
= proto_item_add_subtree (eventlog_item
, ett_r3eventlogrecord
);
3866 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
3867 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
3868 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
3869 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
3870 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
3871 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
3872 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
3873 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_usernumber
, tvb
, 8, 2, ENC_LITTLE_ENDIAN
);
3874 proto_tree_add_item (eventlog_tree
, hf_r3_eventlog_event
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
3879 dissect_r3_upstreamcommand_dumpnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3881 DISSECTOR_ASSERT(start_offset
== 0);
3883 tvb_ensure_bytes_exist (tvb
, 0, 3);
3888 proto_tree_add_item (tree
, hf_r3_nvramdump_record
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
3889 proto_tree_add_item (tree
, hf_r3_nvramdump_length
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
3890 proto_tree_add_item (tree
, hf_r3_nvramdump_data
, tvb
, 3, tvb_get_guint8 (tvb
, 2), ENC_NA
);
3894 dissect_r3_upstreamcommand_rmtquthrequest (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3896 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3900 dissect_r3_upstreamcommand_retrieveuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3902 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3906 dissect_r3_upstreamcommand_queryconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3910 DISSECTOR_ASSERT(start_offset
== 0);
3915 while (offset
< tvb_reported_length (tvb
))
3917 proto_item
*upstreamfield_item
, *pi
;
3918 proto_tree
*upstreamfield_tree
;
3922 ci
= val_to_str_ext_const (tvb_get_guint8 (tvb
, offset
+ 1), &r3_configitemnames_ext
, "[Unknown Configuration Item]");
3924 item_length
= tvb_get_guint8 (tvb
, offset
+ 0);
3925 upstreamfield_item
= proto_tree_add_text (tree
, tvb
, offset
+ 0, item_length
, "Config Field: %s (%u)", ci
, tvb_get_guint8 (tvb
, offset
+ 1));
3926 upstreamfield_tree
= proto_item_add_subtree (upstreamfield_item
, ett_r3upstreamfield
);
3928 pi
= proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemlength
, tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
3929 if (item_length
== 0) {
3930 expert_add_info_format(pinfo
, pi
, &ei_r3_malformed_length
, "Invalid item length");
3934 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitem
, tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
3935 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemtype
, tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
3937 switch (tvb_get_guint8 (tvb
, offset
+ 2))
3939 case CONFIGTYPE_NONE
:
3940 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata
, tvb
, offset
+ 3, item_length
- 3, ENC_NA
);
3943 case CONFIGTYPE_BOOL
:
3944 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_bool
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3948 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_8
, tvb
, offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
3951 case CONFIGTYPE_16
:
3952 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_16
, tvb
, offset
+ 3, 2, ENC_LITTLE_ENDIAN
);
3955 case CONFIGTYPE_32
:
3956 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_32
, tvb
, offset
+ 3, 4, ENC_LITTLE_ENDIAN
);
3959 case CONFIGTYPE_STRING
:
3960 proto_tree_add_item (upstreamfield_tree
, hf_r3_configitemdata_string
, tvb
, offset
+ 3, item_length
- 3, ENC_ASCII
|ENC_NA
);
3964 proto_tree_add_none_format (upstreamfield_tree
, hf_r3_upstreamfielderror
, tvb
, offset
+ 3, item_length
- 3, "Unknown Field Type");
3968 offset
+= item_length
;
3973 dissect_r3_upstreamcommand_rmteventlogrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3975 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3979 dissect_r3_upstreamcommand_dpac (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3983 DISSECTOR_ASSERT(start_offset
== 0);
3984 /* XXX: hf[] entries for the following hf indexes originally missing */
3985 proto_tree_add_item (tree
, hf_r3_dpacreply_stuff
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
3986 proto_tree_add_item (tree
, hf_r3_dpacreply_length
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
3987 proto_tree_add_item (tree
, hf_r3_dpacreply_reply
, tvb
, 4, -1, ENC_NA
);
3992 dissect_r3_upstreamcommand_notify (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
3994 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
3998 dissect_r3_upstreamcommand_mfg (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4000 proto_tree
*mfg_tree
= NULL
;
4003 proto_item
*mfg_item
;
4006 DISSECTOR_ASSERT(start_offset
== 0);
4008 mfg_tvb
= tvb_new_subset_remaining (tvb
, 2);
4009 mfg_fld
= tvb_get_guint8 (tvb
, 1);
4011 cn
= val_to_str_ext_const (mfg_fld
, &r3_mfgfieldnames_ext
, "[Unknown Mfg Field]");
4013 proto_tree_add_item (tree
, hf_r3_mfgfield_length
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4015 mfg_item
= proto_tree_add_text (tree
, tvb
, 1, -1, "Upstream Manufacturing Field: %s (%u)", cn
, mfg_fld
);
4016 mfg_tree
= proto_item_add_subtree (mfg_item
, ett_r3commandmfg
);
4018 proto_tree_add_item (mfg_tree
, hf_r3_mfgfield
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4020 if (mfg_fld
>= MFGFIELD_LAST
)
4022 expert_add_info(pinfo
, mfg_item
, &ei_r3_mfgfield
);
4024 else if (r3upstreammfgfield_dissect
[mfg_fld
])
4025 (*r3upstreammfgfield_dissect
[mfg_fld
]) (mfg_tvb
, 0, length
, pinfo
, mfg_tree
);
4029 dissect_r3_upstreamcommand_eventlogwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4031 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4035 dissect_r3_upstreamcommand_dumpnvramrle (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4040 DISSECTOR_ASSERT(start_offset
== 0);
4042 proto_tree_add_item (tree
, hf_r3_nvramdumprle_record
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4043 proto_tree_add_item (tree
, hf_r3_nvramdumprle_length
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4044 proto_tree_add_item (tree
, hf_r3_nvramdumprle_data
, tvb
, 4, tvb_get_guint8 (tvb
, 3), ENC_NA
);
4048 dissect_r3_upstreamcommand_rmtdeclinedrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4050 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4054 dissect_r3_upstreamcommand_declinedwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4056 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4060 dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4062 proto_item
*declinedlog_item
;
4063 proto_tree
*declinedlog_tree
;
4070 DISSECTOR_ASSERT(start_offset
== 0);
4072 declinedlog_item
= proto_tree_add_text (tree
, tvb
, start_offset
, 49, "Declined Log Record %u", tvb_get_letohs (tvb
, 0));
4073 declinedlog_tree
= proto_item_add_subtree (declinedlog_item
, ett_r3declinedlogrecord
);
4075 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4076 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4077 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4078 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4079 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4080 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4081 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4082 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_usernumber
, tvb
, 8, 2, ENC_LITTLE_ENDIAN
);
4084 cred1type
= tvb_get_guint8 (tvb
, 10) & 0x07;
4085 cred2type
= (tvb_get_guint8 (tvb
, 10) & 0x38) >> 3;
4087 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred1type
, tvb
, 10, 1, cred1type
);
4088 proto_tree_add_uint (declinedlog_tree
, hf_r3_declinedlog_cred2type
, tvb
, 10, 1, cred2type
);
4089 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred1
, tvb
, 11, 19, ENC_NA
);
4090 proto_tree_add_item (declinedlog_tree
, hf_r3_declinedlog_cred2
, tvb
, 30, 19, ENC_NA
);
4094 dissect_r3_upstreamcommand_rmtalarmrecord (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4096 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4100 dissect_r3_upstreamcommand_alarmwarning (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4102 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4106 dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4108 proto_item
*alarmlog_item
;
4109 proto_tree
*alarmlog_tree
;
4114 DISSECTOR_ASSERT(start_offset
== 0);
4116 alarmlog_item
= proto_tree_add_text (tree
, tvb
, start_offset
, 9, "Alarm Log Record %u", tvb_get_letohs (tvb
, 0));
4117 alarmlog_tree
= proto_item_add_subtree (alarmlog_item
, ett_r3alarmlogrecord
);
4119 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4120 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_year
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4121 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_month
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4122 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_day
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4123 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_hour
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4124 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_minute
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4125 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_second
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4126 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_id
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4127 proto_tree_add_item (alarmlog_tree
, hf_r3_alarmlog_usernumber
, tvb
, 9, 2, ENC_LITTLE_ENDIAN
);
4131 dissect_r3_upstreamcommand_connectscheduler (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4133 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4137 dissect_r3_upstreamcommand_connectcommuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4139 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4143 dissect_r3_upstreamcommand_commandalarm (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
4145 dissect_r3_upstreamfields (tvb
, start_offset
, length
, pinfo
, tree
);
4149 dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4151 proto_item
*debuglog_item
;
4152 proto_tree
*debuglog_tree
;
4157 DISSECTOR_ASSERT(start_offset
== 0);
4159 debuglog_item
= proto_tree_add_text (tree
, tvb
, start_offset
, 8, "Debug Log Record %u", tvb_get_letohs (tvb
, 0));
4160 debuglog_tree
= proto_item_add_subtree (debuglog_item
, ett_r3debuglogrecord
);
4162 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_recordnumber
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4163 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_flags
, tvb
, 2, 4, ENC_LITTLE_ENDIAN
);
4164 proto_tree_add_item (debuglog_tree
, hf_r3_debuglog_tick
, tvb
, 6, 2, ENC_LITTLE_ENDIAN
);
4168 * ***************************************************************************
4171 dissect_r3_upstreammfgfield_iopins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4175 DISSECTOR_ASSERT(start_offset
== 0);
4177 len
= MAX(0, tvb_length_remaining(tvb
, start_offset
));
4180 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "IOPINS data length not modulo 3 == 0");
4184 char portname
= 'A';
4190 for (i
= 0; i
< len
; i
+= 3, portname
++)
4192 proto_item
*port_item
= proto_tree_add_text (tree
, tvb
, i
, 3,
4193 "Port %c Configuration", (portname
== 'I') ? ++portname
: portname
);
4194 proto_tree
*port_tree
= proto_item_add_subtree (port_item
, ett_r3iopins
);
4196 proto_tree_add_item (port_tree
, hf_r3_iopins_lat
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4197 proto_tree_add_item (port_tree
, hf_r3_iopins_port
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4198 proto_tree_add_item (port_tree
, hf_r3_iopins_tris
, tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4204 dissect_r3_upstreammfgfield_adcs (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4212 DISSECTOR_ASSERT(start_offset
== 0);
4214 len
= tvb_reported_length(tvb
);
4216 for (i
= 0; i
< MIN(len
,8); i
++)
4218 proto_item
*item
= proto_tree_add_item (tree
, hf_r3_adc
[i
], tvb
, i
, 1, ENC_LITTLE_ENDIAN
);
4219 proto_item_append_text (item
, " (%.2f Volts)", (float) tvb_get_guint8 (tvb
, i
) * 0.04154);
4224 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_mfgfield_too_many_adc_values
);
4230 dissect_r3_upstreammfgfield_hardwareid (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4235 DISSECTOR_ASSERT(start_offset
== 0);
4237 proto_tree_add_item (tree
, hf_r3_hardwareid_board
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4238 proto_tree_add_item (tree
, hf_r3_hardwareid_cpuid
, tvb
, 1, 2, ENC_LITTLE_ENDIAN
);
4239 proto_tree_add_item (tree
, hf_r3_hardwareid_cpurev
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4243 dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4245 proto_item
*cpl_item
;
4246 proto_tree
*cpl_tree
;
4254 DISSECTOR_ASSERT(start_offset
== 0);
4256 len
= tvb_length_remaining (tvb
, 1);
4258 proto_tree_add_item (tree
, hf_r3_checkpointlog_entryptr
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4259 cpl_item
= proto_tree_add_text (tree
, tvb
, 1, -1, "Checkpoint Log");
4260 cpl_tree
= proto_item_add_subtree (cpl_item
, ett_r3checkpointlog
);
4263 for (i
= 0; i
< len
; i
+= 2, counter
++)
4265 guint rcon
= tvb_get_guint8 (tvb
, i
+ 0);
4266 guint cp
= tvb_get_guint8 (tvb
, i
+ 1);
4267 proto_item
*cpe_item
= proto_tree_add_text (cpl_tree
, tvb
, i
+ 0, 2, "Checkpoint Log Entry %u", counter
);
4268 proto_tree
*cpe_tree
= proto_item_add_subtree (cpe_item
, ett_r3checkpointlogentry
);
4271 static const gchar
*resets
[] = { "Stack underflow", "Stack overflow", "Power-On",
4272 "Software", "Brown-out", "MCLR in sleep", "WDT",
4273 "Normal", "[Unknown Reset Type]" };
4275 desc
= val_to_str_ext_const (cp
, &r3_checkpointnames_ext
, "[Unknown Checkpoint]");
4285 else if ((rcon
& 0x10) == 0x00)
4287 else if ((rcon
& 0x1d) == 0x1c)
4289 else if ((rcon
& 0x0c) == 0x08)
4291 else if ((rcon
& 0x0c) == 0x04)
4297 proto_item_append_text (cpe_item
, " (%s, %s)", resets
[resettype
], desc
);
4298 proto_item_append_text (
4299 proto_tree_add_item (cpe_tree
, hf_r3_checkpointlog_rcon
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
),
4300 " (%s)", resets
[resettype
]);
4301 proto_item_append_text (
4302 proto_tree_add_item (cpe_tree
, hf_r3_checkpointlog_checkpoint
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
),
4308 dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4310 proto_tree
*tmp_tree
[19];
4311 proto_item
*cr_item
;
4312 proto_tree
*cr_tree
;
4317 DISSECTOR_ASSERT(start_offset
== 0);
4319 cr_item
= proto_tree_add_text (tree
, tvb
, start_offset
, -1, "CPU Registers");
4320 cr_tree
= proto_item_add_subtree (cr_item
, ett_r3cpuregisters
);
4322 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
);
4323 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
);
4324 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
);
4325 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
);
4326 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
);
4327 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
);
4328 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
);
4329 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
);
4330 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
);
4331 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
);
4332 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
);
4333 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
);
4334 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
);
4335 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
);
4336 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
);
4337 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
);
4338 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
);
4339 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
);
4340 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
);
4342 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_rbif
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4343 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_int0if
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4344 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_tmr0if
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4345 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_rbie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4346 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_int0ie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4347 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_tmr0ie
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4348 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_giel
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4349 proto_tree_add_item (tmp_tree
[ 0], hf_r3_cpuregisters_intcon_gieh
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4350 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_rbip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4351 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_int3ip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4352 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_tmr0ip
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4353 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg3
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4354 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg2
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4355 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg1
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4356 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_intedg0
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4357 proto_tree_add_item (tmp_tree
[ 1], hf_r3_cpuregisters_intcon2_rbpu
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4358 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4359 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4360 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int3if
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4361 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4362 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4363 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int3ie
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4364 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int1ip
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4365 proto_tree_add_item (tmp_tree
[ 2], hf_r3_cpuregisters_intcon3_int2ip
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4366 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tmr1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4367 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tmr2if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4368 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_ccp1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4369 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_ssp1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4370 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_tx1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4371 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_rc1if
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4372 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_adif
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4373 proto_tree_add_item (tmp_tree
[ 3], hf_r3_cpuregisters_pir1_pspif
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4374 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_ccp2if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4375 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_tmr3if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4376 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_hlvdif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4377 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_bcl1if
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4378 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_eeif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4379 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_unused5
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4380 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_cmif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4381 proto_tree_add_item (tmp_tree
[ 4], hf_r3_cpuregisters_pir2_oscfif
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
4382 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp3if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4383 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp4if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4384 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ccp5if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4385 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_tmr4if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4386 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_tx2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4387 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_rc2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4388 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_bcl2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4389 proto_tree_add_item (tmp_tree
[ 5], hf_r3_cpuregisters_pir3_ssp2if
, tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
4390 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tmr1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4391 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tmr2ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4392 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_ccp1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4393 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_ssp1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4394 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_tx1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4395 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_rc1ie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4396 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_adie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4397 proto_tree_add_item (tmp_tree
[ 6], hf_r3_cpuregisters_pie1_pspie
, tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
4398 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_oscfie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4399 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_cmie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4400 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_unused2
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4401 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_eeie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4402 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_bcl1ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4403 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_hlvdie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4404 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_tmr3ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4405 proto_tree_add_item (tmp_tree
[ 7], hf_r3_cpuregisters_pie2_ccp2ie
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
4406 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp3ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4407 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp4ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4408 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ccp5ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4409 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_tmr4ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4410 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_tx2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4411 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_rc2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4412 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_bcl2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4413 proto_tree_add_item (tmp_tree
[ 8], hf_r3_cpuregisters_pie3_ssp2ie
, tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
4414 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tmr1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4415 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tmr2ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4416 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_ccp1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4417 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_ssp1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4418 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_tx1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4419 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_rc1ip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4420 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_adip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4421 proto_tree_add_item (tmp_tree
[ 9], hf_r3_cpuregisters_ipr1_pspip
, tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
4422 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_ccp2ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4423 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_tmr3ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4424 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_hlvdip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4425 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_bcl1ip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4426 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_eeip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4427 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_unused5
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4428 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_cmip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4429 proto_tree_add_item (tmp_tree
[10], hf_r3_cpuregisters_ipr2_oscfip
, tvb
, 10, 1, ENC_LITTLE_ENDIAN
);
4430 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4431 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp4ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4432 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ccp5ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4433 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_tmr4ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4434 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_tx2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4435 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_rc2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4436 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_bcl2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4437 proto_tree_add_item (tmp_tree
[11], hf_r3_cpuregisters_ipr3_ssp2ip
, tvb
, 11, 1, ENC_LITTLE_ENDIAN
);
4438 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_bor
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4439 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_por
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4440 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_pd
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4441 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_to
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4442 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_unused4
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4443 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_ri
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4444 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_sboren
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4445 proto_tree_add_item (tmp_tree
[12], hf_r3_cpuregisters_rcon_ipen
, tvb
, 12, 1, ENC_LITTLE_ENDIAN
);
4446 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_scs0
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4447 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_scs1
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4448 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_iofs
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4449 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_osts
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4450 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf0
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4451 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf1
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4452 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_ircf2
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4453 proto_tree_add_item (tmp_tree
[13], hf_r3_cpuregisters_osccon_idlen
, tvb
, 13, 1, ENC_LITTLE_ENDIAN
);
4454 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_rx9d
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4455 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_oerr
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4456 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_ferr
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4457 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_adden
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4458 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_cren
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4459 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_sren
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4460 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_rx9
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4461 proto_tree_add_item (tmp_tree
[14], hf_r3_cpuregisters_rcsta_spen
, tvb
, 14, 1, ENC_LITTLE_ENDIAN
);
4462 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_tx9d
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4463 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_trmt
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4464 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_brgh
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4465 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_sendb
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4466 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_sync
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4467 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_txen
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4468 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_tx9
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4469 proto_tree_add_item (tmp_tree
[15], hf_r3_cpuregisters_txsta_csrc
, tvb
, 15, 1, ENC_LITTLE_ENDIAN
);
4470 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_rx9d
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4471 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_oerr
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4472 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_ferr
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4473 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_adden
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4474 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_cren
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4475 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_sren
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4476 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_rx9
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4477 proto_tree_add_item (tmp_tree
[16], hf_r3_cpuregisters_rcsta2_spen
, tvb
, 16, 1, ENC_LITTLE_ENDIAN
);
4478 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_tx9d
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4479 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_trmt
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4480 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_brgh
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4481 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_sendb
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4482 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_sync
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4483 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_txen
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4484 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_tx9
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4485 proto_tree_add_item (tmp_tree
[17], hf_r3_cpuregisters_txsta2_csrc
, tvb
, 17, 1, ENC_LITTLE_ENDIAN
);
4486 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_swdten
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4487 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused1
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4488 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused2
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4489 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused3
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4490 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused4
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4491 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused5
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4492 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused6
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4493 proto_tree_add_item (tmp_tree
[18], hf_r3_cpuregisters_wdtcon_unused7
, tvb
, 18, 1, ENC_LITTLE_ENDIAN
);
4497 dissect_r3_upstreammfgfield_taskflags (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4501 proto_item
*tfg_item
;
4502 proto_tree
*tfg_tree
;
4504 DISSECTOR_ASSERT(start_offset
== 0);
4506 len
= MAX(0, tvb_length_remaining (tvb
, 0));
4507 tfg_item
= proto_tree_add_text (tree
, tvb
, 0, -1, "Task Flags (%u tasks)", len
/ 5);
4508 tfg_tree
= proto_item_add_subtree (tfg_item
, ett_r3taskflags
);
4510 for (i
= 0; i
< len
; i
+= 5)
4512 proto_item
*tf_item
= proto_tree_add_text (tfg_tree
, tvb
, i
, 5,
4513 "Task Flags (%2d: 0x%06x)",
4514 tvb_get_guint8 (tvb
, i
+ 0),
4515 tvb_get_letohl (tvb
, i
+ 1));
4516 proto_tree
*tf_tree
= proto_item_add_subtree (tf_item
, ett_r3taskflagsentry
);
4518 proto_tree_add_item (tf_tree
, hf_r3_taskflags_taskid
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4519 proto_tree_add_item (tf_tree
, hf_r3_taskflags_flags
, tvb
, i
+ 1, 4, ENC_LITTLE_ENDIAN
);
4524 dissect_r3_upstreammfgfield_timerchain (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4532 DISSECTOR_ASSERT(start_offset
== 0);
4534 len
= tvb_length_remaining (tvb
, 3);
4536 proto_tree_add_item (tree
, hf_r3_timerchain_newtick
, tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
4537 proto_tree_add_item (tree
, hf_r3_timerchain_currentboundary
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4539 for (i
= 0; i
< len
; i
+= 12)
4541 proto_item
*tc_item
= proto_tree_add_text (tree
, tvb
, 3 + i
, 12, "Timer Chain Entry");
4542 proto_tree
*tc_tree
= proto_item_add_subtree (tc_item
, ett_r3timerchain
);
4544 proto_tree_add_item (tc_tree
, hf_r3_timerchain_tasktag
, tvb
, 3 + i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4545 proto_tree_add_item (tc_tree
, hf_r3_timerchain_address
, tvb
, 3 + i
+ 1, 2, ENC_LITTLE_ENDIAN
);
4546 proto_tree_add_item (tc_tree
, hf_r3_timerchain_reload
, tvb
, 3 + i
+ 3, 2, ENC_LITTLE_ENDIAN
);
4547 proto_tree_add_item (tc_tree
, hf_r3_timerchain_boundary
, tvb
, 3 + i
+ 5, 1, ENC_LITTLE_ENDIAN
);
4548 proto_tree_add_item (tc_tree
, hf_r3_timerchain_count
, tvb
, 3 + i
+ 6, 2, ENC_LITTLE_ENDIAN
);
4549 proto_tree_add_item (tc_tree
, hf_r3_timerchain_flags
, tvb
, 3 + i
+ 8, 4, ENC_LITTLE_ENDIAN
);
4554 dissect_r3_upstreammfgfield_peekpoke (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4559 DISSECTOR_ASSERT(start_offset
== 0);
4561 len
= tvb_length_remaining (tvb
, 0);
4563 for (i
= 0; i
< len
; i
+= 3)
4565 proto_item
*peekpoke_item
= NULL
;
4566 proto_item
*peekpoke_op_item
= NULL
;
4567 proto_tree
*peekpoke_tree
= NULL
;
4571 peekpoke_item
= proto_tree_add_text (tree
, tvb
, i
, 3, "%s", "");
4572 peekpoke_tree
= proto_item_add_subtree (peekpoke_item
, ett_r3peekpoke
);
4574 peekpoke_op_item
= proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_operation
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4575 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_address
, tvb
, i
+ 1, 2, ENC_LITTLE_ENDIAN
);
4578 switch (tvb_get_guint8 (tvb
, i
+ 0))
4580 case PEEKPOKE_READU8
:
4583 proto_item_append_text (peekpoke_item
, "Read (8 Bits @ 0x%04x = 0x%02x)",
4584 tvb_get_letohs (tvb
, i
+ 1),
4585 tvb_get_guint8 (tvb
, i
+ 3));
4586 proto_item_set_len (peekpoke_item
, 4);
4587 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke8
, tvb
, i
+ 3, 1, ENC_LITTLE_ENDIAN
);
4592 case PEEKPOKE_READU16
:
4595 proto_item_append_text (peekpoke_item
, "Read (16 Bits @ 0x%04x = 0x%04x)",
4596 tvb_get_letohs (tvb
, i
+ 1),
4597 tvb_get_letohs (tvb
, i
+ 3));
4598 proto_item_set_len (peekpoke_item
, 5);
4599 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke16
, tvb
, i
+ 3, 2, ENC_LITTLE_ENDIAN
);
4604 case PEEKPOKE_READU24
:
4607 proto_item_append_text (peekpoke_item
, "Read (24 Bits @ 0x%04x = 0x%06x)",
4608 tvb_get_letohs (tvb
, i
+ 1),
4609 tvb_get_letoh24 (tvb
, i
+ 3));
4610 proto_item_set_len (peekpoke_item
, 6);
4611 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke24
, tvb
, i
+ 3, 3, ENC_LITTLE_ENDIAN
);
4616 case PEEKPOKE_READU32
:
4619 proto_item_append_text (peekpoke_item
, "Read (32 Bits @ 0x%04x = 0x%08x)",
4620 tvb_get_letohs (tvb
, i
+ 1),
4621 tvb_get_letohl (tvb
, i
+ 3));
4622 proto_item_set_len (peekpoke_item
, 7);
4623 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke32
, tvb
, i
+ 3, 4, ENC_LITTLE_ENDIAN
);
4628 case PEEKPOKE_READSTRING
:
4631 proto_item_append_text (peekpoke_item
, "Read (%u Bytes @ 0x%04x)",
4632 tvb_get_guint8 (tvb
, i
+ 3),
4633 tvb_get_letohs (tvb
, i
+ 1));
4634 proto_item_set_len (peekpoke_item
, 3 + 1 + tvb_get_guint8 (tvb
, i
+ 3));
4635 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, i
+ 3, 1, ENC_LITTLE_ENDIAN
);
4636 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_pokestring
, tvb
, i
+ 4, tvb_get_guint8 (tvb
, i
+ 3), ENC_NA
);
4638 i
+= tvb_get_guint8 (tvb
, i
+ 3) + 1;
4642 expert_add_info(pinfo
, peekpoke_op_item
, &ei_r3_peekpoke_operation
);
4649 dissect_r3_upstreammfgfield_lockstate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4651 proto_item
*ls_item
;
4652 proto_tree
*ls_tree
;
4658 DISSECTOR_ASSERT(start_offset
== 0);
4660 ls
= tvb_get_letoh24 (tvb
, 0);
4661 ls_item
= proto_tree_add_text (tree
, tvb
, 0, -1, "Lock State (0x%06x)", ls
);
4662 ls_tree
= proto_item_add_subtree (ls_item
, ett_r3lockstate
);
4664 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_passage
, tvb
, 0, 3, ls
);
4665 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_panic
, tvb
, 0, 3, ls
);
4666 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_lockout
, tvb
, 0, 3, ls
);
4667 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_relock
, tvb
, 0, 3, ls
);
4668 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_autoopen
, tvb
, 0, 3, ls
);
4669 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_nextauto
, tvb
, 0, 3, ls
);
4670 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_lockstate
, tvb
, 0, 3, ls
);
4671 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_wantstate
, tvb
, 0, 3, ls
);
4672 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_remote
, tvb
, 0, 3, ls
);
4673 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_update
, tvb
, 0, 3, ls
);
4674 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_exceptionspresent
, tvb
, 0, 3, ls
);
4675 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_exceptionsactive
, tvb
, 0, 3, ls
);
4676 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_timezonespresent
, tvb
, 0, 3, ls
);
4677 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_timezonesactive
, tvb
, 0, 3, ls
);
4678 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_autounlockspresent
, tvb
, 0, 3, ls
);
4679 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_autounlocksactive
, tvb
, 0, 3, ls
);
4680 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_uapmspresent
, tvb
, 0, 3, ls
);
4681 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_uapmsactive
, tvb
, 0, 3, ls
);
4682 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_uapmrelockspresent
, tvb
, 0, 3, ls
);
4683 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_uapmreslocksactive
, tvb
, 0, 3, ls
);
4684 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_nvramprotect
, tvb
, 0, 3, ls
);
4685 proto_tree_add_boolean (ls_tree
, hf_r3_lockstate_nvramchecksum
, tvb
, 0, 3, ls
);
4689 dissect_r3_upstreammfgfield_capabilities (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4691 proto_item
*cf_item
;
4692 proto_tree
*cf_tree
;
4699 DISSECTOR_ASSERT(start_offset
== 0);
4701 len
= MAX(0, tvb_length_remaining (tvb
, 0));
4709 octets
= tvb_get_guint8 (tvb
, i
);
4712 proto_tree_add_expert_format(tree
, pinfo
, &ei_r3_malformed_length
, tvb
, 0, len
, "Capabilities could not be decoded because length of 0 encountered");
4721 cf_item
= proto_tree_add_text (tree
, tvb
, 0, len
, "Capabilities (%u items)", items
);
4722 cf_tree
= proto_item_add_subtree (cf_item
, ett_r3capabilities
);
4725 while (i
<len
&& (step
=tvb_get_guint8(tvb
, i
))>0)
4727 proto_item
*tmp_item
= proto_tree_add_item (cf_tree
, hf_r3_capabilities
, tvb
, i
, tvb_get_guint8 (tvb
, i
), ENC_NA
);
4728 proto_tree
*tmp_tree
= proto_item_add_subtree (tmp_item
, ett_r3capabilities
);
4731 fn
= val_to_str_ext_const (tvb_get_guint8 (tvb
, i
+ 1), &r3_capabilitiesnames_ext
, "[Unknown Field Name]");
4733 proto_item_append_text (tmp_item
, " (%s, %u)", fn
, tvb_get_letohs (tvb
, i
+ 2));
4734 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_length
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4735 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_type
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4736 proto_tree_add_item (tmp_tree
, hf_r3_capabilities_value
, tvb
, i
+ 2, 2, ENC_LITTLE_ENDIAN
);
4743 dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4745 DISSECTOR_ASSERT(start_offset
== 0);
4747 if (tvb_length_remaining (tvb
, 0) != 20)
4749 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Length of M41T81 RTC register dump not 20 octets");
4753 proto_item
*rtc_item
;
4754 proto_tree
*rtc_tree
;
4755 proto_tree
*tmp_tree
[20];
4756 guint offset_in_bits
;
4761 rtc_item
= proto_tree_add_text (tree
, tvb
, 0, -1, "M41T81 RTC Registers");
4762 rtc_tree
= proto_item_add_subtree (rtc_item
, ett_r3m41t81registers
);
4764 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
);
4765 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
);
4766 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
);
4767 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
);
4768 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
);
4769 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
);
4770 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
);
4771 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
);
4772 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
);
4773 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
);
4774 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
);
4775 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
);
4776 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
);
4777 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
);
4778 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
);
4779 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
);
4780 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
);
4781 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
);
4782 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
);
4783 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
);
4785 offset_in_bits
= 0 * 8;
4787 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;
4788 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;
4789 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;
4790 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;
4791 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;
4792 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;
4793 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;
4794 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;
4795 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;
4796 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;
4797 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;
4798 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;
4799 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;
4800 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;
4801 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;
4802 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;
4803 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;
4804 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;
4805 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;
4806 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;
4807 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;
4808 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;
4809 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;
4810 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;
4811 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;
4812 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;
4813 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;
4814 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;
4815 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;
4816 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;
4817 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;
4818 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;
4819 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;
4820 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;
4821 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;
4822 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;
4823 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;
4824 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;
4825 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;
4826 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;
4827 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;
4828 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;
4829 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;
4830 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;
4831 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;
4832 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;
4833 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;
4834 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;
4835 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;
4836 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;
4837 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;
4838 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;
4839 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;
4840 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;
4841 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;
4842 proto_tree_add_bits_item (tmp_tree
[19], hf_r3_dumpm41t81_reg13_notused
, tvb
, offset_in_bits
- 8, 4, ENC_LITTLE_ENDIAN
);
4847 dissect_r3_upstreammfgfield_nvramchecksumvalue (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4851 DISSECTOR_ASSERT(start_offset
== 0);
4853 proto_tree_add_item (tree
, hf_r3_nvramchecksumvalue
, tvb
, 0, 4, ENC_LITTLE_ENDIAN
);
4854 proto_tree_add_item (tree
, hf_r3_nvramchecksumvalue_fixup
, tvb
, 4, 4, ENC_LITTLE_ENDIAN
);
4859 dissect_r3_upstreammfgfield_checksumresults (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
4863 DISSECTOR_ASSERT(start_offset
== 0);
4865 len
= MAX(0, tvb_length_remaining(tvb
, 0));
4868 expert_add_info_format(pinfo
, proto_tree_get_parent (tree
), &ei_r3_malformed_length
, "Checksum results data length not modulo 3 == 0");
4872 proto_item
*cksum_item
;
4873 proto_tree
*cksum_tree
;
4874 guint32 error
= FALSE
;
4882 while (i
<len
&& (step
=tvb_get_guint8(tvb
, i
))>0)
4884 error
|= tvb_get_guint8 (tvb
, i
+ 2);
4888 cksum_item
= proto_tree_add_text (tree
, tvb
, 0, len
, "Checksum Results (%s)", error
? "Error" : "No Errors");
4889 cksum_tree
= proto_item_add_subtree (cksum_item
, ett_r3checksumresults
);
4892 while (i
<len
&& (step
=tvb_get_guint8(tvb
, i
))>0)
4894 proto_item
*res_item
= proto_tree_add_item (cksum_tree
, hf_r3_checksumresults
,
4897 tvb_get_guint8 (tvb
, i
),
4899 proto_tree
*res_tree
= proto_item_add_subtree (res_item
, ett_r3checksumresultsfield
);
4902 fn
= val_to_str_ext_const (tvb_get_guint8 (tvb
, i
+ 1), &r3_checksumresultnames_ext
, "[Unknown Field Name]");
4904 proto_item_append_text (res_item
, " %s (%s)", fn
, tvb_get_guint8 (tvb
, i
+ 2) ? "Error" : "No Error");
4906 proto_tree_add_item (res_tree
, hf_r3_checksumresults_length
, tvb
, i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4907 proto_tree_add_item (res_tree
, hf_r3_checksumresults_field
, tvb
, i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4908 proto_tree_add_item (res_tree
, hf_r3_checksumresults_state
, tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4916 dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4924 DISSECTOR_ASSERT(start_offset
== 0);
4926 len
= tvb_length_remaining (tvb
, 3);
4928 proto_tree_add_item (tree
, hf_r3_mortisestatelog_pointer
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4929 proto_tree_add_item (tree
, hf_r3_mortisestatelog_mortisetype
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
4930 proto_tree_add_item (tree
, hf_r3_mortisestatelog_waiting
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
4932 for (i
= 0; i
< len
; i
+= 3)
4934 guint state
= tvb_get_guint8 (tvb
, 3 + i
+ 0);
4935 guint last
= tvb_get_guint8 (tvb
, 3 + i
+ 1);
4936 guint event
= tvb_get_guint8 (tvb
, 3 + i
+ 2);
4937 proto_item
*ms_item
= proto_tree_add_text (tree
, tvb
, 3 + i
, 3,
4938 "State Log Entry %2d (State=0x%02x, Last=0x%02x, Event=%s (0x%02x))",
4942 val_to_str_ext_const (event
, &r3_mortiseeventnames_ext
, "[Unknown]"),
4944 proto_tree
*ms_tree
= proto_item_add_subtree (ms_item
, ett_r3mortisestatelog
);
4946 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_state
, tvb
, 3 + i
+ 0, 1, ENC_LITTLE_ENDIAN
);
4947 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_last
, tvb
, 3 + i
+ 1, 1, ENC_LITTLE_ENDIAN
);
4948 proto_tree_add_item (ms_tree
, hf_r3_mortisestatelog_event
, tvb
, 3 + i
+ 2, 1, ENC_LITTLE_ENDIAN
);
4953 dissect_r3_upstreammfgfield_mortisepins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4955 proto_item
*iopins_item
;
4956 proto_tree
*iopins_tree
;
4961 DISSECTOR_ASSERT(start_offset
== 0);
4963 iopins_item
= proto_tree_add_text (tree
, tvb
, 0, 1,
4964 "Mortise Pin States (0x%02x)", tvb_get_guint8 (tvb
, 0));
4965 iopins_tree
= proto_item_add_subtree (iopins_item
, ett_r3iopins
);
4967 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s1
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4968 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s2
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4969 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s3
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4970 proto_tree_add_item (iopins_tree
, hf_r3_mortisepins_s4
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
4974 dissect_r3_upstreammfgfield_keypadchar (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4979 DISSECTOR_ASSERT(start_offset
== 0);
4981 proto_item_append_text (
4982 proto_tree_add_item (tree
, hf_r3_testkeypad
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
),
4983 " ('%c')", tvb_get_guint8 (tvb
, 0));
4987 dissect_r3_upstreammfgfield_magcard (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4989 DISSECTOR_ASSERT(start_offset
== 0);
4991 proto_tree_add_item (tree
, hf_r3_testmagcard
, tvb
, 0, -1, ENC_ASCII
|ENC_NA
);
4995 dissect_r3_upstreammfgfield_proxcard (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
4997 DISSECTOR_ASSERT(start_offset
== 0);
4999 proto_tree_add_item (tree
, hf_r3_testproxcard
, tvb
, 0, -1, ENC_ASCII
|ENC_NA
);
5003 * ***************************************************************************
5005 * This is passed a tvb that contains [length] [CMD_RESPONSE] [responseType_e] [cmdCommand_e]
5008 dissect_r3_response_singlebyte (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5012 proto_tree_add_item (tree
, hf_r3_responsetype
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5013 proto_tree_add_item (tree
, hf_r3_responsetocommand
, tvb
, start_offset
+ 3, 1, ENC_LITTLE_ENDIAN
);
5018 * This is passed a tvb that contains [length] [CMD_RESPONSE] [RESPONSETYPE_HASDATA] [UPSTREAMCOMMAND_*]
5021 dissect_r3_response_hasdata (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5023 guint32 commandPacketLen
;
5026 DISSECTOR_ASSERT(start_offset
== 0);
5028 tvb_ensure_bytes_exist (tvb
, 0, 4);
5030 commandPacketLen
= tvb_get_guint8 (tvb
, 0);
5031 upstreamCmd
= tvb_get_guint8 (tvb
, 3);
5033 if (tvb_get_guint8 (tvb
, 1) != CMD_RESPONSE
)
5034 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_1
);
5035 else if (tvb_get_guint8 (tvb
, 2) != RESPONSETYPE_HASDATA
)
5036 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_2
);
5037 else if (upstreamCmd
>= UPSTREAMCOMMAND_LAST
)
5038 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_3
);
5041 proto_tree
*upstreamcommand_tree
= NULL
;
5042 tvbuff_t
*upstreamcommand_tvb
;
5046 proto_item
*upstreamcommand_item
;
5048 ct
= val_to_str_ext_const (upstreamCmd
, &r3_upstreamcommandnames_ext
, "[Unknown Command Type]");
5050 proto_tree_add_item (tree
, hf_r3_responsetype
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5052 upstreamcommand_item
= proto_tree_add_text (tree
, tvb
, 3, -1,
5053 "Upstream Command: %s (%u)", ct
, upstreamCmd
);
5054 upstreamcommand_tree
= proto_item_add_subtree (upstreamcommand_item
, ett_r3upstreamcommand
);
5056 proto_tree_add_item (upstreamcommand_tree
, hf_r3_upstreamcommand
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5058 tvb_ensure_bytes_exist (tvb
, 0, commandPacketLen
- 4);
5060 upstreamcommand_tvb
= tvb_new_subset (tvb
, 4, commandPacketLen
- 4, commandPacketLen
- 4);
5061 if (r3upstreamcommand_dissect
[upstreamCmd
])
5062 (*r3upstreamcommand_dissect
[upstreamCmd
]) (upstreamcommand_tvb
, 0, commandPacketLen
- 4, pinfo
, upstreamcommand_tree
);
5067 * ***************************************************************************
5069 * These are passed a tvb that starts with [length] [CMD_RESPONSE] ...
5072 dissect_r3_cmd_response (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*tree
)
5074 guint8 responseLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5075 responseType_e responseType
= (responseType_e
)tvb_get_guint8 (tvb
, start_offset
+ 2);
5076 tvbuff_t
*payload_tvb
= tvb_new_subset (tvb
, start_offset
, responseLen
, responseLen
);
5082 rt
= val_to_str_ext_const (responseType
, &r3_responsetypenames_ext
, "[Unknown Response Type]");
5084 proto_item_set_text (proto_tree_get_parent (tree
), "Response Packet: %s (%u)", rt
, responseType
);
5085 proto_tree_add_item (tree
, hf_r3_responselength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5086 proto_tree_add_item (tree
, hf_r3_responsecommand
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5089 if (responseType
>= RESPONSETYPE_LAST
)
5091 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_response_hasdata_octet_3
);
5093 else if (r3response_dissect
[responseType
])
5094 (*r3response_dissect
[responseType
]) (payload_tvb
, 0, length
, pinfo
, tree
);
5098 * These are passed a tvb that contains [length] [cmdCommand_e] [[data]]
5101 dissect_r3_cmd_handshake (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5105 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5106 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5111 dissect_r3_cmd_killsession (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5115 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5116 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5121 dissect_r3_cmd_queryserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5125 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5126 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5131 dissect_r3_cmd_queryversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5135 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5136 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5141 dissect_r3_cmd_setdatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5143 proto_tree
*dt_tree
;
5144 proto_item
*dt_item
;
5146 tvbuff_t
*payload_tvb
;
5151 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5152 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5154 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5155 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5157 dt_item
= proto_tree_add_text (tree
, payload_tvb
, 0, -1,
5158 "Set Date/Time (%02u/%02u/%02u-%u %02u:%02u:%02u)",
5159 tvb_get_guint8 (payload_tvb
, 0),
5160 tvb_get_guint8 (payload_tvb
, 1),
5161 tvb_get_guint8 (payload_tvb
, 2),
5162 tvb_get_guint8 (payload_tvb
, 3),
5163 tvb_get_guint8 (payload_tvb
, 4),
5164 tvb_get_guint8 (payload_tvb
, 5),
5165 tvb_get_guint8 (payload_tvb
, 6));
5166 dt_tree
= proto_item_add_subtree (dt_item
, ett_r3setdatetime
);
5168 proto_tree_add_item (dt_tree
, hf_r3_setdate_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5169 proto_tree_add_item (dt_tree
, hf_r3_setdate_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5170 proto_tree_add_item (dt_tree
, hf_r3_setdate_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5171 proto_tree_add_item (dt_tree
, hf_r3_setdate_dow
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5172 proto_tree_add_item (dt_tree
, hf_r3_setdate_hours
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5173 proto_tree_add_item (dt_tree
, hf_r3_setdate_minutes
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5174 proto_tree_add_item (dt_tree
, hf_r3_setdate_seconds
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5178 dissect_r3_cmd_querydatetime (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5182 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5183 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5188 dissect_r3_cmd_setconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5191 tvbuff_t
*payload_tvb
;
5197 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5198 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5200 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5201 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5203 while (offset
< (cmdLen
- 2))
5205 proto_item
*sc_item
;
5206 proto_tree
*sc_tree
;
5211 configItem
= tvb_get_guint8 (payload_tvb
, offset
+ 1);
5213 ci
= val_to_str_ext_const (
5215 &r3_configitemnames_ext
,
5216 "[Unknown Configuration Item]");
5218 item_length
= tvb_get_guint8 (payload_tvb
, offset
+ 0);
5219 sc_item
= proto_tree_add_text (tree
, payload_tvb
, offset
+ 0, item_length
,
5220 "Config Field: %s (%u)", ci
, configItem
);
5221 sc_tree
= proto_item_add_subtree (sc_item
, ett_r3upstreamfield
);
5223 sc_item
= proto_tree_add_item (sc_tree
, hf_r3_configitemlength
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5224 proto_tree_add_item (sc_tree
, hf_r3_configitem
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5225 if (item_length
== 0) {
5226 expert_add_info_format(pinfo
, sc_item
, &ei_r3_malformed_length
, "Invalid item length");
5230 if (configItem
< array_length (configMap
))
5232 switch (configMap
[configItem
])
5234 case CONFIGTYPE_NONE
:
5235 proto_tree_add_item (sc_tree
, hf_r3_configitemdata
, payload_tvb
, offset
+ 2, item_length
- 3, ENC_NA
);
5238 case CONFIGTYPE_BOOL
:
5239 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_bool
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5243 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_8
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5246 case CONFIGTYPE_16
:
5247 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_16
, payload_tvb
, offset
+ 2, 2, ENC_LITTLE_ENDIAN
);
5250 case CONFIGTYPE_32
:
5251 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_32
, payload_tvb
, offset
+ 2, 4, ENC_LITTLE_ENDIAN
);
5254 case CONFIGTYPE_STRING
:
5255 proto_tree_add_item (sc_tree
, hf_r3_configitemdata_string
, payload_tvb
, offset
+ 2,
5256 item_length
- 2, ENC_ASCII
|ENC_NA
);
5260 proto_tree_add_none_format (sc_tree
, hf_r3_upstreamfielderror
, payload_tvb
, offset
+ 2,
5261 item_length
- 2, "Unknown Field Type");
5266 proto_tree_add_text (sc_tree
, payload_tvb
, offset
+ 2, item_length
- 2, "[Unknown Field Type]");
5269 offset
+= item_length
;
5274 dissect_r3_cmd_getconfig (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5276 proto_item
*config_item
;
5277 proto_tree
*config_tree
;
5284 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5286 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5287 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5289 config_item
= proto_tree_add_item (tree
, hf_r3_configitems
, tvb
, start_offset
+ 2, cmdLen
- 2, ENC_NA
);
5290 config_tree
= proto_item_add_subtree (config_item
, ett_r3configitem
);
5292 for (i
= 2; i
< cmdLen
; i
++)
5293 proto_tree_add_item (config_tree
, hf_r3_configitem
, tvb
, start_offset
+ i
, 1, ENC_LITTLE_ENDIAN
);
5297 dissect_r3_cmd_manageuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5299 guint8 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5300 tvbuff_t
*payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5303 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5304 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5306 while (offset
< tvb_reported_length (payload_tvb
))
5308 guint32 paramLength
= tvb_get_guint8 (payload_tvb
, offset
+ 0);
5309 guint32 paramType
= tvb_get_guint8 (payload_tvb
, offset
+ 1);
5310 guint32 dataLength
= paramLength
- 2;
5311 proto_tree
*mu_tree
= NULL
;
5312 proto_item
*len_field
= NULL
;
5317 auptn
= val_to_str_ext_const (paramType
, &r3_adduserparamtypenames_ext
, "[Unknown Field]");
5319 mu_tree
= proto_item_add_subtree (
5320 proto_tree_add_none_format (tree
, hf_r3_adduserparamtype
, payload_tvb
, offset
+ 0, paramLength
,
5321 "Manage User Field: %s (%u)", auptn
, paramType
), ett_r3manageuser
);
5323 len_field
= proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypelength
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5324 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypetype
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5327 if (paramLength
< 2)
5330 expert_add_info_format(pinfo
, len_field
, &ei_r3_malformed_length
, "Malformed length value -- all fields are at least 2 octets.");
5337 case ADDUSERPARAMTYPE_DISPOSITION
:
5338 case ADDUSERPARAMTYPE_ACCESSALWAYS
:
5339 case ADDUSERPARAMTYPE_ACCESSMODE
:
5340 case ADDUSERPARAMTYPE_CACHED
:
5341 case ADDUSERPARAMTYPE_USERTYPE
:
5342 case ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
:
5343 case ADDUSERPARAMTYPE_AUXFIELDTYPE
:
5344 case ADDUSERPARAMTYPE_USECOUNT
:
5345 case ADDUSERPARAMTYPE_EXCEPTIONGROUP
:
5346 if (dataLength
!= 1)
5348 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed field -- expected 1 octet");
5351 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
5354 case ADDUSERPARAMTYPE_USERNO
:
5355 if (dataLength
!= 2)
5357 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed field -- expected 2 octets");
5360 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_LITTLE_ENDIAN
);
5363 case ADDUSERPARAMTYPE_PRIMARYFIELD
:
5364 case ADDUSERPARAMTYPE_AUXFIELD
:
5365 proto_tree_add_item (mu_tree
, hf_r3_adduserparamtypearray
[paramType
], payload_tvb
, offset
, dataLength
, ENC_NA
);
5368 case ADDUSERPARAMTYPE_EXPIREON
:
5370 if (dataLength
!= 3)
5372 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed expiration field -- expected 3 octets");
5376 proto_item
*expireon_item
;
5377 proto_tree
*expireon_tree
;
5382 expireon_item
= proto_tree_add_text (mu_tree
, payload_tvb
, offset
, 3,
5383 "Expire YY/MM/DD: %02u/%02u/%02u",
5384 tvb_get_guint8 (payload_tvb
, offset
+ 2),
5385 tvb_get_guint8 (payload_tvb
, offset
+ 0),
5386 tvb_get_guint8 (payload_tvb
, offset
+ 1));
5387 expireon_tree
= proto_item_add_subtree (expireon_item
, ett_r3expireon
);
5389 proto_tree_add_item (expireon_tree
, hf_r3_expireon_month
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5390 proto_tree_add_item (expireon_tree
, hf_r3_expireon_day
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5391 proto_tree_add_item (expireon_tree
, hf_r3_expireon_year
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5396 case ADDUSERPARAMTYPE_TIMEZONE
:
5398 if (dataLength
!= 4)
5400 expert_add_info_format(pinfo
, proto_tree_get_parent (mu_tree
), &ei_r3_malformed_length
, "Malformed timezone field -- expected 4 octets");
5404 proto_item
*timezone_item
;
5405 proto_tree
*timezone_tree
;
5412 tz
= tvb_get_letohl (payload_tvb
, offset
);
5413 timezone_item
= proto_tree_add_item (mu_tree
, hf_r3_upstreamfieldarray
[paramType
], payload_tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
5414 timezone_tree
= proto_item_add_subtree (timezone_item
, ett_r3timezone
);
5416 for (i
= 0; i
< 32; i
++)
5417 proto_tree_add_boolean (timezone_tree
, hf_r3_timezonearray
[i
], payload_tvb
, offset
, 4, tz
);
5423 proto_tree_add_string (mu_tree
, hf_r3_upstreamfielderror
, payload_tvb
, offset
, dataLength
, "Unknown Field Type");
5427 offset
+= dataLength
;
5432 dissect_r3_cmd_deleteusers (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5435 tvbuff_t
*payload_tvb
;
5440 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5441 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5443 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5444 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5446 proto_tree_add_item (tree
, hf_r3_deleteusers
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5450 dissect_r3_cmd_defineexception (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5452 proto_item
*startdate_item
;
5453 proto_tree
*startdate_tree
;
5454 proto_item
*enddate_item
;
5455 proto_tree
*enddate_tree
;
5457 tvbuff_t
*payload_tvb
;
5462 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5463 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5465 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5466 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5468 proto_tree_add_item (tree
, hf_r3_defineexception_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5470 startdate_item
= proto_tree_add_text (tree
, payload_tvb
, 1, 4,
5471 "Start MM/DD HH:MM (%02u/%02u %02u:%02u)",
5472 tvb_get_guint8 (payload_tvb
, 1),
5473 tvb_get_guint8 (payload_tvb
, 2),
5474 tvb_get_guint8 (payload_tvb
, 3),
5475 tvb_get_guint8 (payload_tvb
, 4));
5476 startdate_tree
= proto_item_add_subtree (startdate_item
, ett_r3defineexceptionstartdate
);
5477 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5478 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5479 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5480 proto_tree_add_item (startdate_tree
, hf_r3_defineexception_startdate_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5482 enddate_item
= proto_tree_add_text (tree
, payload_tvb
, 5, 4,
5483 "End MM/DD HH:MM (%02u/%02u %02u:%02u)",
5484 tvb_get_guint8 (payload_tvb
, 5),
5485 tvb_get_guint8 (payload_tvb
, 6),
5486 tvb_get_guint8 (payload_tvb
, 7),
5487 tvb_get_guint8 (payload_tvb
, 8));
5488 enddate_tree
= proto_item_add_subtree (enddate_item
, ett_r3defineexceptionenddate
);
5489 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_month
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5490 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_day
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5491 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_hours
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5492 proto_tree_add_item (enddate_tree
, hf_r3_defineexception_enddate_minutes
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5496 dissect_r3_cmd_defineexceptiongroup (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5498 proto_item
*bits_item
;
5499 proto_tree
*bits_tree
;
5501 tvbuff_t
*payload_tvb
;
5508 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5509 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5511 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5512 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5514 proto_tree_add_item (tree
, hf_r3_defineexceptiongroup_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5516 bits_item
= proto_tree_add_text (tree
, payload_tvb
, 1, -1, "Exception Group Bit Field");
5517 bits_tree
= proto_item_add_subtree (bits_item
, ett_r3defineexceptiongroupbits
);
5519 for (i
= 1; i
< (cmdLen
- 2); i
++)
5522 guint8 byte
= tvb_get_guint8 (payload_tvb
, i
);
5524 for (j
= 0; j
< 8; j
++)
5525 proto_tree_add_none_format (bits_tree
, hf_r3_defineexceptiongroup_bits
, payload_tvb
, i
, 1,
5526 "Exception Group %2d: %s", bit
++, (byte
& (1 << j
)) ? "Enabled" : "Disabled");
5531 dissect_r3_cmd_definecalendar (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5534 tvbuff_t
*payload_tvb
;
5541 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5542 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5544 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5545 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5547 proto_tree_add_item (tree
, hf_r3_definecalendar_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5549 for (i
= 0; i
< 12; i
++)
5551 guint32 daymap
= tvb_get_letohl (payload_tvb
, (i
* 4) + 1);
5552 proto_item
*calendar_item
= proto_tree_add_text (tree
, payload_tvb
, (i
* 4) + 1, 4,
5553 "Calendar Bit Field - %s (0x%08x)",
5554 (mn
= val_to_str_ext_const (i
+ 1, &r3_monthnames_ext
, "[Unknown Month]")),
5556 proto_tree
*calendar_tree
= proto_item_add_subtree (calendar_item
, ett_r3definecalendarmonth
[i
+ 1]);
5559 for (j
= 0; j
< 31; j
++)
5560 proto_tree_add_none_format (calendar_tree
, hf_r3_definecalendar_bits
, payload_tvb
, (i
* 4) + 1, 4,
5562 val_to_str_ext_const (j
+ 1, &r3_monthdaynames_ext
, "[Unknown Day]"),
5564 (daymap
& (1 << j
)) ? "Enabled" : "Disabled");
5569 dissect_r3_cmd_definetimezone (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5571 proto_item
*starttime_item
;
5572 proto_tree
*starttime_tree
;
5573 proto_item
*endtime_item
;
5574 proto_tree
*endtime_tree
;
5575 proto_item
*daymap_item
;
5576 proto_tree
*daymap_tree
;
5578 tvbuff_t
*payload_tvb
;
5585 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5586 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5588 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5589 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5591 proto_tree_add_item (tree
, hf_r3_definetimezone_number
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5593 starttime_item
= proto_tree_add_text (tree
, payload_tvb
, 1, 2,
5594 "Start HH:MM (%02u:%02u)",
5595 tvb_get_guint8 (payload_tvb
, 1),
5596 tvb_get_guint8 (payload_tvb
, 2));
5597 starttime_tree
= proto_item_add_subtree (starttime_item
, ett_r3definetimezonestarttime
);
5598 proto_tree_add_item (starttime_tree
, hf_r3_definetimezone_starttime_hours
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5599 proto_tree_add_item (starttime_tree
, hf_r3_definetimezone_starttime_minutes
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5601 endtime_item
= proto_tree_add_text (tree
, payload_tvb
, 3, 2,
5602 "End HH:MM (%02u:%02u)",
5603 tvb_get_guint8 (payload_tvb
, 3),
5604 tvb_get_guint8 (payload_tvb
, 4));
5605 endtime_tree
= proto_item_add_subtree (endtime_item
, ett_r3definetimezoneendtime
);
5606 proto_tree_add_item (endtime_tree
, hf_r3_definetimezone_endtime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5607 proto_tree_add_item (endtime_tree
, hf_r3_definetimezone_endtime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5609 daymap_item
= proto_tree_add_text (tree
, payload_tvb
, 5, 1, "Day Map (0x%02x)", tvb_get_guint8 (payload_tvb
, 5));
5610 daymap_tree
= proto_item_add_subtree (daymap_item
, ett_r3definetimezonedaymap
);
5612 for (i
= 0; i
< 7; i
++)
5613 proto_tree_add_boolean (daymap_tree
, hf_r3_definetimezone_daymap
[i
], payload_tvb
, 5, 1,
5614 tvb_get_guint8 (payload_tvb
, 5));
5616 proto_tree_add_item (tree
, hf_r3_definetimezone_exceptiongroup
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5617 proto_tree_add_uint (tree
, hf_r3_definetimezone_mode
, payload_tvb
, 7, 1,
5618 (tzmode
= tvb_get_guint8 (payload_tvb
, 7)) & 0x0f);
5619 proto_tree_add_none_format (tree
, hf_r3_definetimezone_calendar
, payload_tvb
, 7, 1,
5620 "Access Always: %s", (tzmode
& 0x10) ? "True" : "False");
5624 dissect_r3_cmd_rmtauthretry (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5627 tvbuff_t
*payload_tvb
;
5632 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5633 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5635 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5636 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5638 proto_tree_add_item (tree
, hf_r3_rmtauthretry_sequence
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
5639 proto_tree_add_item (tree
, hf_r3_rmtauthretry_retry
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5643 dissect_r3_cmd_filters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5645 proto_item
*filter_item
;
5646 proto_tree
*filter_tree
;
5648 tvbuff_t
*payload_tvb
;
5654 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5655 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5657 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5658 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5660 proto_tree_add_item (tree
, hf_r3_filter_type
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5662 filter_item
= proto_tree_add_text (tree
, payload_tvb
, 2, -1,
5663 "Filters (%u specified)", tvb_get_guint8 (payload_tvb
, 0));
5664 filter_tree
= proto_item_add_subtree (filter_item
, ett_r3filters
);
5666 for (i
= 0; i
< tvb_get_guint8 (payload_tvb
, 0); i
++)
5667 proto_tree_add_item (filter_tree
, hf_r3_filter_list
, payload_tvb
, i
+ 2, 1, ENC_LITTLE_ENDIAN
);
5671 dissect_r3_cmd_alarmconfigure (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5673 proto_item
*alarm_item
;
5674 proto_tree
*alarm_tree
;
5676 tvbuff_t
*payload_tvb
;
5683 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5684 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5686 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5687 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5689 alarm_item
= proto_tree_add_text (tree
, payload_tvb
, 0, -1, "Alarm List (0 items)");
5690 alarm_tree
= proto_item_add_subtree (alarm_item
, ett_r3alarmlist
);
5692 while (offset
< (cmdLen
- 2))
5694 proto_item
*alarmcfg_item
, *pi
;
5695 proto_tree
*alarmcfg_tree
;
5700 if (!(ai
= try_val_to_str_ext (tvb_get_guint8 (payload_tvb
, offset
+ 1), &r3_alarmidnames_ext
)))
5702 ai
= "[Unknown Alarm ID]";
5706 as
= (tvb_get_guint8 (payload_tvb
, offset
+ 2) & 0xfe) ?
5707 "Error" : (tvb_get_guint8 (payload_tvb
, offset
+ 2) & 0x01) ? "Enabled" : "Disabled";
5709 alarmcfg_item
= proto_tree_add_text (alarm_tree
, payload_tvb
, offset
, tvb_get_guint8 (payload_tvb
, offset
),
5710 "Alarm Item (%s, %s)", ai
, as
);
5711 alarmcfg_tree
= proto_item_add_subtree (alarmcfg_item
, ett_r3alarmcfg
);
5713 alarm_len
= tvb_get_guint8 (payload_tvb
, offset
+ 0);
5714 pi
= proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_length
, payload_tvb
, offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5715 if (alarm_len
== 0) {
5716 expert_add_info_format (pinfo
, pi
, &ei_r3_malformed_length
,
5717 "Alarm length equal to 0. Payload could be partially decoded");
5721 proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_id
, payload_tvb
, offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5722 proto_tree_add_item (alarmcfg_tree
, hf_r3_alarm_state
, payload_tvb
, offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
5725 offset
+= alarm_len
;
5729 proto_item_set_text (alarm_item
, "Alarm List (%d items)", alarms
);
5733 dissect_r3_cmd_eventlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5735 proto_item
*starttime_item
;
5736 proto_tree
*starttime_tree
;
5737 proto_item
*endtime_item
;
5738 proto_tree
*endtime_tree
;
5740 tvbuff_t
*payload_tvb
;
5745 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5746 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5748 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5749 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5751 starttime_item
= proto_tree_add_text (tree
, payload_tvb
, 0, 5,
5752 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5753 tvb_get_guint8 (payload_tvb
, 0),
5754 tvb_get_guint8 (payload_tvb
, 1),
5755 tvb_get_guint8 (payload_tvb
, 2),
5756 tvb_get_guint8 (payload_tvb
, 3),
5757 tvb_get_guint8 (payload_tvb
, 4));
5758 starttime_tree
= proto_item_add_subtree (starttime_item
, ett_r3eventlogdumpstarttime
);
5759 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5760 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5761 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5762 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5763 proto_tree_add_item (starttime_tree
, hf_r3_eventlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5765 endtime_item
= proto_tree_add_text (tree
, payload_tvb
, 5, 5,
5766 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5767 tvb_get_guint8 (payload_tvb
, 5),
5768 tvb_get_guint8 (payload_tvb
, 6),
5769 tvb_get_guint8 (payload_tvb
, 7),
5770 tvb_get_guint8 (payload_tvb
, 8),
5771 tvb_get_guint8 (payload_tvb
, 9));
5772 endtime_tree
= proto_item_add_subtree (endtime_item
, ett_r3eventlogdumpendtime
);
5773 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5774 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5775 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5776 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5777 proto_tree_add_item (endtime_tree
, hf_r3_eventlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5779 proto_tree_add_item (tree
, hf_r3_eventlogdump_user
, payload_tvb
, 10, 2, ENC_LITTLE_ENDIAN
);
5783 dissect_r3_cmd_declinedlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5785 proto_item
*starttime_item
;
5786 proto_tree
*starttime_tree
;
5787 proto_item
*endtime_item
;
5788 proto_tree
*endtime_tree
;
5790 tvbuff_t
*payload_tvb
;
5795 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5796 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5798 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5799 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5801 starttime_item
= proto_tree_add_text (tree
, payload_tvb
, 0, 5,
5802 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5803 tvb_get_guint8 (payload_tvb
, 0),
5804 tvb_get_guint8 (payload_tvb
, 1),
5805 tvb_get_guint8 (payload_tvb
, 2),
5806 tvb_get_guint8 (payload_tvb
, 3),
5807 tvb_get_guint8 (payload_tvb
, 4));
5808 starttime_tree
= proto_item_add_subtree (starttime_item
, ett_r3declinedlogdumpstarttime
);
5809 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5810 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5811 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5812 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5813 proto_tree_add_item (starttime_tree
, hf_r3_declinedlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5815 endtime_item
= proto_tree_add_text (tree
, payload_tvb
, 5, 5,
5816 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5817 tvb_get_guint8 (payload_tvb
, 5),
5818 tvb_get_guint8 (payload_tvb
, 6),
5819 tvb_get_guint8 (payload_tvb
, 7),
5820 tvb_get_guint8 (payload_tvb
, 8),
5821 tvb_get_guint8 (payload_tvb
, 9));
5822 endtime_tree
= proto_item_add_subtree (endtime_item
, ett_r3declinedlogdumpendtime
);
5823 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5824 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5825 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5826 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5827 proto_tree_add_item (endtime_tree
, hf_r3_declinedlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5831 dissect_r3_cmd_alarmlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5833 proto_item
*starttime_item
;
5834 proto_tree
*starttime_tree
;
5835 proto_item
*endtime_item
;
5836 proto_tree
*endtime_tree
;
5838 tvbuff_t
*payload_tvb
;
5843 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5844 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5846 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5847 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5849 starttime_item
= proto_tree_add_text (tree
, payload_tvb
, 0, 5,
5850 "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5851 tvb_get_guint8 (payload_tvb
, 0),
5852 tvb_get_guint8 (payload_tvb
, 1),
5853 tvb_get_guint8 (payload_tvb
, 2),
5854 tvb_get_guint8 (payload_tvb
, 3),
5855 tvb_get_guint8 (payload_tvb
, 4));
5856 starttime_tree
= proto_item_add_subtree (starttime_item
, ett_r3alarmlogdumpstarttime
);
5857 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_year
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
5858 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_month
, payload_tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
5859 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_day
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
5860 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_hours
, payload_tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
5861 proto_tree_add_item (starttime_tree
, hf_r3_alarmlogdump_starttime_minutes
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5863 endtime_item
= proto_tree_add_text (tree
, payload_tvb
, 5, 5,
5864 "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)",
5865 tvb_get_guint8 (payload_tvb
, 5),
5866 tvb_get_guint8 (payload_tvb
, 6),
5867 tvb_get_guint8 (payload_tvb
, 7),
5868 tvb_get_guint8 (payload_tvb
, 8),
5869 tvb_get_guint8 (payload_tvb
, 9));
5870 endtime_tree
= proto_item_add_subtree (endtime_item
, ett_r3alarmlogdumpendtime
);
5871 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_year
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5872 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_month
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5873 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_day
, payload_tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
5874 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_hours
, payload_tvb
, 8, 1, ENC_LITTLE_ENDIAN
);
5875 proto_tree_add_item (endtime_tree
, hf_r3_alarmlogdump_endtime_minutes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5879 dissect_r3_cmd_downloadfirmware (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5881 proto_item
*dlfw_item
= NULL
;
5882 proto_item
*dlfw_action_item
= NULL
;
5883 proto_tree
*dlfw_tree
= NULL
;
5885 tvbuff_t
*payload_tvb
;
5887 guint32 calculatedCRC
;
5889 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5890 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5894 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5895 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5897 dlfw_item
= proto_tree_add_text (tree
, payload_tvb
, 0, -1,
5898 "Download Record (Record #%u, ", tvb_get_letohs (payload_tvb
, 2));
5899 dlfw_tree
= proto_item_add_subtree (dlfw_item
, ett_r3downloadfirmware
);
5901 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_length
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
5902 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_record
, payload_tvb
, 2, 2, ENC_LITTLE_ENDIAN
);
5903 dlfw_action_item
= proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_action
, payload_tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
5906 switch (tvb_get_guint8 (payload_tvb
, 4))
5908 case DOWNLOADFIRMWARE_START
:
5911 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_START)");
5912 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_timeout
, payload_tvb
, 5, 1, ENC_LITTLE_ENDIAN
);
5913 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_nvram
, payload_tvb
, 6, 1, ENC_LITTLE_ENDIAN
);
5916 case DOWNLOADFIRMWARE_DATA
:
5919 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_DATA, Address 0x%08x, %u Bytes)",
5920 tvb_get_letohl (payload_tvb
, 5), tvb_get_guint8 (payload_tvb
, 9));
5921 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_address
, payload_tvb
, 5, 4, ENC_LITTLE_ENDIAN
);
5922 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_bytes
, payload_tvb
, 9, 1, ENC_LITTLE_ENDIAN
);
5923 proto_tree_add_item (dlfw_tree
, hf_r3_firmwaredownload_data
, payload_tvb
, 10,
5924 tvb_get_guint8 (payload_tvb
, 9), ENC_NA
);
5927 case DOWNLOADFIRMWARE_COMPLETE
:
5930 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_COMPLETE)");
5933 case DOWNLOADFIRMWARE_ABORT
:
5936 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_ABORT)");
5939 case DOWNLOADFIRMWARE_RESET
:
5942 proto_item_append_text (dlfw_item
, "DOWNLOADFIRMWARE_RESET)");
5946 expert_add_info(pinfo
, dlfw_action_item
, &ei_r3_firmwaredownload_action
);
5953 packetCRC
= tvb_get_letohs (payload_tvb
, cmdLen
- 2 - 2);
5955 if ((calculatedCRC
= utilCrcCalculate (tvb_get_ptr (payload_tvb
, 0, cmdLen
- 2 - 2),
5959 proto_tree_add_uint_format_value(dlfw_tree
, hf_r3_firmwaredownload_crc
, payload_tvb
,
5961 packetCRC
, "0x%04x (correct)", packetCRC
);
5964 proto_item
*tmp_item
;
5966 proto_tree_add_uint_format_value(dlfw_tree
, hf_r3_firmwaredownload_crc
, payload_tvb
,
5968 packetCRC
, "0x%04x (incorrect, should be 0x%04x)", calculatedCRC
, packetCRC
);
5969 tmp_item
= proto_tree_add_boolean (dlfw_tree
, hf_r3_firmwaredownload_crc_bad
, payload_tvb
,
5970 cmdLen
- 2 - 2, 2, TRUE
);
5971 PROTO_ITEM_SET_GENERATED (tmp_item
);
5976 dissect_r3_cmd_downloadfirmwaretimeout (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo
, proto_tree
*tree
)
5979 tvbuff_t
*payload_tvb
;
5983 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
5984 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
5986 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
5987 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
5989 proto_tree_add_item (tree
, hf_r3_commanddata
, payload_tvb
, 0, -1, ENC_NA
);
5991 expert_add_info(pinfo
, proto_tree_get_parent (tree
), &ei_r3_cmd_downloadfirmwaretimeout
); /* XXX: ??? */
5995 dissect_r3_cmd_powertableselection (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
5998 tvbuff_t
*payload_tvb
;
6003 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
6004 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
6006 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6007 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6009 proto_tree_add_item (tree
, hf_r3_powertableselection
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
6013 dissect_r3_cmd_clearnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6015 proto_item
*nvram_item
;
6016 proto_tree
*nvram_tree
;
6018 tvbuff_t
*payload_tvb
;
6019 guint32 nvramclearoptions
;
6025 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
6026 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
6028 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6029 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6031 nvramclearoptions
= tvb_get_letohs (payload_tvb
, 0);
6033 nvram_item
= proto_tree_add_text (tree
, payload_tvb
, 0, 2, "NVRAM Clean Options (0x%04x)", nvramclearoptions
);
6034 nvram_tree
= proto_item_add_subtree (nvram_item
, ett_r3clearnvram
);
6036 for (i
= 0; i
< 16; i
++)
6037 proto_tree_add_boolean (nvram_tree
, hf_r3_nvramclearoptions
[i
], payload_tvb
, 0, 2, nvramclearoptions
);
6041 dissect_r3_cmd_dpac (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6044 tvbuff_t
*payload_tvb
;
6049 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
6050 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
6052 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6053 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6055 /* XXX: hf[] entries for the following hf indexes originally missing */
6056 proto_tree_add_item (tree
, hf_r3_dpac_action
, payload_tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
6057 proto_tree_add_item (tree
, hf_r3_dpac_waittime
, payload_tvb
, 1, 2, ENC_LITTLE_ENDIAN
);
6058 proto_tree_add_item (tree
, hf_r3_dpac_command
, payload_tvb
, 3, -1, ENC_NA
);
6062 dissect_r3_cmd_selftest (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6066 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6067 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6072 dissect_r3_cmd_reset (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6076 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6077 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6082 dissect_r3_cmd_logwrite (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6085 tvbuff_t
*payload_tvb
;
6090 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
6091 payload_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, cmdLen
- 2, cmdLen
- 2);
6093 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6094 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6096 proto_tree_add_item (tree
, hf_r3_writeeventlog_user
, payload_tvb
, 0, 2, ENC_LITTLE_ENDIAN
);
6097 proto_tree_add_item (tree
, hf_r3_writeeventlog_event
, payload_tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
6101 dissect_r3_cmd_mfgcommand (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6105 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6106 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6108 mfgCommandFlag
= TRUE
;
6112 dissect_r3_cmd_nvrambackup (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6116 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6117 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6122 dissect_r3_cmd_extendedresponse (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6126 proto_tree_add_item (tree
, hf_r3_commandlength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6127 proto_tree_add_item (tree
, hf_r3_command
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6132 * ***************************************************************************
6135 dissect_r3_cmdmfg_setserialnumber (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6137 tvbuff_t
*sn_tvb
= tvb_new_subset (tvb
, start_offset
+ 2, 16, 16);
6141 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6142 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6144 dissect_serialnumber (sn_tvb
, 0, length
, pinfo
, tree
, hf_r3_mfgsetserialnumber
);
6148 dissect_r3_cmdmfg_setcryptkey (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6152 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6153 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6154 proto_tree_add_item (tree
, hf_r3_mfgsetcryptkey
, tvb
, start_offset
+ 2, -1, ENC_NA
);
6159 dissect_r3_cmdmfg_dumpnvram (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6163 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6164 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6165 proto_tree_add_item (tree
, hf_r3_mfgdumpnvram
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6170 dissect_r3_cmdmfg_terminal (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6174 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6175 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6180 dissect_r3_cmdmfg_remoteunlock (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6184 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6185 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6186 proto_tree_add_item (tree
, hf_r3_mfgremoteunlock
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6191 dissect_r3_cmdmfg_auxctlrversion (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6195 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6196 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6201 dissect_r3_cmdmfg_iopins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6205 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6206 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6211 dissect_r3_cmdmfg_adcs (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6215 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6216 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6221 dissect_r3_cmdmfg_hardwareid (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6225 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6226 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6231 dissect_r3_cmdmfg_checkpointlogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6235 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6236 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6241 dissect_r3_cmdmfg_checkpointlogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6245 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6246 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6251 dissect_r3_cmdmfg_readregisters (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6255 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6256 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6261 dissect_r3_cmdmfg_forceoptions (tvbuff_t
*tvb
, guint32 start_offset
, guint32 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
);
6271 len
= tvb_length_remaining (tvb
, start_offset
);
6274 while (i
<len
&& (step
=tvb_get_guint8(tvb
, start_offset
+ i
))>0)
6276 proto_item
*force_item
= proto_tree_add_text (tree
, tvb
, start_offset
+ i
, tvb_get_guint8 (tvb
, start_offset
+ i
),
6277 "Force Option %s (%u)",
6278 val_to_str_ext_const (
6279 tvb_get_guint8 (tvb
, start_offset
+ i
+ 1),
6280 &r3_forceitemnames_ext
, "[Unknown]"),
6281 tvb_get_guint8 (tvb
, start_offset
+ i
+ 1));
6282 proto_tree
*force_tree
= proto_item_add_subtree (force_item
, ett_r3forceoptions
);
6283 proto_item
*force_item_item
;
6285 proto_tree_add_item (force_tree
, hf_r3_forceoptions_length
, tvb
, start_offset
+ i
+ 0, 1, ENC_LITTLE_ENDIAN
);
6286 force_item_item
= proto_tree_add_item (force_tree
, hf_r3_forceoptions_item
, tvb
, start_offset
+ i
+ 1, 1, ENC_LITTLE_ENDIAN
);
6288 switch (tvb_get_guint8 (tvb
, start_offset
+ i
) - 2)
6290 case 1 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_8
, tvb
, start_offset
+ i
+ 2, 1, ENC_LITTLE_ENDIAN
);
6292 case 2 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_16
, tvb
, start_offset
+ i
+ 2, 2, ENC_LITTLE_ENDIAN
);
6294 case 3 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_24
, tvb
, start_offset
+ i
+ 2, 3, ENC_LITTLE_ENDIAN
);
6296 case 4 : proto_tree_add_item (force_tree
, hf_r3_forceoptions_state_32
, tvb
, start_offset
+ i
+ 2, 4, ENC_LITTLE_ENDIAN
);
6299 expert_add_info_format(pinfo
, force_item_item
, &ei_r3_malformed_length
, "Invalid length for Forceoptions State entry");
6309 dissect_r3_cmdmfg_commuser (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6313 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6314 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6319 dissect_r3_cmdmfg_dumpkeypad (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6323 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6324 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6329 dissect_r3_cmdmfg_batterycheck (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6333 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6334 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6339 dissect_r3_cmdmfg_ramrefresh (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6343 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6344 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6349 dissect_r3_cmdmfg_taskflags (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6353 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6354 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6359 dissect_r3_cmdmfg_timerchain (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6363 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6364 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6369 dissect_r3_cmdmfg_peekpoke (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6374 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6375 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6378 len
= tvb_length_remaining (tvb
, start_offset
);
6380 for (i
= 0; i
< len
; i
+= 3)
6382 proto_item
*peekpoke_item
;
6383 proto_item
*peekpoke_op_item
;
6384 proto_tree
*peekpoke_tree
;
6386 peekpoke_item
= proto_tree_add_text (tree
, tvb
, start_offset
+ i
, 3, "%s", "");
6387 peekpoke_tree
= proto_item_add_subtree (peekpoke_item
, ett_r3peekpoke
);
6389 peekpoke_op_item
= proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_operation
, tvb
, start_offset
+ i
+ 0, 1, ENC_LITTLE_ENDIAN
);
6390 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_address
, tvb
, start_offset
+ i
+ 1, 2, ENC_LITTLE_ENDIAN
);
6392 switch (tvb_get_guint8 (tvb
, start_offset
+ i
+ 0))
6394 case PEEKPOKE_READU8
:
6395 proto_item_append_text (peekpoke_item
, "Read (8 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6398 case PEEKPOKE_READU16
:
6399 proto_item_append_text (peekpoke_item
, "Read (16 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6402 case PEEKPOKE_READU24
:
6403 proto_item_append_text (peekpoke_item
, "Read (24 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6406 case PEEKPOKE_READU32
:
6407 proto_item_append_text (peekpoke_item
, "Read (32 Bits @ 0x%04x)", tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6410 case PEEKPOKE_READSTRING
:
6411 proto_item_append_text (peekpoke_item
,
6412 "Read (%d Bytes @ 0x%04x)",
6413 tvb_get_guint8 (tvb
, start_offset
+ i
+ 3),
6414 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6415 proto_item_set_len (peekpoke_item
, 4);
6416 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6420 case PEEKPOKE_WRITEU8
:
6421 proto_item_append_text (peekpoke_item
,
6422 "Write (8 Bits: 0x%02x @ 0x%04x)",
6423 tvb_get_guint8 (tvb
, start_offset
+ i
+ 3),
6424 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6425 proto_item_set_len (peekpoke_item
, 4);
6426 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke8
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6430 case PEEKPOKE_WRITEU16
:
6431 proto_item_append_text (peekpoke_item
,
6432 "Write (16 Bits: 0x%04x @ 0x%04x)",
6433 tvb_get_letohs (tvb
, start_offset
+ i
+ 3),
6434 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6435 proto_item_set_len (peekpoke_item
, 5);
6436 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke16
, tvb
, start_offset
+ i
+ 3, 2, ENC_LITTLE_ENDIAN
);
6440 case PEEKPOKE_WRITEU24
:
6441 proto_item_append_text (peekpoke_item
,
6442 "Write (24 Bits: 0x%06x @ 0x%04x)",
6443 tvb_get_letoh24 (tvb
, start_offset
+ i
+ 3),
6444 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6445 proto_item_set_len (peekpoke_item
, 6);
6446 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke24
, tvb
, start_offset
+ i
+ 3, 3, ENC_LITTLE_ENDIAN
);
6450 case PEEKPOKE_WRITEU32
:
6451 proto_item_append_text (peekpoke_item
,
6452 "Write (32 Bits: 0x%08x @ 0x%04x)",
6453 tvb_get_letohl (tvb
, start_offset
+ i
+ 3),
6454 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6455 proto_item_set_len (peekpoke_item
, 7);
6456 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_poke32
, tvb
, start_offset
+ i
+ 3, 4, ENC_LITTLE_ENDIAN
);
6460 case PEEKPOKE_WRITESTRING
:
6461 proto_item_append_text (peekpoke_item
,
6462 "Write (%d Bytes @ 0x%04x)",
6463 tvb_get_guint8 (tvb
, start_offset
+ i
+ 3),
6464 tvb_get_letohs (tvb
, start_offset
+ i
+ 1));
6465 proto_item_set_len (peekpoke_item
, 3 + 1 + tvb_get_guint8 (tvb
, start_offset
+ i
+ 3));
6466 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_length
, tvb
, start_offset
+ i
+ 3, 1, ENC_LITTLE_ENDIAN
);
6467 proto_tree_add_item (peekpoke_tree
, hf_r3_peekpoke_pokestring
, tvb
, start_offset
+ i
+ 4,
6468 tvb_get_guint8 (tvb
, start_offset
+ i
+ 3), ENC_NA
);
6469 i
+= tvb_get_guint8 (tvb
, start_offset
+ i
+ 3) + 1;
6473 expert_add_info_format(pinfo
, peekpoke_op_item
, &ei_r3_peekpoke_operation
, "Unknown Mfg peekpoke operation value");
6480 dissect_r3_cmdmfg_lockstate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6482 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6483 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6487 dissect_r3_cmdmfg_capabilities (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6489 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6490 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6494 dissect_r3_cmdmfg_dumpm41t81 (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6496 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6497 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6501 dissect_r3_cmdmfg_debuglogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 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_debuglogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 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_testwdt (tvbuff_t
*tvb
, guint32 start_offset
, guint32 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_querycksum (tvbuff_t
*tvb
, guint32 start_offset
, guint32 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
);
6529 dissect_r3_cmdmfg_validatechecksums (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6531 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6532 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6536 dissect_r3_cmdmfg_rebuildlrucache (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6538 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6539 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6543 dissect_r3_cmdmfg_tzupdate (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6545 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6546 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6550 dissect_r3_cmdmfg_testpreserve (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6552 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6553 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6554 proto_tree_add_item (tree
, hf_r3_mfgtestpreserve
, tvb
, start_offset
+ 2, 1, ENC_LITTLE_ENDIAN
);
6558 dissect_r3_cmdmfg_mortisestatelogdump (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6560 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6561 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6565 dissect_r3_cmdmfg_mortisestatelogclear (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6567 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6568 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6572 dissect_r3_cmdmfg_mortisepins (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6574 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6575 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6579 dissect_r3_cmdmfg_haltandcatchfire (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length _U_
, packet_info
*pinfo _U_
, proto_tree
*tree
)
6581 proto_tree_add_item (tree
, hf_r3_commandmfglength
, tvb
, start_offset
+ 0, 1, ENC_LITTLE_ENDIAN
);
6582 proto_tree_add_item (tree
, hf_r3_commandmfg
, tvb
, start_offset
+ 1, 1, ENC_LITTLE_ENDIAN
);
6588 dissect_r3_command (tvbuff_t
*tvb
, guint32 start_offset
, guint32 length
, packet_info
*pinfo
, proto_tree
*r3_tree
)
6590 proto_item
*cmd_item
;
6591 proto_tree
*cmd_tree
;
6596 tvb_ensure_bytes_exist (tvb
, start_offset
, 2);
6598 cmdLen
= tvb_get_guint8 (tvb
, start_offset
+ 0);
6599 cmd
= tvb_get_guint8 (tvb
, start_offset
+ 1);
6601 if (!mfgCommandFlag
)
6602 cn
= val_to_str_ext_const (cmd
, &r3_cmdnames_ext
, "[Unknown Command]");
6604 cn
= val_to_str_ext_const (cmd
, &r3_cmdmfgnames_ext
, "[Unknown Mfg Command]");
6606 cmd_item
= proto_tree_add_text (r3_tree
, tvb
, start_offset
, cmdLen
, "Command Packet: %s (%d)", cn
, cmd
);
6607 cmd_tree
= proto_item_add_subtree (cmd_item
, ett_r3cmd
);
6609 if (!mfgCommandFlag
)
6611 if (cmd
>= CMD_LAST
)
6612 expert_add_info(pinfo
, proto_tree_get_parent (cmd_tree
), &ei_r3_unknown_command_value
);
6613 else if (r3command_dissect
[cmd
])
6614 (*r3command_dissect
[cmd
]) (tvb
, start_offset
, length
, pinfo
, cmd_tree
);
6618 mfgCommandFlag
= FALSE
;
6620 if (cmd
>= CMDMFG_LAST
)
6622 expert_add_info_format(pinfo
, proto_tree_get_parent (cmd_tree
), &ei_r3_unknown_command_value
, "Unknown manufacturing command value");
6624 else if (r3commandmfg_dissect
[cmd
])
6625 (*r3commandmfg_dissect
[cmd
]) (tvb
, start_offset
, length
, pinfo
, cmd_tree
);
6628 return tvb_get_guint8 (tvb
, start_offset
+ 0);
6632 * ***************************************************************************
6634 * Dissect a single r3 PDU
6636 * return: amount consumed
6639 dissect_r3_packet (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*r3_tree
)
6641 proto_item
*payload_item
= NULL
;
6642 proto_tree
*payload_tree
= NULL
;
6647 if (tvb_strneql (tvb
, 0, "~~~ds", 5) == 0)
6650 proto_tree_add_item (r3_tree
, hf_r3_tildex3ds
, tvb
, 0, -1, ENC_ASCII
|ENC_NA
);
6656 * Show basic header stuff
6660 proto_item
*header_item
= proto_tree_add_item (r3_tree
, hf_r3_header
, tvb
, 0, 5, ENC_NA
);
6661 proto_tree
*header_tree
= proto_item_add_subtree (header_item
, ett_r3header
);
6663 proto_tree_add_item (header_tree
, hf_r3_sigil
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
6664 proto_tree_add_item (header_tree
, hf_r3_address
, tvb
, 1, 1, ENC_LITTLE_ENDIAN
);
6665 proto_tree_add_item (header_tree
, hf_r3_packetnumber
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
6666 proto_tree_add_item (header_tree
, hf_r3_packetlength
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
6667 proto_tree_add_item (header_tree
, hf_r3_encryption
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
6670 /* Note: packetLen == tvb_reported_length() */
6672 packetLen
= tvb_get_guint8 (tvb
, 3);
6676 payload_item
= proto_tree_add_item (r3_tree
, hf_r3_payload
, tvb
, 5, -1, ENC_NA
);
6677 payload_tree
= proto_item_add_subtree (payload_item
, ett_r3payload
);
6682 mfgCommandFlag
= FALSE
; /* XXX: Assumption: mfgCmd always follows Cmd in same r3 "packet" */
6683 while (offset
< (packetLen
- 3))
6685 octConsumed
= dissect_r3_command (tvb
, offset
, 0, pinfo
, payload_tree
);
6686 if(octConsumed
== 0)
6688 expert_add_info_format(pinfo
, proto_tree_get_parent (payload_tree
), &ei_r3_malformed_length
,
6689 "Command length equal to 0. Payload could be partially decoded");
6690 offset
= tvb_reported_length (tvb
) - 3; /* just do CRC stuff ?? */
6693 offset
+= octConsumed
;
6697 * Show the CRC and XOR status
6701 proto_item
*tail_item
= proto_tree_add_item (r3_tree
, hf_r3_tail
, tvb
, offset
, 3, ENC_NA
);
6702 proto_tree
*tail_tree
= proto_item_add_subtree (tail_item
, ett_r3tail
);
6703 guint32 packetCRC
= tvb_get_letohs (tvb
, offset
);
6704 guint32 packetXor
= tvb_get_guint8 (tvb
, offset
+ 2);
6705 guint32 calculatedCRC
;
6707 if ((calculatedCRC
= utilCrcCalculate (tvb_get_ptr (tvb
, 1, packetLen
- 3), packetLen
- 3, 0x0000)) == packetCRC
)
6708 proto_tree_add_uint_format_value(tail_tree
, hf_r3_crc
, tvb
, offset
, 2, packetCRC
, "0x%04x (correct)", packetCRC
);
6711 proto_item
*tmp_item
;
6713 proto_tree_add_uint_format_value(tail_tree
, hf_r3_crc
, tvb
, offset
, 2, packetCRC
,
6714 "0x%04x (incorrect, should be 0x%04x)", calculatedCRC
, packetCRC
);
6715 tmp_item
= proto_tree_add_boolean (tail_tree
, hf_r3_crc_bad
, tvb
, offset
, 2, TRUE
);
6716 PROTO_ITEM_SET_GENERATED (tmp_item
);
6719 if ((packetLen
^ 0xff) == packetXor
)
6720 proto_tree_add_uint_format_value(tail_tree
, hf_r3_xor
, tvb
, offset
+ 2, 1, packetXor
,
6721 "0x%02x (correct)", packetXor
);
6724 proto_item
*tmp_item
;
6726 proto_tree_add_uint_format_value(tail_tree
, hf_r3_xor
, tvb
, offset
+ 7, 1, packetXor
,
6727 "0x%02x (incorrect, should be 0x%02x)", packetXor
, packetLen
^ 0xff);
6728 tmp_item
= proto_tree_add_boolean (tail_tree
, hf_r3_xor_bad
, tvb
, offset
+ 7, 1, TRUE
);
6729 PROTO_ITEM_SET_GENERATED (tmp_item
);
6739 * ***************************************************************************
6741 * Main dissector entry points
6744 dissect_r3_message (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
6746 proto_tree
*r3_tree
= NULL
;
6748 col_set_str (pinfo
->cinfo
, COL_PROTOCOL
, "R3");
6749 col_clear (pinfo
->cinfo
, COL_INFO
);
6751 /* Note: The tvb (provided via tcp_dissect_pdus()) will contain (at most) one PDU of the length
6752 * specified via get_r3_message_len()
6757 proto_item
*r3_item
;
6758 r3_item
= proto_tree_add_item (tree
, proto_r3
, tvb
, 0, -1, ENC_NA
);
6759 r3_tree
= proto_item_add_subtree (r3_item
, ett_r3
);
6762 dissect_r3_packet (tvb
, pinfo
, r3_tree
);
6764 return tvb_length(tvb
);
6768 get_r3_message_len (packet_info
*pinfo _U_
, tvbuff_t
*tvb
, int offset
)
6770 return (guint
) tvb_get_guint8 (tvb
, offset
+ 3) + 1;
6774 dissect_r3 (tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
6776 tcp_dissect_pdus (tvb
, pinfo
, tree
, TRUE
, 4, get_r3_message_len
, dissect_r3_message
, data
);
6777 return tvb_length(tvb
);
6781 * ***************************************************************************
6783 void proto_register_r3 (void)
6786 /* Setup list of header fields */
6787 static hf_register_info hf
[] =
6790 { "DPAC Attention", "r3.dpac_attention",
6791 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6796 { "Header", "r3.header",
6797 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6801 { "Payload", "r3.payload",
6802 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6806 { "Tail", "r3.tail",
6807 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6812 { "Sigil", "r3.sigil",
6813 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6817 { "Address", "r3.address",
6818 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6821 { &hf_r3_packetnumber
,
6822 { "Packet Number", "r3.packetnumber",
6823 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6826 { &hf_r3_packetlength
,
6827 { "Packet Length", "r3.packetlength",
6828 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6831 { &hf_r3_encryption
,
6832 { "Crypt Type", "r3.encryption",
6833 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_encryptionschemenames_ext
, 0x0,
6838 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6842 { "Bad CRC", "r3.crc_bad",
6843 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6848 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6852 { "Bad XOR", "r3.xor_bad",
6853 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
6857 { &hf_r3_commandlength
,
6858 { "Command Length", "r3.command.length",
6859 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6863 { "Command", "r3.command.command",
6864 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6867 { &hf_r3_commanddata
,
6868 { "Command Data", "r3.command.data",
6869 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6873 { &hf_r3_commandmfglength
,
6874 { "Mfg Command Length", "r3.commandmfg.length",
6875 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6878 { &hf_r3_commandmfg
,
6879 { "Mfg Command", "r3.commandmfg.command",
6880 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdmfgnames_ext
, 0x0,
6884 { &hf_r3_commandmfgdata
,
6885 { "Mfg Command Data", "r3.commandmfg.data",
6886 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6891 { &hf_r3_responselength
,
6892 { "Response Length", "r3.response.length",
6893 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6896 { &hf_r3_responsecommand
,
6897 { "Response Command", "r3.response.command",
6898 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6901 { &hf_r3_responsetype
,
6902 { "Response Type", "r3.response.responsetype",
6903 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_responsetypenames_ext
, 0x0,
6906 { &hf_r3_responsetocommand
,
6907 { "Response To Command", "r3.response.to_command",
6908 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_cmdnames_ext
, 0x0,
6912 { &hf_r3_responsedata
,
6913 { "Response Data", "r3.response.data",
6914 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6919 { &hf_r3_upstreamcommand
,
6920 { "Upstream Command", "r3.upstreamcommand.command",
6921 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_upstreamcommandnames_ext
, 0x0,
6925 { &hf_r3_upstreamfield
,
6926 { "Upstream Field", "r3.upstreamfield",
6927 FT_NONE
, BASE_NONE
, NULL
, 0x0,
6930 { &hf_r3_upstreamfieldlength
,
6931 { "Field Length", "r3.upstreamfield.length",
6932 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6935 { &hf_r3_upstreamfieldtype
,
6936 { "Field Type", "r3.upstreamfield.type",
6937 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_upstreamfieldnames_ext
, 0x0,
6941 { &hf_r3_upstreamfielddatalen
,
6942 { "Data Length", "r3.upstreamfield.datalen",
6943 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6947 { &hf_r3_upstreamfielderror
,
6948 { "Error", "r3.upstreamfield.error",
6949 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6952 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_SERIALNUMBER
],
6953 { "Serial Number", "r3.upstreamfield.serialnumber",
6954 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6957 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_NAR
],
6958 { "Next Available Record", "r3.upstreamfield.nar",
6959 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6962 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ENTRYDEVICE
],
6963 { "Entry Device", "r3.upstreamfield.entrydevice",
6964 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6967 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PPMIFIELDTYPE
],
6968 { "PPMI Field Type", "r3.upstreamfield.ppmifieldtype",
6969 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
6972 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PIN
],
6973 { "PIN", "r3.upstreamfield.pin",
6974 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6977 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_SEQUENCENUMBER
],
6978 { "Sequence Number", "r3.upstreamfield.sequencenumber",
6979 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6982 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_RESPONSEWINDOW
],
6983 { "Response Window", "r3.upstreamfield.responsewindow",
6984 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
6987 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USERNUMBER
],
6988 { "User Number", "r3.upstreamfield.usernumber",
6989 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
6992 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_VERSION
],
6993 { "Version", "r3.upstreamfield.version",
6994 FT_STRING
, BASE_NONE
, NULL
, 0x0,
6997 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EVENTLOGRECORD
],
6998 { "Event Log Record", "r3.upstreamfield.eventlogrecord",
6999 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7002 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DATETIME
],
7003 { "Date/Time", "r3.upstreamfield.datetime",
7004 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7007 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EVENTLOGRECORDCOUNT
],
7008 { "Event Log Record Count", "r3.upstreamfield.eventlogrecordcount",
7009 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7012 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DECLINEDRECORDCOUNT
],
7013 { "Declined Log Record", "r3.upstreamfield.declinedlogrecord",
7014 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7017 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_DECLINEDRECORD
],
7018 { "Declined Log", "r3.upstreamfield.declinedlog",
7019 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7022 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USERTYPE
],
7023 { "User Type", "r3.upstreamfield.usertype",
7024 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_usertypenames_ext
, 0x0,
7027 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ACCESSALWAYS
],
7028 { "Access Always", "r3.upstreamfield.accessalways",
7029 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7032 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_CACHED
],
7033 { "Cached", "r3.upstreamfield.cached",
7034 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7037 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PRIMARYFIELDTYPE
],
7038 { "Primary Field Type", "r3.upstreamfield.primaryfieldtype",
7039 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
7042 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXFIELDTYPE
],
7043 { "Aux Field Type", "r3.upstreamfield.auxfieldtype",
7044 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
7047 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ACCESSMODE
],
7048 { "Access Mode", "r3.upstreamfield.accessmode",
7049 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_accessmodenames_ext
, 0x0,
7052 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EXPIREON
],
7053 { "Expire On", "r3.upstreamfield.expireon",
7054 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
7057 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_USECOUNT
],
7058 { "Use Count", "r3.upstreamfield.usecount",
7059 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7062 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_TIMEZONE
],
7063 { "Timezone", "r3.upstreamfield.timezone",
7064 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
7067 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_EXCEPTIONGROUP
],
7068 { "Exception Group", "r3.upstreamfield.exceptiongroup",
7069 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7072 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_PRIMARYPIN
],
7073 { "Primary PIN", "r3.upstreamfield.primarypin",
7074 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7077 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXPIN
],
7078 { "Aux PIN", "r3.upstreamfield.auxpin",
7079 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7082 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ALARMRECORDCOUNT
],
7083 { "Alarm Record Count", "r3.upstreamfield.alarmrecordcount",
7084 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7087 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_ALARMRECORD
],
7088 { "Alarm Record", "r3.upstreamfield.alarmrecord",
7089 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7092 { &hf_r3_upstreamfieldarray
[UPSTREAMFIELD_AUXCTLRVERSION
],
7093 { "Aux Controller Version", "r3.upstreamfield.auxctlrversion",
7094 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7098 { &hf_r3_configitems
,
7099 { "Configuration Item List", "r3.configitems",
7100 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7103 { &hf_r3_configitem
,
7104 { "Configuration Item", "r3.configitem",
7105 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_configitemnames_ext
, 0x0,
7109 { &hf_r3_configfield
,
7110 { "Config Field", "r3.configfield",
7111 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7115 { &hf_r3_configitemlength
,
7116 { "Configuration Item Length", "r3.configitem.length",
7117 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7120 { &hf_r3_configitemtype
,
7121 { "Configuration Item Type", "r3.configitem.type",
7122 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_configtypenames_ext
, 0x0,
7125 { &hf_r3_configitemdata
,
7126 { "Configuration Item Data", "r3.configitem.data",
7127 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7130 { &hf_r3_configitemdata_bool
,
7131 { "Configuration Item Boolean", "r3.configitem.data_boolean",
7132 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7135 { &hf_r3_configitemdata_8
,
7136 { "Configuration Item 8-bit", "r3.configitem.data_8",
7137 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7140 { &hf_r3_configitemdata_16
,
7141 { "Configuration Item 16-bit", "r3.configitem.data_16",
7142 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7145 { &hf_r3_configitemdata_32
,
7146 { "Configuration Item 32-bit", "r3.configitem.data_32",
7147 FT_UINT32
, BASE_DEC_HEX
, NULL
, 0x0,
7150 { &hf_r3_configitemdata_string
,
7151 { "Configuration Item String", "r3.configitem.data_string",
7152 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7156 { &hf_r3_timezonearray
[ 0],
7157 { "Timezone 0", "r3.timezone.0",
7158 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000001,
7161 { &hf_r3_timezonearray
[ 1],
7162 { "Timezone 1", "r3.timezone.1",
7163 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000002,
7166 { &hf_r3_timezonearray
[ 2],
7167 { "Timezone 2", "r3.timezone.2",
7168 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000004,
7171 { &hf_r3_timezonearray
[ 3],
7172 { "Timezone 3", "r3.timezone.3",
7173 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000008,
7176 { &hf_r3_timezonearray
[ 4],
7177 { "Timezone 4", "r3.timezone.4",
7178 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000010,
7181 { &hf_r3_timezonearray
[ 5],
7182 { "Timezone 5", "r3.timezone.5",
7183 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000020,
7186 { &hf_r3_timezonearray
[ 6],
7187 { "Timezone 6", "r3.timezone.6",
7188 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000040,
7191 { &hf_r3_timezonearray
[ 7],
7192 { "Timezone 7", "r3.timezone.7",
7193 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000080,
7196 { &hf_r3_timezonearray
[ 8],
7197 { "Timezone 8", "r3.timezone.8",
7198 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000100,
7201 { &hf_r3_timezonearray
[ 9],
7202 { "Timezone 9", "r3.timezone.9",
7203 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000200,
7206 { &hf_r3_timezonearray
[10],
7207 { "Timezone 10", "r3.timezone.10",
7208 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000400,
7211 { &hf_r3_timezonearray
[11],
7212 { "Timezone 11", "r3.timezone.11",
7213 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00000800,
7216 { &hf_r3_timezonearray
[12],
7217 { "Timezone 12", "r3.timezone.12",
7218 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00001000,
7221 { &hf_r3_timezonearray
[13],
7222 { "Timezone 13", "r3.timezone.13",
7223 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00002000,
7226 { &hf_r3_timezonearray
[14],
7227 { "Timezone 14", "r3.timezone.14",
7228 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00004000,
7231 { &hf_r3_timezonearray
[15],
7232 { "Timezone 15", "r3.timezone.15",
7233 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00008000,
7236 { &hf_r3_timezonearray
[16],
7237 { "Timezone 16", "r3.timezone.16",
7238 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00010000,
7241 { &hf_r3_timezonearray
[17],
7242 { "Timezone 17", "r3.timezone.17",
7243 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00020000,
7246 { &hf_r3_timezonearray
[18],
7247 { "Timezone 18", "r3.timezone.18",
7248 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00040000,
7251 { &hf_r3_timezonearray
[19],
7252 { "Timezone 19", "r3.timezone.19",
7253 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00080000,
7256 { &hf_r3_timezonearray
[20],
7257 { "Timezone 20", "r3.timezone.20",
7258 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00100000,
7261 { &hf_r3_timezonearray
[21],
7262 { "Timezone 21", "r3.timezone.21",
7263 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00200000,
7266 { &hf_r3_timezonearray
[22],
7267 { "Timezone 22", "r3.timezone.22",
7268 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00400000,
7271 { &hf_r3_timezonearray
[23],
7272 { "Timezone 23", "r3.timezone.23",
7273 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x00800000,
7276 { &hf_r3_timezonearray
[24],
7277 { "Timezone 24", "r3.timezone.24",
7278 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x01000000,
7281 { &hf_r3_timezonearray
[25],
7282 { "Timezone 25", "r3.timezone.25",
7283 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x02000000,
7286 { &hf_r3_timezonearray
[26],
7287 { "Timezone 26", "r3.timezone.26",
7288 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x04000000,
7291 { &hf_r3_timezonearray
[27],
7292 { "Timezone 27", "r3.timezone.27",
7293 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x08000000,
7296 { &hf_r3_timezonearray
[28],
7297 { "Timezone 28", "r3.timezone.28",
7298 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x10000000,
7301 { &hf_r3_timezonearray
[29],
7302 { "Timezone 29", "r3.timezone.29",
7303 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x20000000,
7306 { &hf_r3_timezonearray
[30],
7307 { "Timezone 30", "r3.timezone.30",
7308 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x40000000,
7311 { &hf_r3_timezonearray
[31],
7312 { "Timezone 31", "r3.timezone.31",
7313 FT_BOOLEAN
, 32, TFS (&tfs_enabled_disabled
), 0x80000000,
7317 { &hf_r3_expireon_year
,
7318 { "Expiration Year", "r3.expireon.year",
7319 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7322 { &hf_r3_expireon_month
,
7323 { "Expiration Month", "r3.expireon.month",
7324 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7327 { &hf_r3_expireon_day
,
7328 { "Expiration Day", "r3.expireon.day",
7329 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7333 { &hf_r3_datetime_year
,
7334 { "Date/Time Year", "r3.datetime.year",
7335 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7338 { &hf_r3_datetime_month
,
7339 { "Date/Time Month", "r3.datetime.month",
7340 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7343 { &hf_r3_datetime_day
,
7344 { "Date/Time Day", "r3.datetime.day",
7345 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7348 { &hf_r3_datetime_dow
,
7349 { "Date/Time DOW", "r3.datetime.dow",
7350 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_daynames_ext
, 0x0,
7353 { &hf_r3_datetime_hours
,
7354 { "Date/Time Hours", "r3.datetime.hours",
7355 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7358 { &hf_r3_datetime_minutes
,
7359 { "Date/Time Minutes", "r3.datetime.minutes",
7360 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7363 { &hf_r3_datetime_seconds
,
7364 { "Date/Time Seconds", "r3.datetime.seconds",
7365 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7368 { &hf_r3_datetime_dst
,
7369 { "Date/Time DST", "r3.datetime.dst",
7370 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
7374 { &hf_r3_eventlog_recordnumber
,
7375 { "Record Number", "r3.eventlog.recordnumber",
7376 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7379 { &hf_r3_eventlog_year
,
7380 { "Year", "r3.eventlog.year",
7381 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7384 { &hf_r3_eventlog_month
,
7385 { "Month", "r3.eventlog.month",
7386 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7389 { &hf_r3_eventlog_day
,
7390 { "Day", "r3.eventlog.day",
7391 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7394 { &hf_r3_eventlog_hour
,
7395 { "Hours", "r3.eventlog.hours",
7396 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7399 { &hf_r3_eventlog_minute
,
7400 { "Minutes", "r3.eventlog.minutes",
7401 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7404 { &hf_r3_eventlog_second
,
7405 { "Seconds", "r3.eventlog.seconds",
7406 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7409 { &hf_r3_eventlog_usernumber
,
7410 { "User Number", "r3.eventlog.usernumber",
7411 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7414 { &hf_r3_eventlog_event
,
7415 { "ID", "r3.eventlog.id",
7416 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_eventnames_ext
, 0x0,
7420 { &hf_r3_declinedlog_recordnumber
,
7421 { "Record Number", "r3.declinedlog.recordnumber",
7422 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7425 { &hf_r3_declinedlog_year
,
7426 { "Year", "r3.declinedlog.year",
7427 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7430 { &hf_r3_declinedlog_month
,
7431 { "Month", "r3.declinedlog.month",
7432 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7435 { &hf_r3_declinedlog_day
,
7436 { "Day", "r3.declinedlog.day",
7437 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7440 { &hf_r3_declinedlog_hour
,
7441 { "Hours", "r3.declinedlog.hours",
7442 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7445 { &hf_r3_declinedlog_minute
,
7446 { "Minutes", "r3.declinedlog.minutes",
7447 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7450 { &hf_r3_declinedlog_second
,
7451 { "Seconds", "r3.declinedlog.seconds",
7452 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7455 { &hf_r3_declinedlog_usernumber
,
7456 { "User Number", "r3.declinedlog.usernumber",
7457 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7460 { &hf_r3_declinedlog_cred1type
,
7461 { "Credential 1 Type", "r3.declinedlog.cred1type",
7462 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_fieldtypenames_ext
, 0x0,
7465 { &hf_r3_declinedlog_cred2type
,
7466 { "Credential 2 Type", "r3.declinedlog.cred2type",
7467 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_fieldtypenames_ext
, 0x0,
7470 { &hf_r3_declinedlog_cred1
,
7471 { "Credential 1", "r3.declinedlog.cred1",
7472 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7475 { &hf_r3_declinedlog_cred2
,
7476 { "Credential 2", "r3.declinedlog.cred2",
7477 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7481 { &hf_r3_alarmlog_recordnumber
,
7482 { "Record Number", "r3.alarmlog.recordnumber",
7483 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7486 { &hf_r3_alarmlog_year
,
7487 { "Year", "r3.alarmlog.year",
7488 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7491 { &hf_r3_alarmlog_month
,
7492 { "Month", "r3.alarmlog.month",
7493 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7496 { &hf_r3_alarmlog_day
,
7497 { "Day", "r3.alarmlog.day",
7498 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7501 { &hf_r3_alarmlog_hour
,
7502 { "Hours", "r3.alarmlog.hours",
7503 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7506 { &hf_r3_alarmlog_minute
,
7507 { "Minutes", "r3.alarmlog.minutes",
7508 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7511 { &hf_r3_alarmlog_second
,
7512 { "Seconds", "r3.alarmlog.seconds",
7513 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7516 { &hf_r3_alarmlog_id
,
7517 { "ID", "r3.alarmlog.id",
7518 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_alarmidnames_ext
, 0x0,
7521 { &hf_r3_alarmlog_usernumber
,
7522 { "User Number", "r3.alarmlog.usernumber",
7523 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7528 { "Debug Message", "r3.debug",
7529 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7533 { &hf_r3_setdate_year
,
7534 { "Year", "r3.setdate.year",
7535 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7538 { &hf_r3_setdate_month
,
7539 { "Month", "r3.setdate.month",
7540 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7543 { &hf_r3_setdate_day
,
7544 { "Day", "r3.setdate.day",
7545 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7548 { &hf_r3_setdate_dow
,
7549 { "Day-Of-Week", "r3.setdate.dow",
7550 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_daynames_ext
, 0x0,
7553 { &hf_r3_setdate_hours
,
7554 { "Hours", "r3.setdate.hours",
7555 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7558 { &hf_r3_setdate_minutes
,
7559 { "Minutes", "r3.setdate.minutes",
7560 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7563 { &hf_r3_setdate_seconds
,
7564 { "Seconds", "r3.setdate.seconds",
7565 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7569 { &hf_r3_deleteusers
,
7570 { "Delete Users", "r3.deleteusers",
7571 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_deleteusersnames_ext
, 0x0,
7575 { &hf_r3_defineexception_number
,
7576 { "Exception Number", "r3.defineexception.number",
7577 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7580 { &hf_r3_defineexception_startdate_month
,
7581 { "Start Month", "r3.defineexception.start.month",
7582 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7585 { &hf_r3_defineexception_startdate_day
,
7586 { "Start Day", "r3.defineexception.start.day",
7587 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7590 { &hf_r3_defineexception_startdate_hours
,
7591 { "Start Hours", "r3.defineexception.start.hours",
7592 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7595 { &hf_r3_defineexception_startdate_minutes
,
7596 { "Start Minutes", "r3.defineexception.start.minutes",
7597 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7600 { &hf_r3_defineexception_enddate_month
,
7601 { "End Month", "r3.defineexception.end.month",
7602 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7605 { &hf_r3_defineexception_enddate_day
,
7606 { "End Day", "r3.defineexception.end.day",
7607 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7610 { &hf_r3_defineexception_enddate_hours
,
7611 { "End Hours", "r3.defineexception.end.hours",
7612 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7615 { &hf_r3_defineexception_enddate_minutes
,
7616 { "End Minutes", "r3.defineexception.end.minutes",
7617 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7621 { &hf_r3_defineexceptiongroup_number
,
7622 { "Define Exception Group Number", "r3.defineexceptiongroup.number",
7623 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7626 { &hf_r3_defineexceptiongroup_bits
,
7627 { "Define Exception Group Bit Field", "r3.defineexceptiongroup.field",
7628 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7632 { &hf_r3_definecalendar_number
,
7633 { "Define Calendar Number", "r3.definecalendar.number",
7634 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7637 { &hf_r3_definecalendar_bits
,
7638 { "Define Calendar Bit Field", "r3.definecalendar.field",
7639 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7643 { &hf_r3_definetimezone_number
,
7644 { "Timezone Number", "r3.definetimezone.number",
7645 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7648 { &hf_r3_definetimezone_starttime_hours
,
7649 { "Start Hours", "r3.definetimezone.start.hours",
7650 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7653 { &hf_r3_definetimezone_starttime_minutes
,
7654 { "Start Minutes", "r3.definetimezone.start.minutes",
7655 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7658 { &hf_r3_definetimezone_endtime_hours
,
7659 { "End Hours", "r3.definetimezone.end.hours",
7660 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7663 { &hf_r3_definetimezone_endtime_minutes
,
7664 { "End Minutes", "r3.definetimezone.end.minutes",
7665 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7668 { &hf_r3_definetimezone_daymap
[0],
7669 { "Sunday", "r3.definetimezone.daymap.sunday",
7670 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000001,
7673 { &hf_r3_definetimezone_daymap
[1],
7674 { "Monday", "r3.definetimezone.daymap.monday",
7675 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000002,
7678 { &hf_r3_definetimezone_daymap
[2],
7679 { "Tuesday", "r3.definetimezone.daymap.tuesday",
7680 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000004,
7683 { &hf_r3_definetimezone_daymap
[3],
7684 { "Wednesday", "r3.definetimezone.daymap.wednesday",
7685 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000008,
7688 { &hf_r3_definetimezone_daymap
[4],
7689 { "Thursday", "r3.definetimezone.daymap.thursday",
7690 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000010,
7693 { &hf_r3_definetimezone_daymap
[5],
7694 { "Friday", "r3.definetimezone.daymap.friday",
7695 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000020,
7698 { &hf_r3_definetimezone_daymap
[6],
7699 { "Saturday", "r3.definetimezone.daymap.saturday",
7700 FT_BOOLEAN
, 8, TFS (&tfs_enabled_disabled
), 0x00000040,
7703 { &hf_r3_definetimezone_exceptiongroup
,
7704 { "Exception Group", "r3.definetimezone.exceptiongroup",
7705 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7708 { &hf_r3_definetimezone_mode
,
7709 { "Mode", "r3.definetimezone.mode",
7710 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_timezonemodenames_ext
, 0x0,
7713 { &hf_r3_definetimezone_calendar
,
7714 { "Calendar", "r3.definetimezone.calendar",
7715 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7719 { &hf_r3_rmtauthretry_sequence
,
7720 { "Remote Auth Retry Sequence", "r3.rmtauthretry.sequence",
7721 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7724 { &hf_r3_rmtauthretry_retry
,
7725 { "Remote Auth Retry Mode", "r3.rmtauthretry.mode",
7726 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_rmtauthretry_flags
), 0x0,
7730 { &hf_r3_eventlogdump_starttime_year
,
7731 { "Start Year", "r3.eventlogdump.start.year",
7732 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7735 { &hf_r3_eventlogdump_starttime_month
,
7736 { "Start Month", "r3.eventlogdump.start.month",
7737 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7740 { &hf_r3_eventlogdump_starttime_day
,
7741 { "Start Day", "r3.eventlogdump.start.day",
7742 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7745 { &hf_r3_eventlogdump_starttime_hours
,
7746 { "Start Hours", "r3.eventlogdump.start.hours",
7747 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7750 { &hf_r3_eventlogdump_starttime_minutes
,
7751 { "Start Minutes", "r3.eventlogdump.start.minutes",
7752 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7755 { &hf_r3_eventlogdump_endtime_year
,
7756 { "End Year", "r3.eventlogdump.end.year",
7757 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7760 { &hf_r3_eventlogdump_endtime_month
,
7761 { "End Month", "r3.eventlogdump.end.month",
7762 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7765 { &hf_r3_eventlogdump_endtime_day
,
7766 { "End Day", "r3.eventlogdump.end.day",
7767 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7770 { &hf_r3_eventlogdump_endtime_hours
,
7771 { "End Hours", "r3.eventlogdump.end.hours",
7772 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7775 { &hf_r3_eventlogdump_endtime_minutes
,
7776 { "End Minutes", "r3.eventlogdump.end.minutes",
7777 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7780 { &hf_r3_eventlogdump_user
,
7781 { "Filter User", "r3.eventlogdump.user",
7782 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7786 { &hf_r3_declinedlogdump_starttime_year
,
7787 { "Start Year", "r3.declinedlogdump.start.year",
7788 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7791 { &hf_r3_declinedlogdump_starttime_month
,
7792 { "Start Month", "r3.declinedlogdump.start.month",
7793 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7796 { &hf_r3_declinedlogdump_starttime_day
,
7797 { "Start Day", "r3.declinedlogdump.start.day",
7798 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7801 { &hf_r3_declinedlogdump_starttime_hours
,
7802 { "Start Hours", "r3.declinedlogdump.start.hours",
7803 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7806 { &hf_r3_declinedlogdump_starttime_minutes
,
7807 { "Start Minutes", "r3.declinedlogdump.start.minutes",
7808 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7811 { &hf_r3_declinedlogdump_endtime_year
,
7812 { "End Year", "r3.declinedlogdump.end.year",
7813 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7816 { &hf_r3_declinedlogdump_endtime_month
,
7817 { "End Month", "r3.declinedlogdump.end.month",
7818 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7821 { &hf_r3_declinedlogdump_endtime_day
,
7822 { "End Day", "r3.declinedlogdump.end.day",
7823 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7826 { &hf_r3_declinedlogdump_endtime_hours
,
7827 { "End Hours", "r3.declinedlogdump.end.hours",
7828 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7831 { &hf_r3_declinedlogdump_endtime_minutes
,
7832 { "End Minutes", "r3.declinedlogdump.end.minutes",
7833 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7837 { &hf_r3_alarmlogdump_starttime_year
,
7838 { "Start Year", "r3.alarmlogdump.start.year",
7839 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7842 { &hf_r3_alarmlogdump_starttime_month
,
7843 { "Start Month", "r3.alarmlogdump.start.month",
7844 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7847 { &hf_r3_alarmlogdump_starttime_day
,
7848 { "Start Day", "r3.alarmlogdump.start.day",
7849 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7852 { &hf_r3_alarmlogdump_starttime_hours
,
7853 { "Start Hours", "r3.alarmlogdump.start.hours",
7854 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7857 { &hf_r3_alarmlogdump_starttime_minutes
,
7858 { "Start Minutes", "r3.alarmlogdump.start.minutes",
7859 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7862 { &hf_r3_alarmlogdump_endtime_year
,
7863 { "End Year", "r3.alarmlogdump.end.year",
7864 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7867 { &hf_r3_alarmlogdump_endtime_month
,
7868 { "End Month", "r3.alarmlogdump.end.month",
7869 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_monthnames_ext
, 0x0,
7872 { &hf_r3_alarmlogdump_endtime_day
,
7873 { "End Day", "r3.alarmlogdump.end.day",
7874 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7877 { &hf_r3_alarmlogdump_endtime_hours
,
7878 { "End Hours", "r3.alarmlogdump.end.hours",
7879 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7882 { &hf_r3_alarmlogdump_endtime_minutes
,
7883 { "End Minutes", "r3.alarmlogdump.end.minutes",
7884 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
7888 { &hf_r3_nvramclearoptions
[ 0],
7889 { "NVRAMCLEAROPTIONS_CFGINSTALLER", "r3.nvramclear.cfginstaller",
7890 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000001,
7893 { &hf_r3_nvramclearoptions
[ 1],
7894 { "NVRAMCLEAROPTIONS_CFGADMIN", "r3.nvramclear.cfgadmin",
7895 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000002,
7898 { &hf_r3_nvramclearoptions
[ 2],
7899 { "NVRAMCLEAROPTIONS_EXCEPTIONS", "r3.nvramclear.exceptions",
7900 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000004,
7903 { &hf_r3_nvramclearoptions
[ 3],
7904 { "NVRAMCLEAROPTIONS_EXCEPTIONGROUPS", "r3.nvramclear.exceptiongroups",
7905 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000008,
7908 { &hf_r3_nvramclearoptions
[ 4],
7909 { "NVRAMCLEAROPTIONS_CALENDARS", "r3.nvramclear.calendars",
7910 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000010,
7913 { &hf_r3_nvramclearoptions
[ 5],
7914 { "NVRAMCLEAROPTIONS_TIMEZONES", "r3.nvramclear.timezones",
7915 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000020,
7918 { &hf_r3_nvramclearoptions
[ 6],
7919 { "NVRAMCLEAROPTIONS_FILTERS", "r3.nvramclear.filters",
7920 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000040,
7923 { &hf_r3_nvramclearoptions
[ 7],
7924 { "NVRAMCLEAROPTIONS_EVENTLOG", "r3.nvramclear.eventlog",
7925 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000080,
7928 { &hf_r3_nvramclearoptions
[ 8],
7929 { "NVRAMCLEAROPTIONS_USERDATA", "r3.nvramclear.userdata",
7930 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000100,
7933 { &hf_r3_nvramclearoptions
[ 9],
7934 { "NVRAMCLEAROPTIONS_DECLINEDLOG", "r3.nvramclear.declinedlog",
7935 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000200,
7938 { &hf_r3_nvramclearoptions
[10],
7939 { "NVRAMCLEAROPTIONS_ALARMLOG", "r3.nvramclear.alarmlog",
7940 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000400,
7943 { &hf_r3_nvramclearoptions
[11],
7944 { "NVRAMCLEAROPTIONS_LRUCACHE", "r3.nvramclear.lrucache",
7945 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00000800,
7948 { &hf_r3_nvramclearoptions
[12],
7949 { "NVRAMCLEAROPTIONS_DBHASH", "r3.nvramclear.dbhash",
7950 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00001000,
7953 { &hf_r3_nvramclearoptions
[13],
7954 { "NVRAMCLEAROPTIONS_CFGSYSTEM", "r3.nvramclear.cfgsystem",
7955 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00002000,
7958 { &hf_r3_nvramclearoptions
[14],
7959 { "NVRAMCLEAROPTIONS_UNUSED", "r3.nvramclear.unused",
7960 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00004000,
7963 { &hf_r3_nvramclearoptions
[15],
7964 { "NVRAMCLEAROPTIONS_USEBACKUP", "r3.nvramclear.usebackup",
7965 FT_BOOLEAN
, 16, TFS (&tfs_enabled_disabled
), 0x00008000,
7969 { &hf_r3_writeeventlog_user
,
7970 { "User", "r3.writeeventlog.user",
7971 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
7974 { &hf_r3_writeeventlog_event
,
7975 { "Event", "r3.writeeventlog.event",
7976 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_eventnames_ext
, 0x0,
7980 { &hf_r3_powertableselection
,
7981 { "Table", "r3.powertableselection",
7982 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_powertablenames_ext
, 0x0,
7986 { &hf_r3_filter_type
,
7987 { "Type", "r3.filter.type",
7988 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_filtertypenames_ext
, 0x0,
7991 { &hf_r3_filter_list
,
7992 { "Event", "r3.filter.event",
7993 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_filtereventnames_ext
, 0x0,
7997 { &hf_r3_alarm_length
,
7998 { "Length", "r3.alarm.length",
7999 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8003 { "ID", "r3.alarm.id",
8004 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_alarmidnames_ext
, 0x0,
8007 { &hf_r3_alarm_state
,
8008 { "State", "r3.alarm.state",
8009 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_enabled_disabled
), 0x0,
8013 /* XXX: start: Originally missing: Best guess */
8014 { &hf_r3_dpac_action
,
8015 { "Dpac Action", "r3.dpac.action",
8016 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8020 { &hf_r3_dpac_waittime
,
8021 { "Dpac Waittime", "r3.dpac.waittime",
8022 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8026 { &hf_r3_dpac_command
,
8027 { "Dpac Command", "r3.dpac.command",
8028 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8032 { &hf_r3_dpacreply_stuff
,
8033 { "Dpac Reply Stuff", "r3.dpacreply.stuff",
8034 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8038 { &hf_r3_dpacreply_length
,
8039 { "Dpac Reply Length", "r3.dpacreply.length",
8040 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8044 { &hf_r3_dpacreply_reply
,
8045 { "Dpac Reply", "r3.dpacreply.reply",
8046 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8049 /* XXX: end: Originally missing --- */
8051 { &hf_r3_mfgfield_length
,
8052 { "Field Length", "r3.mfgfield.length",
8053 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8057 { "Field", "r3.mfgfield.field",
8058 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgfieldnames_ext
, 0x0,
8062 { &hf_r3_mfgfield_data
,
8063 { "Field Data", "r3.mfgfield.data",
8064 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8069 { &hf_r3_mfgsetserialnumber
,
8070 { "Serial Number", "r3.mfgsetserialnumber",
8071 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8074 { &hf_r3_mfgsetcryptkey
,
8075 { "Crypt Key", "r3.mfgsetcryptkey",
8076 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8079 { &hf_r3_mfgdumpnvram
,
8080 { "NVRAM Section", "r3.mfgnvramdump",
8081 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgnvramdumpnames_ext
, 0x0,
8084 { &hf_r3_mfgremoteunlock
,
8085 { "Remote Unlock", "r3.mfgremoteunlock",
8086 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgremoteunlocknames_ext
, 0x0,
8089 { &hf_r3_mfgtestpreserve
,
8090 { "Preserve Mode", "r3.mfgtestpreserve",
8091 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_mfgtestpreservenames_ext
, 0x0,
8096 { "ADC 0", "r3.adc.0",
8097 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8101 { "ADC 1", "r3.adc.1",
8102 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8106 { "ADC 2", "r3.adc.2",
8107 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8111 { "ADC 3", "r3.adc.3",
8112 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8116 { "ADC 4", "r3.adc.4",
8117 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8121 { "ADC 5", "r3.adc.5",
8122 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8126 { "ADC 6", "r3.adc.6",
8127 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8131 { "ADC 7", "r3.adc.7",
8132 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8136 { &hf_r3_hardwareid_board
,
8137 { "Board ID", "r3.hardwareid.board",
8138 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8141 { &hf_r3_hardwareid_cpuid
,
8142 { "CPU ID", "r3.hardwareid.cpuid",
8143 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8146 { &hf_r3_hardwareid_cpurev
,
8147 { "CPU Rev", "r3.hardwareid.cpurev",
8148 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8152 { &hf_r3_testkeypad
,
8153 { "Keypad Char", "r3.test.keypad",
8154 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8157 { &hf_r3_testmagcard
,
8158 { "Mag Card", "r3.test.magcard",
8159 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8162 { &hf_r3_testproxcard
,
8163 { "Prox Card", "r3.test.proxcard",
8164 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8168 { &hf_r3_nvramdump_record
,
8169 { "Record Number", "r3.nvramdump.record",
8170 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
8173 { &hf_r3_nvramdump_length
,
8174 { "Record Length", "r3.nvramdump.length",
8175 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8178 { &hf_r3_nvramdump_data
,
8179 { "Record Data", "r3.nvramdump.data",
8180 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8184 { &hf_r3_nvramdumprle_record
,
8185 { "Record Number", "r3.nvramdumprle.record",
8186 FT_UINT24
, BASE_DEC_HEX
, NULL
, 0x0,
8189 { &hf_r3_nvramdumprle_length
,
8190 { "Record Length", "r3.nvramdumprle.length",
8191 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
8194 { &hf_r3_nvramdumprle_data
,
8195 { "Record Data", "r3.nvramdumprle.data",
8196 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8200 { &hf_r3_iopins_lat
,
8201 { "LAT", "r3.iopins.lat",
8202 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8205 { &hf_r3_iopins_port
,
8206 { "PORT", "r3.iopins.port",
8207 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8210 { &hf_r3_iopins_tris
,
8211 { "TRIS", "r3.iopins.tris",
8212 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8216 { &hf_r3_mortisepins_s1
,
8217 { "Mortise Pin S1", "r3.mortisepins.s1",
8218 FT_BOOLEAN
, 8, TFS (&tfs_mortisepins_flags
), 0x00000001,
8221 { &hf_r3_mortisepins_s2
,
8222 { "Mortise Pin S2", "r3.mortisepins.s2",
8223 FT_BOOLEAN
, 8, TFS (&tfs_mortisepins_flags
), 0x00000002,
8226 { &hf_r3_mortisepins_s3
,
8227 { "Mortise Pin S3", "r3.mortisepins.s3",
8228 FT_BOOLEAN
, 8, TFS (&tfs_mortisepins_flags
), 0x00000004,
8231 { &hf_r3_mortisepins_s4
,
8232 { "Mortise Pin S4", "r3.mortisepins.s4",
8233 FT_BOOLEAN
, 8, TFS (&tfs_mortisepins_flags
), 0x00000008,
8237 { &hf_r3_checksumresults
,
8238 { "Checksum Results", "r3.checksumresults",
8239 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8242 { &hf_r3_checksumresults_field
,
8243 { "Field", "r3.checksumresults.field",
8244 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, & r3_checksumresultnames_ext
, 0x0,
8247 { &hf_r3_checksumresults_length
,
8248 { "Length", "r3.checksumresults.length",
8249 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8252 { &hf_r3_checksumresults_state
,
8253 { "State", "r3.checksumresults.state",
8254 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_errornoerror_flags
), 0x0,
8258 { &hf_r3_forceoptions_item
,
8259 { "Item", "r3.forceoptions.item",
8260 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_forceitemnames_ext
, 0x0,
8263 { &hf_r3_forceoptions_length
,
8264 { "Length", "r3.forceoptions.length",
8265 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8268 { &hf_r3_forceoptions_state_8
,
8269 { "State", "r3.forceoptions.state",
8270 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_enabled_disabled
), 0x0,
8273 { &hf_r3_forceoptions_state_16
,
8274 { "State", "r3.forceoptions.state",
8275 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8278 { &hf_r3_forceoptions_state_24
,
8279 { "State", "r3.forceoptions.state",
8280 FT_UINT24
, BASE_HEX_DEC
, NULL
, 0x0,
8283 { &hf_r3_forceoptions_state_32
,
8284 { "State", "r3.forceoptions.state",
8285 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8289 { &hf_r3_peekpoke_operation
,
8290 { "Operation", "r3.peekpoke.operation",
8291 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_peekpokenames_ext
, 0x0,
8294 { &hf_r3_peekpoke_address
,
8295 { "Address", "r3.peekpoke.address",
8296 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8299 { &hf_r3_peekpoke_length
,
8300 { "Length", "r3.peekpoke.length",
8301 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8304 { &hf_r3_peekpoke_poke8
,
8305 { "8 Bit Value", "r3.peekpoke.poke8",
8306 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8309 { &hf_r3_peekpoke_poke16
,
8310 { "16 Bit Value", "r3.peekpoke.poke16",
8311 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8314 { &hf_r3_peekpoke_poke24
,
8315 { "24 Bit Value", "r3.peekpoke.poke24",
8316 FT_UINT24
, BASE_HEX_DEC
, NULL
, 0x0,
8319 { &hf_r3_peekpoke_poke32
,
8320 { "32 Bit Value", "r3.peekpoke.poke32",
8321 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8324 { &hf_r3_peekpoke_pokestring
,
8325 { "String Value", "r3.peekpoke.pokestring",
8326 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8330 { &hf_r3_firmwaredownload_length
,
8331 { "Length", "r3.firmwaredownload.length",
8332 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8335 { &hf_r3_firmwaredownload_record
,
8336 { "Record Number", "r3.firmwaredownload.record",
8337 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8340 { &hf_r3_firmwaredownload_action
,
8341 { "Action", "r3.firmwaredownload.action",
8342 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_downloadfirmwarenames_ext
, 0x0,
8345 { &hf_r3_firmwaredownload_timeout
,
8346 { "Timeout", "r3.firmwaredownload.timeout",
8347 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8350 { &hf_r3_firmwaredownload_nvram
,
8351 { "NVRAM", "r3.firmwaredownload.nvram",
8352 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8355 { &hf_r3_firmwaredownload_address
,
8356 { "Address", "r3.firmwaredownload.address",
8357 FT_UINT32
, BASE_HEX_DEC
, NULL
, 0x0,
8360 { &hf_r3_firmwaredownload_bytes
,
8361 { "Bytes", "r3.firmwaredownload.bytes",
8362 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8365 { &hf_r3_firmwaredownload_data
,
8366 { "Data", "r3.firmwaredownload.data",
8367 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8370 { &hf_r3_firmwaredownload_crc
,
8371 { "CRC", "r3.firmwaredownload.crc",
8372 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8375 { &hf_r3_firmwaredownload_crc_bad
,
8376 { "Bad CRC", "r3.firmwaredownload.crc_bad",
8377 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8381 { &hf_r3_nvramchecksumvalue
,
8382 { "Value", "r3.nvramchecksum.value",
8383 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8386 { &hf_r3_nvramchecksumvalue_fixup
,
8387 { "Fixup", "r3.nvramchecksum.fixup",
8388 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8392 { &hf_r3_capabilities
,
8393 { "Capability", "r3.capabilities",
8394 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8397 { &hf_r3_capabilities_length
,
8398 { "Length", "r3.capabilities.length",
8399 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8402 { &hf_r3_capabilities_type
,
8403 { "Type", "r3.capabilities.type",
8404 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_capabilitiesnames_ext
, 0x0,
8407 { &hf_r3_capabilities_value
,
8408 { "Value", "r3.capabilities.value",
8409 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8413 { &hf_r3_lockstate_passage
,
8414 { "Passage", "r3.lockstate.passage",
8415 FT_BOOLEAN
, 24, NULL
, 0x00000001,
8418 { &hf_r3_lockstate_panic
,
8419 { "Panic", "r3.lockstate.panic",
8420 FT_BOOLEAN
, 24, NULL
, 0x00000002,
8423 { &hf_r3_lockstate_lockout
,
8424 { "Lockout", "r3.lockstate.lockout",
8425 FT_BOOLEAN
, 24, NULL
, 0x00000004,
8428 { &hf_r3_lockstate_relock
,
8429 { "Relock", "r3.lockstate.relock",
8430 FT_BOOLEAN
, 24, NULL
, 0x00000008,
8433 { &hf_r3_lockstate_autoopen
,
8434 { "Auto Open", "r3.lockstate.autoopen",
8435 FT_BOOLEAN
, 24, NULL
, 0x00000010,
8438 { &hf_r3_lockstate_nextauto
,
8439 { "Next Auto", "r3.lockstate.nextauto",
8440 FT_BOOLEAN
, 24, NULL
, 0x00000020,
8443 { &hf_r3_lockstate_lockstate
,
8444 { "Lock State", "r3.lockstate.lockstate",
8445 FT_BOOLEAN
, 24, NULL
, 0x00000040,
8448 { &hf_r3_lockstate_wantstate
,
8449 { "Want State", "r3.lockstate.wantstate",
8450 FT_BOOLEAN
, 24, NULL
, 0x00000080,
8453 { &hf_r3_lockstate_remote
,
8454 { "Remote", "r3.lockstate.remote",
8455 FT_BOOLEAN
, 24, NULL
, 0x00000100,
8458 { &hf_r3_lockstate_update
,
8459 { "Update", "r3.lockstate.update",
8460 FT_BOOLEAN
, 24, NULL
, 0x00000200,
8463 { &hf_r3_lockstate_exceptionspresent
,
8464 { "Exceptions Present", "r3.lockstate.exceptionspresent",
8465 FT_BOOLEAN
, 24, NULL
, 0x00000400,
8468 { &hf_r3_lockstate_exceptionsactive
,
8469 { "Exceptions Active", "r3.lockstate.exceptionsactive",
8470 FT_BOOLEAN
, 24, NULL
, 0x00000800,
8473 { &hf_r3_lockstate_timezonespresent
,
8474 { "Timezones Presents", "r3.lockstate.timezonespresent",
8475 FT_BOOLEAN
, 24, NULL
, 0x00001000,
8478 { &hf_r3_lockstate_timezonesactive
,
8479 { "Timezones Active", "r3.lockstate.timezonesactive",
8480 FT_BOOLEAN
, 24, NULL
, 0x00002000,
8483 { &hf_r3_lockstate_autounlockspresent
,
8484 { "Auto Unlocks Present", "r3.lockstate.autounlockspresent",
8485 FT_BOOLEAN
, 24, NULL
, 0x00004000,
8488 { &hf_r3_lockstate_autounlocksactive
,
8489 { "Auto Unlocks Active", "r3.lockstate.autounlocksactive",
8490 FT_BOOLEAN
, 24, NULL
, 0x00008000,
8493 { &hf_r3_lockstate_uapmspresent
,
8494 { "UAPMs Present", "r3.lockstate.uapmspresent",
8495 FT_BOOLEAN
, 24, NULL
, 0x00010000,
8498 { &hf_r3_lockstate_uapmsactive
,
8499 { "UAPMs Active", "r3.lockstate.uapmsactive",
8500 FT_BOOLEAN
, 24, NULL
, 0x00020000,
8503 { &hf_r3_lockstate_uapmrelockspresent
,
8504 { "UAPM Relocks Present", "r3.lockstate.uapmrelockspresent",
8505 FT_BOOLEAN
, 24, NULL
, 0x00040000,
8508 { &hf_r3_lockstate_uapmreslocksactive
,
8509 { "UAPM Relocks Active", "r3.lockstate.uapmreslocksactive",
8510 FT_BOOLEAN
, 24, NULL
, 0x00080000,
8513 { &hf_r3_lockstate_nvramprotect
,
8514 { "NVRAM Protect", "r3.lockstate.nvramprotect",
8515 FT_BOOLEAN
, 24, NULL
, 0x00100000,
8518 { &hf_r3_lockstate_nvramchecksum
,
8519 { "MVRAM Checksum", "r3.lockstate.nvramchecksum",
8520 FT_BOOLEAN
, 24, NULL
, 0x00200000,
8525 { &hf_r3_mortisestatelog
,
8526 { "Mortise State Log", "r3.mortisestatelog",
8527 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8531 { &hf_r3_mortisestatelog_pointer
,
8532 { "Event Pointer", "r3.mortisestatelog.pointer",
8533 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8536 { &hf_r3_mortisestatelog_mortisetype
,
8537 { "Mortise Type", "r3.mortisestatelog.mortisetype",
8538 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_mortisetypenames_ext
, 0x0,
8541 { &hf_r3_mortisestatelog_waiting
,
8542 { "Waiting For Door Closed", "r3.mortisestatelog.waiting",
8543 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_true_false
), 0x00,
8546 { &hf_r3_mortisestatelog_state
,
8547 { "State", "r3.mortisestatelog.state",
8548 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8551 { &hf_r3_mortisestatelog_last
,
8552 { "Last State", "r3.mortisestatelog.laststate",
8553 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8556 { &hf_r3_mortisestatelog_event
,
8557 { "Event", "r3.mortisestatelog.event",
8558 FT_UINT8
, BASE_HEX_DEC
|BASE_EXT_STRING
, &r3_mortiseeventnames_ext
, 0x0,
8562 { &hf_r3_timerchain_newtick
,
8563 { "New Tick", "r3.timerchain.newtick",
8564 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8567 { &hf_r3_timerchain_currentboundary
,
8568 { "Current Boundary", "r3.timerchain.currentboundary",
8569 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8572 { &hf_r3_timerchain_tasktag
,
8573 { "Task Tag", "r3.timerchain.tasktag",
8574 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8577 { &hf_r3_timerchain_address
,
8578 { "Address", "r3.timerchain.address",
8579 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8582 { &hf_r3_timerchain_reload
,
8583 { "Reload", "r3.timerchain.reload",
8584 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8587 { &hf_r3_timerchain_boundary
,
8588 { "Boundary", "r3.timerchain.boundary",
8589 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8592 { &hf_r3_timerchain_count
,
8593 { "Count", "r3.timerchain.count",
8594 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
8597 { &hf_r3_timerchain_flags
,
8598 { "Flags", "r3.timerchain.flags",
8599 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8603 { &hf_r3_taskflags_taskid
,
8604 { "Task ID", "r3.taskflags.taskid",
8605 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8608 { &hf_r3_taskflags_flags
,
8609 { "Flags", "r3.taskflags.flags",
8610 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
8614 { &hf_r3_checkpointlog_entryptr
,
8615 { "Entry Pointer", "r3.checkpointlog.entrypointer",
8616 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8619 { &hf_r3_checkpointlog_rcon
,
8620 { "RCON", "r3.checkpointlog.rcon",
8621 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8624 { &hf_r3_checkpointlog_checkpoint
,
8625 { "Checkpoint", "r3.checkpointlog.checkpoint",
8626 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8630 { &hf_r3_cpuregisters_intcon
,
8631 { "INTCON", "r3.cpuregisters.intcon",
8632 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8635 { &hf_r3_cpuregisters_intcon2
,
8636 { "INTCON2", "r3.cpuregisters.intcon2",
8637 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8640 { &hf_r3_cpuregisters_intcon3
,
8641 { "INTCON3", "r3.cpuregisters.intcon3",
8642 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8645 { &hf_r3_cpuregisters_pir1
,
8646 { "PIR1", "r3.cpuregisters.pir1",
8647 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8650 { &hf_r3_cpuregisters_pir2
,
8651 { "PIR2", "r3.cpuregisters.pir2",
8652 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8655 { &hf_r3_cpuregisters_pir3
,
8656 { "PIR3", "r3.cpuregisters.pir3",
8657 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8660 { &hf_r3_cpuregisters_pie1
,
8661 { "PIE1", "r3.cpuregisters.pie1",
8662 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8665 { &hf_r3_cpuregisters_pie2
,
8666 { "PIE2", "r3.cpuregisters.pie2",
8667 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8670 { &hf_r3_cpuregisters_pie3
,
8671 { "PIE3", "r3.cpuregisters.pie3",
8672 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8675 { &hf_r3_cpuregisters_ipr1
,
8676 { "IPR1", "r3.cpuregisters.ipr1",
8677 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8680 { &hf_r3_cpuregisters_ipr2
,
8681 { "IPR2", "r3.cpuregisters.ipr2",
8682 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8685 { &hf_r3_cpuregisters_ipr3
,
8686 { "IPR3", "r3.cpuregisters.ipr3",
8687 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8690 { &hf_r3_cpuregisters_rcon
,
8691 { "RCON", "r3.cpuregisters.rcon",
8692 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8695 { &hf_r3_cpuregisters_osccon
,
8696 { "OSCCON", "r3.cpuregisters.osccon",
8697 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8700 { &hf_r3_cpuregisters_rcsta
,
8701 { "RCSTA", "r3.cpuregisters.rcsta",
8702 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8705 { &hf_r3_cpuregisters_txsta
,
8706 { "TXSTA", "r3.cpuregisters.txsta",
8707 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8710 { &hf_r3_cpuregisters_rcsta2
,
8711 { "RCSTA2", "r3.cpuregisters.rcsta2",
8712 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8715 { &hf_r3_cpuregisters_txsta2
,
8716 { "TXSTA2", "r3.cpuregisters.txsta2",
8717 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8720 { &hf_r3_cpuregisters_wdtcon
,
8721 { "WDTCON", "r3.cpuregisters.wdtcon",
8722 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
8726 { &hf_r3_cpuregisters_intcon_rbif
,
8727 { "INTCON.RBIF", "r3.cpuregisters.intcon.rbif",
8728 FT_BOOLEAN
, 8, NULL
, 0x01,
8731 { &hf_r3_cpuregisters_intcon_int0if
,
8732 { "INTCON.INT0IF", "r3.cpuregisters.intcon.int0if",
8733 FT_BOOLEAN
, 8, NULL
, 0x02,
8736 { &hf_r3_cpuregisters_intcon_tmr0if
,
8737 { "INTCON.TMR0IF", "r3.cpuregisters.intcon.tmr0if",
8738 FT_BOOLEAN
, 8, NULL
, 0x04,
8741 { &hf_r3_cpuregisters_intcon_rbie
,
8742 { "INTCON.RBIE", "r3.cpuregisters.intcon.rbie",
8743 FT_BOOLEAN
, 8, NULL
, 0x08,
8746 { &hf_r3_cpuregisters_intcon_int0ie
,
8747 { "INTCON.INT0IE", "r3.cpuregisters.intcon.int0ie",
8748 FT_BOOLEAN
, 8, NULL
, 0x10,
8751 { &hf_r3_cpuregisters_intcon_tmr0ie
,
8752 { "INTCON.TMR0IE", "r3.cpuregisters.intcon.tmr0ie",
8753 FT_BOOLEAN
, 8, NULL
, 0x20,
8756 { &hf_r3_cpuregisters_intcon_giel
,
8757 { "INTCON.GIEL", "r3.cpuregisters.intcon.giel",
8758 FT_BOOLEAN
, 8, NULL
, 0x40,
8761 { &hf_r3_cpuregisters_intcon_gieh
,
8762 { "INTCON.GIEH", "r3.cpuregisters.intcon.gieh",
8763 FT_BOOLEAN
, 8, NULL
, 0x80,
8766 { &hf_r3_cpuregisters_intcon2_rbip
,
8767 { "INTCON2.RBIP", "r3_cpuregisters_intcon2_rbip",
8768 FT_BOOLEAN
, 8, NULL
, 0x01,
8771 { &hf_r3_cpuregisters_intcon2_int3ip
,
8772 { "INTCON2.INT3IP", "r3_cpuregisters_intcon2_int3ip",
8773 FT_BOOLEAN
, 8, NULL
, 0x02,
8776 { &hf_r3_cpuregisters_intcon2_tmr0ip
,
8777 { "INTCON2.TMR0IP", "r3_cpuregisters_intcon2_tmr0ip",
8778 FT_BOOLEAN
, 8, NULL
, 0x04,
8781 { &hf_r3_cpuregisters_intcon2_intedg3
,
8782 { "INTCON2.INTEDG3", "r3_cpuregisters_intcon2_intedg3",
8783 FT_BOOLEAN
, 8, NULL
, 0x08,
8786 { &hf_r3_cpuregisters_intcon2_intedg2
,
8787 { "INTCON2.INTEDG2", "r3_cpuregisters_intcon2_intedg2",
8788 FT_BOOLEAN
, 8, NULL
, 0x10,
8791 { &hf_r3_cpuregisters_intcon2_intedg1
,
8792 { "INTCON2.INTEDG1", "r3_cpuregisters_intcon2_intedg1",
8793 FT_BOOLEAN
, 8, NULL
, 0x20,
8796 { &hf_r3_cpuregisters_intcon2_intedg0
,
8797 { "INTCON2.INTEDG0", "r3_cpuregisters_intcon2_intedg0",
8798 FT_BOOLEAN
, 8, NULL
, 0x40,
8801 { &hf_r3_cpuregisters_intcon2_rbpu
,
8802 { "INTCON2.RBPU", "r3_cpuregisters_intcon2_rbpu",
8803 FT_BOOLEAN
, 8, NULL
, 0x80,
8806 { &hf_r3_cpuregisters_intcon3_int1if
,
8807 { "INTCON3.INT1IF", "r3.cpuregisters.intcon3.int1if",
8808 FT_BOOLEAN
, 8, NULL
, 0x01,
8811 { &hf_r3_cpuregisters_intcon3_int2if
,
8812 { "INTCON3.INT2IF", "r3.cpuregisters.intcon3.int2if",
8813 FT_BOOLEAN
, 8, NULL
, 0x02,
8816 { &hf_r3_cpuregisters_intcon3_int3if
,
8817 { "INTCON3.INT3IF", "r3.cpuregisters.intcon3.int3if",
8818 FT_BOOLEAN
, 8, NULL
, 0x04,
8821 { &hf_r3_cpuregisters_intcon3_int1ie
,
8822 { "INTCON3.INT1IE", "r3.cpuregisters.intcon3.int1ie",
8823 FT_BOOLEAN
, 8, NULL
, 0x08,
8826 { &hf_r3_cpuregisters_intcon3_int2ie
,
8827 { "INTCON3.INT2IE", "r3.cpuregisters.intcon3.int2ie",
8828 FT_BOOLEAN
, 8, NULL
, 0x10,
8831 { &hf_r3_cpuregisters_intcon3_int3ie
,
8832 { "INTCON3.INT3IE", "r3.cpuregisters.intcon3.int3ie",
8833 FT_BOOLEAN
, 8, NULL
, 0x20,
8836 { &hf_r3_cpuregisters_intcon3_int1ip
,
8837 { "INTCON3.INT1IP", "r3.cpuregisters.intcon3.int1ip",
8838 FT_BOOLEAN
, 8, NULL
, 0x40,
8841 { &hf_r3_cpuregisters_intcon3_int2ip
,
8842 { "INTCON3.INT2IP", "r3.cpuregisters.intcon3.int2ip",
8843 FT_BOOLEAN
, 8, NULL
, 0x80,
8846 { &hf_r3_cpuregisters_pir1_tmr1if
,
8847 { "PIR1.TMR1IF", "r3.cpuregisters.pir1.tmr1if",
8848 FT_BOOLEAN
, 8, NULL
, 0x01,
8851 { &hf_r3_cpuregisters_pir1_tmr2if
,
8852 { "PIR1.TMR2IF", "r3.cpuregisters.pir1.tmr2if",
8853 FT_BOOLEAN
, 8, NULL
, 0x02,
8856 { &hf_r3_cpuregisters_pir1_ccp1if
,
8857 { "PIR1.CCP1IF", "r3.cpuregisters.pir1.ccp1if",
8858 FT_BOOLEAN
, 8, NULL
, 0x04,
8861 { &hf_r3_cpuregisters_pir1_ssp1if
,
8862 { "PIR1.SSP1IF", "r3.cpuregisters.pir1.ssp1if",
8863 FT_BOOLEAN
, 8, NULL
, 0x08,
8866 { &hf_r3_cpuregisters_pir1_tx1if
,
8867 { "PIR1.TX1IF", "r3.cpuregisters.pir1.tx1if",
8868 FT_BOOLEAN
, 8, NULL
, 0x10,
8871 { &hf_r3_cpuregisters_pir1_rc1if
,
8872 { "PIR1.RC1IF", "r3.cpuregisters.pir1.rc1if",
8873 FT_BOOLEAN
, 8, NULL
, 0x20,
8876 { &hf_r3_cpuregisters_pir1_adif
,
8877 { "PIR1.ADIF", "r3.cpuregisters.pir1.adif",
8878 FT_BOOLEAN
, 8, NULL
, 0x40,
8881 { &hf_r3_cpuregisters_pir1_pspif
,
8882 { "PIR1.PSPIF", "r3.cpuregisters.pir1.pspif",
8883 FT_BOOLEAN
, 8, NULL
, 0x80,
8886 { &hf_r3_cpuregisters_pir2_ccp2if
,
8887 { "PIR2.CCP2IF", "r3.cpuregisters.pir2.ccp2if",
8888 FT_BOOLEAN
, 8, NULL
, 0x01,
8891 { &hf_r3_cpuregisters_pir2_tmr3if
,
8892 { "PIR2.TMR3IF", "r3.cpuregisters.pir2.tmr3if",
8893 FT_BOOLEAN
, 8, NULL
, 0x02,
8896 { &hf_r3_cpuregisters_pir2_hlvdif
,
8897 { "PIR2.HLVDIF", "r3.cpuregisters.pir2.hlvdif",
8898 FT_BOOLEAN
, 8, NULL
, 0x04,
8901 { &hf_r3_cpuregisters_pir2_bcl1if
,
8902 { "PIR2.BCL1IF", "r3.cpuregisters.pir2.bcl1if",
8903 FT_BOOLEAN
, 8, NULL
, 0x08,
8906 { &hf_r3_cpuregisters_pir2_eeif
,
8907 { "PIR2.EEIF", "r3.cpuregisters.pir2.eeif",
8908 FT_BOOLEAN
, 8, NULL
, 0x10,
8911 { &hf_r3_cpuregisters_pir2_unused5
,
8912 { "PIR2.UNUSED5", "r3.cpuregisters.pir2.unused5",
8913 FT_BOOLEAN
, 8, NULL
, 0x20,
8916 { &hf_r3_cpuregisters_pir2_cmif
,
8917 { "PIR2.CMIF", "r3.cpuregisters.pir2.cmif",
8918 FT_BOOLEAN
, 8, NULL
, 0x40,
8921 { &hf_r3_cpuregisters_pir2_oscfif
,
8922 { "PIR2.OSCFIF", "r3.cpuregisters.pir2.oscfif",
8923 FT_BOOLEAN
, 8, NULL
, 0x80,
8926 { &hf_r3_cpuregisters_pir3_ccp3if
,
8927 { "PIR3.CCP3IF", "r3.cpuregisters.pir3.ccp3if",
8928 FT_BOOLEAN
, 8, NULL
, 0x01,
8931 { &hf_r3_cpuregisters_pir3_ccp4if
,
8932 { "PIR3.CCP4IF", "r3.cpuregisters.pir3.ccp4if",
8933 FT_BOOLEAN
, 8, NULL
, 0x02,
8936 { &hf_r3_cpuregisters_pir3_ccp5if
,
8937 { "PIR3.CCP5IF", "r3.cpuregisters.pir3.ccp5if",
8938 FT_BOOLEAN
, 8, NULL
, 0x04,
8941 { &hf_r3_cpuregisters_pir3_tmr4if
,
8942 { "PIR3.TMR4IF", "r3.cpuregisters.pir3.tmr4if",
8943 FT_BOOLEAN
, 8, NULL
, 0x08,
8946 { &hf_r3_cpuregisters_pir3_tx2if
,
8947 { "PIR3.TX2IF", "r3.cpuregisters.pir3.tx2if",
8948 FT_BOOLEAN
, 8, NULL
, 0x10,
8951 { &hf_r3_cpuregisters_pir3_rc2if
,
8952 { "PIR3.RC2IF", "r3.cpuregisters.pir3.rc2if",
8953 FT_BOOLEAN
, 8, NULL
, 0x20,
8956 { &hf_r3_cpuregisters_pir3_bcl2if
,
8957 { "PIR3.BCL2IF", "r3.cpuregisters.pir3.bcl2if",
8958 FT_BOOLEAN
, 8, NULL
, 0x40,
8961 { &hf_r3_cpuregisters_pir3_ssp2if
,
8962 { "PIR3.SSP2IF", "r3.cpuregisters.pir3.ssp2if",
8963 FT_BOOLEAN
, 8, NULL
, 0x80,
8966 { &hf_r3_cpuregisters_pie1_tmr1ie
,
8967 { "PIE1.TMR1IE", "r3.cpuregisters.pie1.tmr1ie",
8968 FT_BOOLEAN
, 8, NULL
, 0x01,
8971 { &hf_r3_cpuregisters_pie1_tmr2ie
,
8972 { "PIE1.TMR2IE", "r3.cpuregisters.pie1.tmr2ie",
8973 FT_BOOLEAN
, 8, NULL
, 0x02,
8976 { &hf_r3_cpuregisters_pie1_ccp1ie
,
8977 { "PIE1.CCP1IE", "r3.cpuregisters.pie1.ccp1ie",
8978 FT_BOOLEAN
, 8, NULL
, 0x04,
8981 { &hf_r3_cpuregisters_pie1_ssp1ie
,
8982 { "PIE1.SSP1IE", "r3.cpuregisters.pie1.ssp1ie",
8983 FT_BOOLEAN
, 8, NULL
, 0x08,
8986 { &hf_r3_cpuregisters_pie1_tx1ie
,
8987 { "PIE1.TX1IE", "r3.cpuregisters.pie1.tx1ie",
8988 FT_BOOLEAN
, 8, NULL
, 0x10,
8991 { &hf_r3_cpuregisters_pie1_rc1ie
,
8992 { "PIE1.RC1IE", "r3.cpuregisters.pie1.rc1ie",
8993 FT_BOOLEAN
, 8, NULL
, 0x20,
8996 { &hf_r3_cpuregisters_pie1_adie
,
8997 { "PIE1.ADIE", "r3.cpuregisters.pie1.adie",
8998 FT_BOOLEAN
, 8, NULL
, 0x40,
9001 { &hf_r3_cpuregisters_pie1_pspie
,
9002 { "PIE1.PSPIE", "r3.cpuregisters.pie1.pspie",
9003 FT_BOOLEAN
, 8, NULL
, 0x80,
9006 { &hf_r3_cpuregisters_pie2_oscfie
,
9007 { "PIE2.OSCFIE", "r3.cpuregisters.pie2.oscfie",
9008 FT_BOOLEAN
, 8, NULL
, 0x01,
9011 { &hf_r3_cpuregisters_pie2_cmie
,
9012 { "PIE2.CMIE", "r3.cpuregisters.pie2.cmie",
9013 FT_BOOLEAN
, 8, NULL
, 0x02,
9016 { &hf_r3_cpuregisters_pie2_unused2
,
9017 { "PIE2.UNUSED2", "r3.cpuregisters.pie2.unused2",
9018 FT_BOOLEAN
, 8, NULL
, 0x04,
9021 { &hf_r3_cpuregisters_pie2_eeie
,
9022 { "PIE2.EEIE", "r3.cpuregisters.pie2.eeie",
9023 FT_BOOLEAN
, 8, NULL
, 0x08,
9026 { &hf_r3_cpuregisters_pie2_bcl1ie
,
9027 { "PIE2.BCL1IE", "r3.cpuregisters.pie2.bcl1ie",
9028 FT_BOOLEAN
, 8, NULL
, 0x10,
9031 { &hf_r3_cpuregisters_pie2_hlvdie
,
9032 { "PIE2.HLVDIE", "r3.cpuregisters.pie2.hlvdie",
9033 FT_BOOLEAN
, 8, NULL
, 0x20,
9036 { &hf_r3_cpuregisters_pie2_tmr3ie
,
9037 { "PIE2.TMR3IE", "r3.cpuregisters.pie2.tmr3ie",
9038 FT_BOOLEAN
, 8, NULL
, 0x40,
9041 { &hf_r3_cpuregisters_pie2_ccp2ie
,
9042 { "PIE2.CCP2IE", "r3.cpuregisters.pie2.ccp2ie",
9043 FT_BOOLEAN
, 8, NULL
, 0x80,
9046 { &hf_r3_cpuregisters_pie3_ccp3ie
,
9047 { "PIE3.CCP3IE", "r3.cpuregisters.pie3.ccp3ie",
9048 FT_BOOLEAN
, 8, NULL
, 0x01,
9051 { &hf_r3_cpuregisters_pie3_ccp4ie
,
9052 { "PIE3.CCP4IE", "r3.cpuregisters.pie3.ccp4ie",
9053 FT_BOOLEAN
, 8, NULL
, 0x02,
9056 { &hf_r3_cpuregisters_pie3_ccp5ie
,
9057 { "PIE3.CCP5IE", "r3.cpuregisters.pie3.ccp5ie",
9058 FT_BOOLEAN
, 8, NULL
, 0x04,
9061 { &hf_r3_cpuregisters_pie3_tmr4ie
,
9062 { "PIE3.TMR4IE", "r3.cpuregisters.pie3.tmr4ie",
9063 FT_BOOLEAN
, 8, NULL
, 0x08,
9066 { &hf_r3_cpuregisters_pie3_tx2ie
,
9067 { "PIE3.TX2IE", "r3.cpuregisters.pie3.tx2ie",
9068 FT_BOOLEAN
, 8, NULL
, 0x10,
9071 { &hf_r3_cpuregisters_pie3_rc2ie
,
9072 { "PIE3.RC2IE", "r3.cpuregisters.pie3.rc2ie",
9073 FT_BOOLEAN
, 8, NULL
, 0x20,
9076 { &hf_r3_cpuregisters_pie3_bcl2ie
,
9077 { "PIE3.BCL2IE", "r3.cpuregisters.pie3.bcl2ie",
9078 FT_BOOLEAN
, 8, NULL
, 0x40,
9081 { &hf_r3_cpuregisters_pie3_ssp2ie
,
9082 { "PIE3.SSP2IE", "r3.cpuregisters.pie3.ssp2ie",
9083 FT_BOOLEAN
, 8, NULL
, 0x80,
9086 { &hf_r3_cpuregisters_ipr1_tmr1ip
,
9087 { "IPR1.TMR1IP", "r3.cpuregisters.ipr1.tmr1ip",
9088 FT_BOOLEAN
, 8, NULL
, 0x01,
9091 { &hf_r3_cpuregisters_ipr1_tmr2ip
,
9092 { "IPR1.TMR2IP", "r3.cpuregisters.ipr1.tmr2ip",
9093 FT_BOOLEAN
, 8, NULL
, 0x02,
9096 { &hf_r3_cpuregisters_ipr1_ccp1ip
,
9097 { "IPR1.CCP1IP", "r3.cpuregisters.ipr1.ccp1ip",
9098 FT_BOOLEAN
, 8, NULL
, 0x04,
9101 { &hf_r3_cpuregisters_ipr1_ssp1ip
,
9102 { "IPR1.SSP1IP", "r3.cpuregisters.ipr1.ssp1ip",
9103 FT_BOOLEAN
, 8, NULL
, 0x08,
9106 { &hf_r3_cpuregisters_ipr1_tx1ip
,
9107 { "IPR1.TX1IP", "r3.cpuregisters.ipr1.tx1ip",
9108 FT_BOOLEAN
, 8, NULL
, 0x10,
9111 { &hf_r3_cpuregisters_ipr1_rc1ip
,
9112 { "IPR1.RC1IP", "r3.cpuregisters.ipr1.rc1ip",
9113 FT_BOOLEAN
, 8, NULL
, 0x20,
9116 { &hf_r3_cpuregisters_ipr1_adip
,
9117 { "IPR1.ADIP", "r3.cpuregisters.ipr1.adip",
9118 FT_BOOLEAN
, 8, NULL
, 0x40,
9121 { &hf_r3_cpuregisters_ipr1_pspip
,
9122 { "IPR1.PSPIP", "r3.cpuregisters.ipr1.pspip",
9123 FT_BOOLEAN
, 8, NULL
, 0x80,
9126 { &hf_r3_cpuregisters_ipr2_ccp2ip
,
9127 { "IPR2.CCP2IP", "r3.cpuregisters.ipr2.ccp2ip",
9128 FT_BOOLEAN
, 8, NULL
, 0x01,
9131 { &hf_r3_cpuregisters_ipr2_tmr3ip
,
9132 { "IPR2.TMR3IP", "r3.cpuregisters.ipr2.tmr3ip",
9133 FT_BOOLEAN
, 8, NULL
, 0x02,
9136 { &hf_r3_cpuregisters_ipr2_hlvdip
,
9137 { "IPR2.HLVDIP", "r3.cpuregisters.ipr2.hlvdip",
9138 FT_BOOLEAN
, 8, NULL
, 0x04,
9141 { &hf_r3_cpuregisters_ipr2_bcl1ip
,
9142 { "IPR2.BCL1IP", "r3.cpuregisters.ipr2.bcl1ip",
9143 FT_BOOLEAN
, 8, NULL
, 0x08,
9146 { &hf_r3_cpuregisters_ipr2_eeip
,
9147 { "IPR2.EEIP", "r3.cpuregisters.ipr2.eeip",
9148 FT_BOOLEAN
, 8, NULL
, 0x10,
9151 { &hf_r3_cpuregisters_ipr2_unused5
,
9152 { "IPR2.UNUSED5", "r3.cpuregisters.ipr2.unused5",
9153 FT_BOOLEAN
, 8, NULL
, 0x20,
9156 { &hf_r3_cpuregisters_ipr2_cmip
,
9157 { "IPR2.CMIP", "r3.cpuregisters.ipr2.cmip",
9158 FT_BOOLEAN
, 8, NULL
, 0x40,
9161 { &hf_r3_cpuregisters_ipr2_oscfip
,
9162 { "IPR2.OSCFIP", "r3.cpuregisters.ipr2.oscfip",
9163 FT_BOOLEAN
, 8, NULL
, 0x80,
9166 { &hf_r3_cpuregisters_ipr3_ccp2ip
,
9167 { "IPR3.CCP2IP", "r3.cpuregisters.ipr3.ccp2ip",
9168 FT_BOOLEAN
, 8, NULL
, 0x01,
9171 { &hf_r3_cpuregisters_ipr3_ccp4ip
,
9172 { "IPR3.CCP4IP", "r3.cpuregisters.ipr3.ccp4ip",
9173 FT_BOOLEAN
, 8, NULL
, 0x02,
9176 { &hf_r3_cpuregisters_ipr3_ccp5ip
,
9177 { "IPR3.CCP5IP", "r3.cpuregisters.ipr3.ccp5ip",
9178 FT_BOOLEAN
, 8, NULL
, 0x04,
9181 { &hf_r3_cpuregisters_ipr3_tmr4ip
,
9182 { "IPR3.TMR4IP", "r3.cpuregisters.ipr3.tmr4ip",
9183 FT_BOOLEAN
, 8, NULL
, 0x08,
9186 { &hf_r3_cpuregisters_ipr3_tx2ip
,
9187 { "IPR3.TX2IP", "r3.cpuregisters.ipr3.tx2ip",
9188 FT_BOOLEAN
, 8, NULL
, 0x10,
9191 { &hf_r3_cpuregisters_ipr3_rc2ip
,
9192 { "IPR3.RC2IP", "r3.cpuregisters.ipr3.rc2ip",
9193 FT_BOOLEAN
, 8, NULL
, 0x20,
9196 { &hf_r3_cpuregisters_ipr3_bcl2ip
,
9197 { "IPR3.BCL2IP", "r3.cpuregisters.ipr3.bcl2ip",
9198 FT_BOOLEAN
, 8, NULL
, 0x40,
9201 { &hf_r3_cpuregisters_ipr3_ssp2ip
,
9202 { "IPR3.SSP2IP", "r3.cpuregisters.ipr3.ssp2ip",
9203 FT_BOOLEAN
, 8, NULL
, 0x80,
9206 { &hf_r3_cpuregisters_rcon_bor
,
9207 { "RCON./BOR", "r3.cpuregisters.rcon.bor",
9208 FT_BOOLEAN
, 8, NULL
, 0x01,
9211 { &hf_r3_cpuregisters_rcon_por
,
9212 { "RCON./POR", "r3.cpuregisters.rcon.por",
9213 FT_BOOLEAN
, 8, NULL
, 0x02,
9216 { &hf_r3_cpuregisters_rcon_pd
,
9217 { "RCON./PD", "r3.cpuregisters.rcon.pd",
9218 FT_BOOLEAN
, 8, NULL
, 0x04,
9221 { &hf_r3_cpuregisters_rcon_to
,
9222 { "RCON./TO", "r3.cpuregisters.rcon.to",
9223 FT_BOOLEAN
, 8, NULL
, 0x08,
9226 { &hf_r3_cpuregisters_rcon_unused4
,
9227 { "RCON.UNUSED4", "r3.cpuregisters.rcon.unused4",
9228 FT_BOOLEAN
, 8, NULL
, 0x10,
9231 { &hf_r3_cpuregisters_rcon_ri
,
9232 { "RCON./RI", "r3.cpuregisters.rcon.ri",
9233 FT_BOOLEAN
, 8, NULL
, 0x20,
9236 { &hf_r3_cpuregisters_rcon_sboren
,
9237 { "RCON.SBOREN", "r3.cpuregisters.rcon.sboren",
9238 FT_BOOLEAN
, 8, NULL
, 0x40,
9241 { &hf_r3_cpuregisters_rcon_ipen
,
9242 { "RCON.IPEN", "r3.cpuregisters.rcon.ipen",
9243 FT_BOOLEAN
, 8, NULL
, 0x80,
9246 { &hf_r3_cpuregisters_osccon_scs0
,
9247 { "OSCCON.SCS0", "r3.cpuregisters.osccon.scs0",
9248 FT_BOOLEAN
, 8, NULL
, 0x01,
9251 { &hf_r3_cpuregisters_osccon_scs1
,
9252 { "OSCCON.SCS1", "r3.cpuregisters.osccon.scs1",
9253 FT_BOOLEAN
, 8, NULL
, 0x02,
9256 { &hf_r3_cpuregisters_osccon_iofs
,
9257 { "OSCCON.IOFS", "r3.cpuregisters.osccon.iofs",
9258 FT_BOOLEAN
, 8, NULL
, 0x04,
9261 { &hf_r3_cpuregisters_osccon_osts
,
9262 { "OSCCON.OSTS", "r3.cpuregisters.osccon.osts",
9263 FT_BOOLEAN
, 8, NULL
, 0x08,
9266 { &hf_r3_cpuregisters_osccon_ircf0
,
9267 { "OSCCON.IRCF0", "r3.cpuregisters.osccon.ircf0",
9268 FT_BOOLEAN
, 8, NULL
, 0x10,
9271 { &hf_r3_cpuregisters_osccon_ircf1
,
9272 { "OSCCON.IRCF1", "r3.cpuregisters.osccon.ircf1",
9273 FT_BOOLEAN
, 8, NULL
, 0x20,
9276 { &hf_r3_cpuregisters_osccon_ircf2
,
9277 { "OSCCON.IRCF2", "r3.cpuregisters.osccon.ircf2",
9278 FT_BOOLEAN
, 8, NULL
, 0x40,
9281 { &hf_r3_cpuregisters_osccon_idlen
,
9282 { "OSCCON.IDLEN", "r3.cpuregisters.osccon.idlen",
9283 FT_BOOLEAN
, 8, NULL
, 0x80,
9286 { &hf_r3_cpuregisters_rcsta_rx9d
,
9287 { "RCSTA.RX9D", "r3.cpuregisters.rcsta.rx9d",
9288 FT_BOOLEAN
, 8, NULL
, 0x01,
9291 { &hf_r3_cpuregisters_rcsta_oerr
,
9292 { "RCSTA.OERR", "r3.cpuregisters.rcsta.oerr",
9293 FT_BOOLEAN
, 8, NULL
, 0x02,
9296 { &hf_r3_cpuregisters_rcsta_ferr
,
9297 { "RCSTA.FERR", "r3.cpuregisters.rcsta.ferr",
9298 FT_BOOLEAN
, 8, NULL
, 0x04,
9301 { &hf_r3_cpuregisters_rcsta_adden
,
9302 { "RCSTA.ADDEN", "r3.cpuregisters.rcsta.adden",
9303 FT_BOOLEAN
, 8, NULL
, 0x08,
9306 { &hf_r3_cpuregisters_rcsta_cren
,
9307 { "RCSTA.CREN", "r3.cpuregisters.rcsta.cren",
9308 FT_BOOLEAN
, 8, NULL
, 0x10,
9311 { &hf_r3_cpuregisters_rcsta_sren
,
9312 { "RCSTA.SREN", "r3.cpuregisters.rcsta.sren",
9313 FT_BOOLEAN
, 8, NULL
, 0x20,
9316 { &hf_r3_cpuregisters_rcsta_rx9
,
9317 { "RCSTA.RX9", "r3.cpuregisters.rcsta.rx9",
9318 FT_BOOLEAN
, 8, NULL
, 0x40,
9321 { &hf_r3_cpuregisters_rcsta_spen
,
9322 { "RCSTA.SPEN", "r3.cpuregisters.rcsta.spen",
9323 FT_BOOLEAN
, 8, NULL
, 0x80,
9326 { &hf_r3_cpuregisters_txsta_tx9d
,
9327 { "TXSTA.TX9D", "r3.cpuregisters.txsta.tx9d",
9328 FT_BOOLEAN
, 8, NULL
, 0x01,
9331 { &hf_r3_cpuregisters_txsta_trmt
,
9332 { "TXSTA.TRMT", "r3.cpuregisters.txsta.trmt",
9333 FT_BOOLEAN
, 8, NULL
, 0x02,
9336 { &hf_r3_cpuregisters_txsta_brgh
,
9337 { "TXSTA.BRGH", "r3.cpuregisters.txsta.brgh",
9338 FT_BOOLEAN
, 8, NULL
, 0x04,
9341 { &hf_r3_cpuregisters_txsta_sendb
,
9342 { "TXSTA.SENDB", "r3.cpuregisters.txsta.sendb",
9343 FT_BOOLEAN
, 8, NULL
, 0x08,
9346 { &hf_r3_cpuregisters_txsta_sync
,
9347 { "TXSTA.SYNC", "r3.cpuregisters.txsta.sync",
9348 FT_BOOLEAN
, 8, NULL
, 0x10,
9351 { &hf_r3_cpuregisters_txsta_txen
,
9352 { "TXSTA.TXEN", "r3.cpuregisters.txsta.txen",
9353 FT_BOOLEAN
, 8, NULL
, 0x20,
9356 { &hf_r3_cpuregisters_txsta_tx9
,
9357 { "TXSTA.TX9", "r3.cpuregisters.txsta.tx9",
9358 FT_BOOLEAN
, 8, NULL
, 0x40,
9361 { &hf_r3_cpuregisters_txsta_csrc
,
9362 { "TXSTA.CSRC", "r3.cpuregisters.txsta.csrc",
9363 FT_BOOLEAN
, 8, NULL
, 0x80,
9366 { &hf_r3_cpuregisters_rcsta2_rx9d
,
9367 { "RCSTA2.RX9D", "r3.cpuregisters.rcsta2.rx9d",
9368 FT_BOOLEAN
, 8, NULL
, 0x01,
9371 { &hf_r3_cpuregisters_rcsta2_oerr
,
9372 { "RCSTA2.OERR", "r3.cpuregisters.rcsta2.oerr",
9373 FT_BOOLEAN
, 8, NULL
, 0x02,
9376 { &hf_r3_cpuregisters_rcsta2_ferr
,
9377 { "RCSTA2.FERR", "r3.cpuregisters.rcsta2.ferr",
9378 FT_BOOLEAN
, 8, NULL
, 0x04,
9381 { &hf_r3_cpuregisters_rcsta2_adden
,
9382 { "RCSTA2.ADDEN", "r3.cpuregisters.rcsta2.adden",
9383 FT_BOOLEAN
, 8, NULL
, 0x08,
9386 { &hf_r3_cpuregisters_rcsta2_cren
,
9387 { "RCSTA2.CREN", "r3.cpuregisters.rcsta2.cren",
9388 FT_BOOLEAN
, 8, NULL
, 0x10,
9391 { &hf_r3_cpuregisters_rcsta2_sren
,
9392 { "RCSTA2.SREN", "r3.cpuregisters.rcsta2.sren",
9393 FT_BOOLEAN
, 8, NULL
, 0x20,
9396 { &hf_r3_cpuregisters_rcsta2_rx9
,
9397 { "RCSTA2.RX9", "r3.cpuregisters.rcsta2.rx9",
9398 FT_BOOLEAN
, 8, NULL
, 0x40,
9401 { &hf_r3_cpuregisters_rcsta2_spen
,
9402 { "RCSTA2.SPEN", "r3.cpuregisters.rcsta2.spen",
9403 FT_BOOLEAN
, 8, NULL
, 0x80,
9406 { &hf_r3_cpuregisters_txsta2_tx9d
,
9407 { "TXSTA2.TX9D", "r3.cpuregisters.txsta2.tx9d",
9408 FT_BOOLEAN
, 8, NULL
, 0x01,
9411 { &hf_r3_cpuregisters_txsta2_trmt
,
9412 { "TXSTA2.TRMT", "r3.cpuregisters.txsta2.trmt",
9413 FT_BOOLEAN
, 8, NULL
, 0x02,
9416 { &hf_r3_cpuregisters_txsta2_brgh
,
9417 { "TXSTA2.BRGH", "r3.cpuregisters.txsta2.brgh",
9418 FT_BOOLEAN
, 8, NULL
, 0x04,
9421 { &hf_r3_cpuregisters_txsta2_sendb
,
9422 { "TXSTA2.SENDB", "r3.cpuregisters.txsta2.sendb",
9423 FT_BOOLEAN
, 8, NULL
, 0x08,
9426 { &hf_r3_cpuregisters_txsta2_sync
,
9427 { "TXSTA2.SYNC", "r3.cpuregisters.txsta2.sync",
9428 FT_BOOLEAN
, 8, NULL
, 0x10,
9431 { &hf_r3_cpuregisters_txsta2_txen
,
9432 { "TXSTA2.TXEN", "r3.cpuregisters.txsta2.txen",
9433 FT_BOOLEAN
, 8, NULL
, 0x20,
9436 { &hf_r3_cpuregisters_txsta2_tx9
,
9437 { "TXSTA2.TX9", "r3.cpuregisters.txsta2.tx9",
9438 FT_BOOLEAN
, 8, NULL
, 0x40,
9441 { &hf_r3_cpuregisters_txsta2_csrc
,
9442 { "TXSTA2.CSRC", "r3.cpuregisters.txsta2.csrc",
9443 FT_BOOLEAN
, 8, NULL
, 0x80,
9446 { &hf_r3_cpuregisters_wdtcon_swdten
,
9447 { "WDTCON.SWDTEN", "r3.cpuregisters.wdtcon.swdten",
9448 FT_BOOLEAN
, 8, NULL
, 0x01,
9451 { &hf_r3_cpuregisters_wdtcon_unused1
,
9452 { "WDTCON.UNUSED1", "r3.cpuregisters.wdtcon.unused1",
9453 FT_BOOLEAN
, 8, NULL
, 0x02,
9456 { &hf_r3_cpuregisters_wdtcon_unused2
,
9457 { "WDTCON.UNUSED2", "r3.cpuregisters.wdtcon.unused2",
9458 FT_BOOLEAN
, 8, NULL
, 0x04,
9461 { &hf_r3_cpuregisters_wdtcon_unused3
,
9462 { "WDTCON.UNUSED3", "r3.cpuregisters.wdtcon.unused3",
9463 FT_BOOLEAN
, 8, NULL
, 0x08,
9466 { &hf_r3_cpuregisters_wdtcon_unused4
,
9467 { "WDTCON.UNUSED4", "r3.cpuregisters.wdtcon.unused4",
9468 FT_BOOLEAN
, 8, NULL
, 0x10,
9471 { &hf_r3_cpuregisters_wdtcon_unused5
,
9472 { "WDTCON.UNUSED5", "r3.cpuregisters.wdtcon.unused5",
9473 FT_BOOLEAN
, 8, NULL
, 0x20,
9476 { &hf_r3_cpuregisters_wdtcon_unused6
,
9477 { "WDTCON.UNUSED6", "r3.cpuregisters.wdtcon.unused6",
9478 FT_BOOLEAN
, 8, NULL
, 0x40,
9481 { &hf_r3_cpuregisters_wdtcon_unused7
,
9482 { "WDTCON.UNUSED7", "r3.cpuregisters.wdtcon.unused7",
9483 FT_BOOLEAN
, 8, NULL
, 0x80,
9487 { &hf_r3_dumpm41t81_reg00
,
9488 { "REG 0x00", "r3.m41t81.reg00",
9489 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9492 { &hf_r3_dumpm41t81_reg01
,
9493 { "REG 0x01", "r3.m41t81.reg01",
9494 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9497 { &hf_r3_dumpm41t81_reg02
,
9498 { "REG 0x02", "r3.m41t81.reg02",
9499 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9502 { &hf_r3_dumpm41t81_reg03
,
9503 { "REG 0x03", "r3.m41t81.reg03",
9504 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9507 { &hf_r3_dumpm41t81_reg04
,
9508 { "REG 0x04", "r3.m41t81.reg04",
9509 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9512 { &hf_r3_dumpm41t81_reg05
,
9513 { "REG 0x05", "r3.m41t81.reg05",
9514 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9517 { &hf_r3_dumpm41t81_reg06
,
9518 { "REG 0x06", "r3.m41t81.reg06",
9519 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9522 { &hf_r3_dumpm41t81_reg07
,
9523 { "REG 0x07", "r3.m41t81.reg07",
9524 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9527 { &hf_r3_dumpm41t81_reg08
,
9528 { "REG 0x08", "r3.m41t81.reg08",
9529 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9532 { &hf_r3_dumpm41t81_reg09
,
9533 { "REG 0x09", "r3.m41t81.reg09",
9534 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9537 { &hf_r3_dumpm41t81_reg0a
,
9538 { "REG 0x0a", "r3.m41t81.reg0a",
9539 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9542 { &hf_r3_dumpm41t81_reg0b
,
9543 { "REG 0x0b", "r3.m41t81.reg0b",
9544 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9547 { &hf_r3_dumpm41t81_reg0c
,
9548 { "REG 0x0c", "r3.m41t81.reg0c",
9549 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9552 { &hf_r3_dumpm41t81_reg0d
,
9553 { "REG 0x0d", "r3.m41t81.reg0d",
9554 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9557 { &hf_r3_dumpm41t81_reg0e
,
9558 { "REG 0x0e", "r3.m41t81.reg0e",
9559 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9562 { &hf_r3_dumpm41t81_reg0f
,
9563 { "REG 0x0f", "r3.m41t81.reg0f",
9564 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9567 { &hf_r3_dumpm41t81_reg10
,
9568 { "REG 0x10", "r3.m41t81.reg10",
9569 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9572 { &hf_r3_dumpm41t81_reg11
,
9573 { "REG 0x11", "r3.m41t81.reg11",
9574 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9577 { &hf_r3_dumpm41t81_reg12
,
9578 { "REG 0x12", "r3.m41t81.reg12",
9579 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9582 { &hf_r3_dumpm41t81_reg13
,
9583 { "REG 0x13", "r3.m41t81.reg13",
9584 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
9588 { &hf_r3_dumpm41t81_reg00_sec1
,
9589 { ".1 Seconds", "r3.m41t81.reg00.sec1",
9590 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9593 { &hf_r3_dumpm41t81_reg00_sec01
,
9594 { ".01 Seconds", "r3.m41t81.reg00.sec01",
9595 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9598 { &hf_r3_dumpm41t81_reg01_st
,
9599 { "ST", "r3.m41t81.reg01.st",
9600 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9603 { &hf_r3_dumpm41t81_reg01_10sec
,
9604 { "10 Seconds", "r3.m41t81.reg01.10sec",
9605 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9608 { &hf_r3_dumpm41t81_reg01_1sec
,
9609 { "1 Seconds", "r3.m41t81.reg01.1sec",
9610 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9613 { &hf_r3_dumpm41t81_reg02_notused
,
9614 { "(not used)", "r3.m41t81.reg02.notused",
9615 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9618 { &hf_r3_dumpm41t81_reg02_10min
,
9619 { "10 Minutes", "r3.m41t81.reg02.10min",
9620 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9623 { &hf_r3_dumpm41t81_reg02_1min
,
9624 { "1 Minutes", "r3.m41t81.reg02.1min",
9625 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9628 { &hf_r3_dumpm41t81_reg03_cbe
,
9629 { "CBE", "r3.m41t81.reg03.cbe",
9630 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9633 { &hf_r3_dumpm41t81_reg03_cb
,
9634 { "CB", "r3.m41t81.reg03.cb",
9635 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9638 { &hf_r3_dumpm41t81_reg03_10hour
,
9639 { "10 Hours", "r3.m41t81.reg03.10hour",
9640 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9643 { &hf_r3_dumpm41t81_reg03_1hour
,
9644 { "1 Hours", "r3.m41t81.reg03.1hour",
9645 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9648 { &hf_r3_dumpm41t81_reg04_notused
,
9649 { "(not used)", "r3.m41t81.reg04.notused",
9650 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9653 { &hf_r3_dumpm41t81_reg04_dow
,
9654 { "DOW", "r3.m41t81.reg04.dow",
9655 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9658 { &hf_r3_dumpm41t81_reg05_notused
,
9659 { "(not used)", "r3.m41t81.reg05.notused",
9660 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9663 { &hf_r3_dumpm41t81_reg05_10day
,
9664 { "10 Day", "r3.m41t81.reg05.10day",
9665 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9668 { &hf_r3_dumpm41t81_reg05_1day
,
9669 { "1 Day", "r3.m41t81.reg05.1day",
9670 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9673 { &hf_r3_dumpm41t81_reg06_notused
,
9674 { "(not used)", "r3.m41t81.reg06.notused",
9675 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9678 { &hf_r3_dumpm41t81_reg06_10month
,
9679 { "10 Month", "r3.m41t81.reg06.10month",
9680 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9683 { &hf_r3_dumpm41t81_reg06_1month
,
9684 { "1 Month", "r3.m41t81.reg06.1month",
9685 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9688 { &hf_r3_dumpm41t81_reg07_10year
,
9689 { "10 Year", "r3.m41t81.reg07.10year",
9690 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9693 { &hf_r3_dumpm41t81_reg07_1year
,
9694 { "1 Year", "r3.m41t81.reg07.1year",
9695 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9698 { &hf_r3_dumpm41t81_reg08_out
,
9699 { "OUT", "r3.m41t81.reg08.out",
9700 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9703 { &hf_r3_dumpm41t81_reg08_ft
,
9704 { "FT", "r3.m41t81.reg08.ft",
9705 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9708 { &hf_r3_dumpm41t81_reg08_s
,
9709 { "S", "r3.m41t81.reg08.s",
9710 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9713 { &hf_r3_dumpm41t81_reg08_cal
,
9714 { "CAL", "r3.m41t81.reg08.cal",
9715 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9718 { &hf_r3_dumpm41t81_reg09_notused
,
9719 { "(not used)", "r3.m41t81.reg09.notused",
9720 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9723 { &hf_r3_dumpm41t81_reg09_bmb
,
9724 { "BMB", "r3.m41t81.reg09.bmb",
9725 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9728 { &hf_r3_dumpm41t81_reg09_rb
,
9729 { "RB", "r3.m41t81.reg09.rb",
9730 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9733 { &hf_r3_dumpm41t81_reg0a_afe
,
9734 { "AFE", "r3.m41t81.reg0a.afe",
9735 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9738 { &hf_r3_dumpm41t81_reg0a_sqwe
,
9739 { "SQWE", "r3.m41t81.reg0a.sqwe",
9740 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9743 { &hf_r3_dumpm41t81_reg0a_abe
,
9744 { "ABE", "r3.m41t81.reg0a.abe",
9745 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9748 { &hf_r3_dumpm41t81_reg0a_10monthalm
,
9749 { "10 Month Alarm", "r3.m41t81.reg0a.10monthalm",
9750 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9753 { &hf_r3_dumpm41t81_reg0a_1monthalm
,
9754 { "1 Month Alarm", "r3.m41t81.reg0a.1monthalm",
9755 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9758 { &hf_r3_dumpm41t81_reg0b_rpt5
,
9759 { "RPT5", "r3.m41t81.reg0b.rpt5",
9760 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9763 { &hf_r3_dumpm41t81_reg0b_rpt4
,
9764 { "RPT4", "r3.m41t81.reg0b.rpt4",
9765 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9768 { &hf_r3_dumpm41t81_reg0b_10dayalm
,
9769 { "10 Day Alarm", "r3.m41t81.reg0b.10dayalm",
9770 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9773 { &hf_r3_dumpm41t81_reg0b_1dayalm
,
9774 { "1 Day Alarm", "r3.m41t81.reg0b.1dayalm",
9775 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9778 { &hf_r3_dumpm41t81_reg0c_rpt3
,
9779 { "RPT3", "r3.m41t81.reg0c.rpt3",
9780 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9783 { &hf_r3_dumpm41t81_reg0c_ht
,
9784 { "HT", "r3.m41t81.reg0c.ht",
9785 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9788 { &hf_r3_dumpm41t81_reg0c_10houralm
,
9789 { "10 Hour Alarm", "r3.m41t81.reg0c.10houralm",
9790 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9793 { &hf_r3_dumpm41t81_reg0c_1houralm
,
9794 { "1 Hour Alarm", "r3.m41t81.reg0c.1houralm",
9795 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9798 { &hf_r3_dumpm41t81_reg0d_rpt2
,
9799 { "RPT2", "r3.m41t81.reg0d.rpt2",
9800 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9803 { &hf_r3_dumpm41t81_reg0d_10minalm
,
9804 { "10 Min Alarm", "r3.m41t81.reg0d.10minalm",
9805 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9808 { &hf_r3_dumpm41t81_reg0d_1minalm
,
9809 { "1 Min Alarm", "r3.m41t81.reg0d.1minalm",
9810 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9813 { &hf_r3_dumpm41t81_reg0e_rpt1
,
9814 { "RPT1", "r3.m41t81.reg0e.rpt1",
9815 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9818 { &hf_r3_dumpm41t81_reg0e_10secalm
,
9819 { "10 Sec Alarm", "r3.m41t81.reg0e.10secalm",
9820 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9823 { &hf_r3_dumpm41t81_reg0e_1secalm
,
9824 { "1 Sec Alarm", "r3.m41t81.reg0e.1secalm",
9825 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9828 { &hf_r3_dumpm41t81_reg0f_wdf
,
9829 { "WDF", "r3.m41t81.reg0f.wdf",
9830 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9833 { &hf_r3_dumpm41t81_reg0f_af
,
9834 { "AF", "r3.m41t81.reg0f.af",
9835 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9838 { &hf_r3_dumpm41t81_reg0f_notused
,
9839 { "(not used)", "r3.m41t81.reg0f.notused",
9840 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9843 { &hf_r3_dumpm41t81_reg10_notused
,
9844 { "(not used)", "r3.m41t81.reg10.notused",
9845 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9848 { &hf_r3_dumpm41t81_reg11_notused
,
9849 { "(not used)", "r3.m41t81.reg11.notused",
9850 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9853 { &hf_r3_dumpm41t81_reg12_notused
,
9854 { "(not used)", "r3.m41t81.reg12.notused",
9855 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9858 { &hf_r3_dumpm41t81_reg13_rs
,
9859 { "RS", "r3.m41t81.reg13.rs",
9860 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9863 { &hf_r3_dumpm41t81_reg13_notused
,
9864 { "(not used)", "r3.m41t81.reg13.notused",
9865 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9869 { &hf_r3_debuglog_recordnumber
,
9870 { "Record Number", "r3.debuglog.recordnumber",
9871 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
9874 { &hf_r3_debuglog_flags
,
9875 { "Flags", "r3.debuglog.flags",
9876 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9879 { &hf_r3_debuglog_tick
,
9880 { "Tick", "r3.debuglog.tick",
9881 FT_UINT16
, BASE_HEX_DEC
, NULL
, 0x0,
9885 { &hf_r3_adduserparamtype
,
9886 { "Upstream Field", "r3.manageuser",
9887 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9890 { &hf_r3_adduserparamtypelength
,
9891 { "Field Length", "r3.manageuser.length",
9892 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9895 { &hf_r3_adduserparamtypetype
,
9896 { "Field Type", "r3.manageuser.type",
9897 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_adduserparamtypenames_ext
, 0x0,
9901 { &hf_r3_adduserparamtypedatalen
,
9902 { "Data Length", "r3.manageuser.datalen",
9903 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9906 { &hf_r3_adduserparamtypeerror
,
9907 { "Error", "r3.manageuser.error",
9908 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9912 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_DISPOSITION
],
9913 { "Disposition", "r3.manageuser.disposition",
9914 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_dispositionnames_ext
, 0x0,
9917 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USERNO
],
9918 { "User Number", "r3.manageuser.usernumber",
9919 FT_UINT16
, BASE_DEC_HEX
, NULL
, 0x0,
9922 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_ACCESSALWAYS
],
9923 { "Access Always", "r3.manageuser.accessalways",
9924 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
9927 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_ACCESSMODE
],
9928 { "Access Mode", "r3.manageuser.accessmode",
9929 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_accessmodenames_ext
, 0x0,
9932 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_CACHED
],
9933 { "Cached", "r3.manageuser.cached",
9934 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
9937 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USERTYPE
],
9938 { "User Type", "r3.manageuser.usertype",
9939 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_usertypenames_ext
, 0x0,
9942 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_PRIMARYFIELD
],
9943 { "Primary Field", "r3.manageuser.primaryfield",
9944 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9947 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_PRIMARYFIELDTYPE
],
9948 { "Primary Field Type", "r3.manageuser.primaryfieldtype",
9949 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
9952 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_AUXFIELD
],
9953 { "Aux Field", "r3.manageuser.auxfield",
9954 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9957 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_AUXFIELDTYPE
],
9958 { "Aux Field Type", "r3.manageuser.auxfieldtype",
9959 FT_UINT8
, BASE_DEC_HEX
|BASE_EXT_STRING
, &r3_ppmisourcenames_ext
, 0x0,
9962 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_USECOUNT
],
9963 { "Use Count", "r3.manageuser.usecount",
9964 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9967 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_EXCEPTIONGROUP
],
9968 { "Exception Group", "r3.manageuser.exceptiongroup",
9969 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
9972 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_EXPIREON
],
9973 { "Expire On", "r3.manageuser.expireon",
9974 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
9977 { &hf_r3_adduserparamtypearray
[ADDUSERPARAMTYPE_TIMEZONE
],
9978 { "Timezone", "r3.manageuser.timezone",
9979 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9984 /* Setup protocol subtree array */
9985 static gint
*ett
[] =
9993 &ett_r3upstreamcommand
,
9994 &ett_r3upstreamfield
,
9998 &ett_r3eventlogrecord
,
9999 &ett_r3declinedlogrecord
,
10000 &ett_r3alarmlogrecord
,
10002 &ett_r3defineexceptionstartdate
,
10003 &ett_r3defineexceptionenddate
,
10004 &ett_r3defineexceptiongroupbits
,
10005 &ett_r3definecalendarmonth
[1],
10006 &ett_r3definecalendarmonth
[2],
10007 &ett_r3definecalendarmonth
[3],
10008 &ett_r3definecalendarmonth
[4],
10009 &ett_r3definecalendarmonth
[5],
10010 &ett_r3definecalendarmonth
[6],
10011 &ett_r3definecalendarmonth
[7],
10012 &ett_r3definecalendarmonth
[8],
10013 &ett_r3definecalendarmonth
[9],
10014 &ett_r3definecalendarmonth
[10],
10015 &ett_r3definecalendarmonth
[11],
10016 &ett_r3definecalendarmonth
[12],
10017 &ett_r3definetimezonestarttime
,
10018 &ett_r3definetimezoneendtime
,
10019 &ett_r3definetimezonedaymap
,
10020 &ett_r3eventlogdumpstarttime
,
10021 &ett_r3eventlogdumpendtime
,
10022 &ett_r3declinedlogdumpstarttime
,
10023 &ett_r3declinedlogdumpendtime
,
10024 &ett_r3alarmlogdumpstarttime
,
10025 &ett_r3alarmlogdumpendtime
,
10031 &ett_r3serialnumber
,
10033 &ett_r3checksumresults
,
10034 &ett_r3checksumresultsfield
,
10035 &ett_r3forceoptions
,
10037 &ett_r3downloadfirmware
,
10038 &ett_r3capabilities
,
10040 &ett_r3mortisestatelog
,
10043 &ett_r3taskflagsentry
,
10044 &ett_r3checkpointlog
,
10045 &ett_r3checkpointlogentry
,
10046 &ett_r3cpuregisters
,
10047 &ett_r3cpuregister
,
10048 &ett_r3m41t81registers
,
10049 &ett_r3m41t81register
,
10050 &ett_r3debuglogrecord
,
10051 &ett_r3setdatetime
,
10055 static ei_register_info ei
[] = {
10056 { &ei_r3_malformed_length
, { "r3.malformed_length", PI_MALFORMED
, PI_ERROR
, "Malformed length", EXPFILL
}},
10057 { &ei_r3_reserved_upstream_command_value
, { "r3.reserved_upstream_command_value", PI_UNDECODED
, PI_WARN
, "\"Reserved\" Upstream Command value", EXPFILL
}},
10058 { &ei_r3_mfgfield
, { "r3.mfgfield.field.unknown", PI_UNDECODED
, PI_WARN
, "Unknown manufacturing command value", EXPFILL
}},
10059 { &ei_r3_mfgfield_too_many_adc_values
, { "r3.mfgfield.too_many_adc_values", PI_PROTOCOL
, PI_WARN
, "MFG Field: too many adc values", EXPFILL
}},
10060 { &ei_r3_peekpoke_operation
, { "r3.peekpoke.operation.unknown", PI_UNDECODED
, PI_WARN
, "Unknown peekpoke operation value", EXPFILL
}},
10061 { &ei_r3_response_hasdata_octet_1
, { "r3.response_hasdata.octet_1_not_cmd_response", PI_PROTOCOL
, PI_WARN
, "Octet 1 not CMD_RESPONSE", EXPFILL
}},
10062 { &ei_r3_response_hasdata_octet_2
, { "r3.response_hasdata.octet_2_not_response_hasdata", PI_PROTOCOL
, PI_WARN
, "Octet 2 not RESPONSE_HASDATA", EXPFILL
}},
10063 { &ei_r3_response_hasdata_octet_3
, { "r3.response_hasdata.octet_3_ge_upstreamcommand_last", PI_PROTOCOL
, PI_WARN
, "Octet 3 >= UPSTREAMCOMMAND_LAST", EXPFILL
}},
10064 { &ei_r3_firmwaredownload_action
, { "r3.firmwaredownload.action.unknown", PI_PROTOCOL
, PI_WARN
, "Unknown Firmware download action", EXPFILL
}},
10065 { &ei_r3_cmd_downloadfirmwaretimeout
, { "r3.r3.command.downloadfirmwaretimeout", PI_UNDECODED
, PI_WARN
, "Download Firmware Timeout", EXPFILL
}},
10066 { &ei_r3_unknown_command_value
, { "r3.command.unknown", PI_UNDECODED
, PI_WARN
, "Unknown command value", EXPFILL
}},
10069 expert_module_t
* expert_r3
;
10071 proto_r3
= proto_register_protocol ("Assa Abloy R3", "R3", "r3");
10072 new_register_dissector ("r3", dissect_r3
, proto_r3
);
10073 proto_register_field_array (proto_r3
, hf
, array_length (hf
));
10074 proto_register_subtree_array (ett
, array_length (ett
));
10075 expert_r3
= expert_register_protocol(proto_r3
);
10076 expert_register_field_array(expert_r3
, ei
, array_length(ei
));
10079 void proto_reg_handoff_r3 (void)
10081 dissector_handle_t r3_handle
= find_dissector ("r3");
10082 dissector_add_uint ("tcp.port", 2571, r3_handle
);
10083 dissector_add_uint ("tcp.port", 8023, r3_handle
);
10091 * c-basic-offset: 2
10093 * indent-tabs-mode: nil
10096 * vim: set tabstop=2 softtabstop=2 shiftwidth=2 expandtab: