2009-11-28 01:16:52 +00:00
/* packet-assa_r3.c
* Routines for R3 packet dissection
* Copyright ( c ) 2009 Assa Abloy USA < jcwren @ assaabloyusa . com >
*
* $ Id $
*
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
* Copyright 1998 Gerald Combs
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
# ifdef HAVE_CONFIG_H
# include "config.h"
# endif
# include <glib.h>
# include <epan/packet.h>
# include <epan/expert.h>
# include <epan/dissectors/packet-tcp.h>
# include "packet-assa_r3_public.h"
/*
* Wireshark ID of the R3 protocol
*/
static gint proto_r3 = - 1 ;
/*
* Packet variables
*/
static gint hf_r3_tildex3ds = - 1 ; /* Got ~~~ds */
static gint hf_r3_header = - 1 ; /* Packet header */
static gint hf_r3_payload = - 1 ; /* Packet payload */
static gint hf_r3_tail = - 1 ; /* Packet tail */
static gint hf_r3_sigil = - 1 ; /* Packet sigil */
static gint hf_r3_address = - 1 ; /* Packet address */
static gint hf_r3_packetnumber = - 1 ; /* Packet number */
static gint hf_r3_packetlength = - 1 ; /* Packet length */
static gint hf_r3_encryption = - 1 ; /* Packet encryption scheme */
static gint hf_r3_crc = - 1 ; /* Packet CRC */
static gint hf_r3_crc_bad = - 1 ; /* Packet CRC bad (for filtering) */
static gint hf_r3_xor = - 1 ; /* Packet Xor */
static gint hf_r3_xor_bad = - 1 ; /* Packet Xor bad (for filtering) */
static gint hf_r3_commandlength = - 1 ; /* Command length */
static gint hf_r3_command = - 1 ; /* Command (cmdCommand_e) */
static gint hf_r3_commanddata = - 1 ; /* Command data (not always present) */
static gint hf_r3_commandmfglength = - 1 ; /* Mfg Command length */
static gint hf_r3_commandmfg = - 1 ; /* Mfg Command (cmdCommand_e) */
static gint hf_r3_commandmfgdata = - 1 ; /* Mfg Command data (not always present) */
static gint hf_r3_responselength = - 1 ; /* Response length */
static gint hf_r3_responsecommand = - 1 ; /* Response command */
static gint hf_r3_responsetype = - 1 ; /* Response type (responseType_e) */
static gint hf_r3_responsetocommand = - 1 ; /* Response to command (cmdCommand_e) */
static gint hf_r3_responsedata = - 1 ; /* Response data (not always present) */
static gint hf_r3_upstreamcommand = - 1 ;
static gint hf_r3_upstreamfield = - 1 ; /* Upstream field (length + type + data) */
static gint hf_r3_upstreamfieldlength = - 1 ; /* Upstream field length */
static gint hf_r3_upstreamfieldtype = - 1 ; /* Upstream field type (upstreamField_e) */
static gint hf_r3_upstreamfielddatalen = - 1 ; /* Upstream field data length */
static gint hf_r3_upstreamfielderror = - 1 ; /* Upstream field is unknown type */
static gint hf_r3_upstreamfieldarray [ UPSTREAMFIELD_LAST ] ;
static gint hf_r3_configitems = - 1 ;
static gint hf_r3_configitem = - 1 ;
static gint hf_r3_configfield = - 1 ;
static gint hf_r3_configitemlength = - 1 ;
static gint hf_r3_configitemtype = - 1 ;
static gint hf_r3_configitemdata = - 1 ;
static gint hf_r3_configitemdata_bool = - 1 ;
static gint hf_r3_configitemdata_8 = - 1 ;
static gint hf_r3_configitemdata_16 = - 1 ;
static gint hf_r3_configitemdata_32 = - 1 ;
static gint hf_r3_configitemdata_string = - 1 ;
static gint hf_r3_timezonearray [ 32 ] ;
static gint hf_r3_expireon_year = - 1 ;
static gint hf_r3_expireon_month = - 1 ;
static gint hf_r3_expireon_day = - 1 ;
static gint hf_r3_datetime_year = - 1 ;
static gint hf_r3_datetime_month = - 1 ;
static gint hf_r3_datetime_day = - 1 ;
static gint hf_r3_datetime_dow = - 1 ;
static gint hf_r3_datetime_hours = - 1 ;
static gint hf_r3_datetime_minutes = - 1 ;
static gint hf_r3_datetime_seconds = - 1 ;
static gint hf_r3_datetime_dst = - 1 ;
static gint hf_r3_eventlog_recordnumber = - 1 ;
static gint hf_r3_eventlog_year = - 1 ;
static gint hf_r3_eventlog_month = - 1 ;
static gint hf_r3_eventlog_day = - 1 ;
static gint hf_r3_eventlog_hour = - 1 ;
static gint hf_r3_eventlog_minute = - 1 ;
static gint hf_r3_eventlog_second = - 1 ;
static gint hf_r3_eventlog_usernumber = - 1 ;
static gint hf_r3_eventlog_event = - 1 ;
static gint hf_r3_declinedlog_recordnumber = - 1 ;
static gint hf_r3_declinedlog_year = - 1 ;
static gint hf_r3_declinedlog_month = - 1 ;
static gint hf_r3_declinedlog_day = - 1 ;
static gint hf_r3_declinedlog_hour = - 1 ;
static gint hf_r3_declinedlog_minute = - 1 ;
static gint hf_r3_declinedlog_second = - 1 ;
static gint hf_r3_declinedlog_usernumber = - 1 ;
static gint hf_r3_declinedlog_cred1type = - 1 ;
static gint hf_r3_declinedlog_cred2type = - 1 ;
static gint hf_r3_declinedlog_cred1 = - 1 ;
static gint hf_r3_declinedlog_cred2 = - 1 ;
static gint hf_r3_alarmlog_recordnumber = - 1 ;
static gint hf_r3_alarmlog_year = - 1 ;
static gint hf_r3_alarmlog_month = - 1 ;
static gint hf_r3_alarmlog_day = - 1 ;
static gint hf_r3_alarmlog_hour = - 1 ;
static gint hf_r3_alarmlog_minute = - 1 ;
static gint hf_r3_alarmlog_second = - 1 ;
static gint hf_r3_alarmlog_id = - 1 ;
static gint hf_r3_alarmlog_usernumber = - 1 ;
static gint hf_r3_debugmsg = - 1 ;
static gint hf_r3_setdate_year = - 1 ;
static gint hf_r3_setdate_month = - 1 ;
static gint hf_r3_setdate_day = - 1 ;
static gint hf_r3_setdate_dow = - 1 ;
static gint hf_r3_setdate_hours = - 1 ;
static gint hf_r3_setdate_minutes = - 1 ;
static gint hf_r3_setdate_seconds = - 1 ;
static gint hf_r3_deleteusers = - 1 ;
static gint hf_r3_defineexception_number = - 1 ;
static gint hf_r3_defineexception_startdate_month = - 1 ;
static gint hf_r3_defineexception_startdate_day = - 1 ;
static gint hf_r3_defineexception_startdate_hours = - 1 ;
static gint hf_r3_defineexception_startdate_minutes = - 1 ;
static gint hf_r3_defineexception_enddate_month = - 1 ;
static gint hf_r3_defineexception_enddate_day = - 1 ;
static gint hf_r3_defineexception_enddate_hours = - 1 ;
static gint hf_r3_defineexception_enddate_minutes = - 1 ;
static gint hf_r3_defineexceptiongroup_number = - 1 ;
static gint hf_r3_defineexceptiongroup_bits = - 1 ;
static gint hf_r3_definecalendar_number = - 1 ;
static gint hf_r3_definecalendar_bits = - 1 ;
static gint hf_r3_definetimezone_number = - 1 ;
static gint hf_r3_definetimezone_starttime_hours = - 1 ;
static gint hf_r3_definetimezone_starttime_minutes = - 1 ;
static gint hf_r3_definetimezone_endtime_hours = - 1 ;
static gint hf_r3_definetimezone_endtime_minutes = - 1 ;
static gint hf_r3_definetimezone_daymap [ 7 ] ;
static gint hf_r3_definetimezone_exceptiongroup = - 1 ;
static gint hf_r3_definetimezone_mode = - 1 ;
static gint hf_r3_definetimezone_calendar = - 1 ;
static gint hf_r3_rmtauthretry_sequence = - 1 ;
static gint hf_r3_rmtauthretry_retry = - 1 ;
static gint hf_r3_eventlogdump_starttime_year = - 1 ;
static gint hf_r3_eventlogdump_starttime_month = - 1 ;
static gint hf_r3_eventlogdump_starttime_day = - 1 ;
static gint hf_r3_eventlogdump_starttime_hours = - 1 ;
static gint hf_r3_eventlogdump_starttime_minutes = - 1 ;
static gint hf_r3_eventlogdump_endtime_year = - 1 ;
static gint hf_r3_eventlogdump_endtime_month = - 1 ;
static gint hf_r3_eventlogdump_endtime_day = - 1 ;
static gint hf_r3_eventlogdump_endtime_hours = - 1 ;
static gint hf_r3_eventlogdump_endtime_minutes = - 1 ;
static gint hf_r3_eventlogdump_user = - 1 ;
static gint hf_r3_declinedlogdump_starttime_year = - 1 ;
static gint hf_r3_declinedlogdump_starttime_month = - 1 ;
static gint hf_r3_declinedlogdump_starttime_day = - 1 ;
static gint hf_r3_declinedlogdump_starttime_hours = - 1 ;
static gint hf_r3_declinedlogdump_starttime_minutes = - 1 ;
static gint hf_r3_declinedlogdump_endtime_year = - 1 ;
static gint hf_r3_declinedlogdump_endtime_month = - 1 ;
static gint hf_r3_declinedlogdump_endtime_day = - 1 ;
static gint hf_r3_declinedlogdump_endtime_hours = - 1 ;
static gint hf_r3_declinedlogdump_endtime_minutes = - 1 ;
static gint hf_r3_alarmlogdump_starttime_year = - 1 ;
static gint hf_r3_alarmlogdump_starttime_month = - 1 ;
static gint hf_r3_alarmlogdump_starttime_day = - 1 ;
static gint hf_r3_alarmlogdump_starttime_hours = - 1 ;
static gint hf_r3_alarmlogdump_starttime_minutes = - 1 ;
static gint hf_r3_alarmlogdump_endtime_year = - 1 ;
static gint hf_r3_alarmlogdump_endtime_month = - 1 ;
static gint hf_r3_alarmlogdump_endtime_day = - 1 ;
static gint hf_r3_alarmlogdump_endtime_hours = - 1 ;
static gint hf_r3_alarmlogdump_endtime_minutes = - 1 ;
static gint hf_r3_nvramclearoptions [ 16 ] ;
static gint hf_r3_writeeventlog_user = - 1 ;
static gint hf_r3_writeeventlog_event = - 1 ;
static gint hf_r3_powertableselection = - 1 ;
static gint hf_r3_filter_type = - 1 ;
static gint hf_r3_filter_list = - 1 ;
static gint hf_r3_alarm_length = - 1 ;
static gint hf_r3_alarm_id = - 1 ;
static gint hf_r3_alarm_state = - 1 ;
static gint hf_r3_dpac_action = - 1 ;
static gint hf_r3_dpac_waittime = - 1 ;
static gint hf_r3_dpac_command = - 1 ;
static gint hf_r3_dpacreply_stuff = - 1 ;
static gint hf_r3_dpacreply_length = - 1 ;
static gint hf_r3_dpacreply_reply = - 1 ;
static gint hf_r3_mfgfield_length = - 1 ;
static gint hf_r3_mfgfield = - 1 ;
static gint hf_r3_mfgfield_data = - 1 ;
static gint hf_r3_mfgsetserialnumber = - 1 ;
static gint hf_r3_mfgsetcryptkey = - 1 ;
static gint hf_r3_mfgdumpnvram = - 1 ;
static gint hf_r3_mfgremoteunlock = - 1 ;
static gint hf_r3_mfgtestpreserve = - 1 ;
static gint hf_r3_adc [ 8 ] ;
static gint hf_r3_hardwareid_board = - 1 ;
static gint hf_r3_hardwareid_cpuid = - 1 ;
static gint hf_r3_hardwareid_cpurev = - 1 ;
static gint hf_r3_testkeypad = - 1 ;
static gint hf_r3_testmagcard = - 1 ;
static gint hf_r3_testproxcard = - 1 ;
static gint hf_r3_nvramdump_record = - 1 ;
static gint hf_r3_nvramdump_length = - 1 ;
static gint hf_r3_nvramdump_data = - 1 ;
static gint hf_r3_nvramdumprle_record = - 1 ;
static gint hf_r3_nvramdumprle_length = - 1 ;
static gint hf_r3_nvramdumprle_data = - 1 ;
static gint hf_r3_iopins_lat = - 1 ;
static gint hf_r3_iopins_port = - 1 ;
static gint hf_r3_iopins_tris = - 1 ;
static gint hf_r3_mortisepins_s1 = - 1 ;
static gint hf_r3_mortisepins_s2 = - 1 ;
static gint hf_r3_mortisepins_s3 = - 1 ;
static gint hf_r3_mortisepins_s4 = - 1 ;
static gint hf_r3_checksumresults = - 1 ;
static gint hf_r3_checksumresults_field = - 1 ;
static gint hf_r3_checksumresults_length = - 1 ;
static gint hf_r3_checksumresults_state = - 1 ;
static gint hf_r3_forceoptions_length = - 1 ;
static gint hf_r3_forceoptions_item = - 1 ;
static gint hf_r3_forceoptions_state_8 = - 1 ;
static gint hf_r3_forceoptions_state_16 = - 1 ;
static gint hf_r3_forceoptions_state_24 = - 1 ;
static gint hf_r3_forceoptions_state_32 = - 1 ;
static gint hf_r3_peekpoke_operation = - 1 ;
static gint hf_r3_peekpoke_address = - 1 ;
static gint hf_r3_peekpoke_length = - 1 ;
static gint hf_r3_peekpoke_poke8 = - 1 ;
static gint hf_r3_peekpoke_poke16 = - 1 ;
static gint hf_r3_peekpoke_poke24 = - 1 ;
static gint hf_r3_peekpoke_poke32 = - 1 ;
static gint hf_r3_peekpoke_pokestring = - 1 ;
static gint hf_r3_firmwaredownload_length = - 1 ;
static gint hf_r3_firmwaredownload_record = - 1 ;
static gint hf_r3_firmwaredownload_action = - 1 ;
static gint hf_r3_firmwaredownload_timeout = - 1 ;
static gint hf_r3_firmwaredownload_nvram = - 1 ;
static gint hf_r3_firmwaredownload_address = - 1 ;
static gint hf_r3_firmwaredownload_bytes = - 1 ;
static gint hf_r3_firmwaredownload_data = - 1 ;
static gint hf_r3_firmwaredownload_crc = - 1 ;
static gint hf_r3_firmwaredownload_crc_bad = - 1 ;
static gint hf_r3_nvramchecksumvalue = - 1 ;
static gint hf_r3_nvramchecksumvalue_fixup = - 1 ;
static gint hf_r3_capabilities = - 1 ;
static gint hf_r3_capabilities_length = - 1 ;
static gint hf_r3_capabilities_type = - 1 ;
static gint hf_r3_capabilities_value = - 1 ;
static gint hf_r3_lockstate_passage = - 1 ;
static gint hf_r3_lockstate_panic = - 1 ;
static gint hf_r3_lockstate_lockout = - 1 ;
static gint hf_r3_lockstate_relock = - 1 ;
static gint hf_r3_lockstate_autoopen = - 1 ;
static gint hf_r3_lockstate_nextauto = - 1 ;
static gint hf_r3_lockstate_lockstate = - 1 ;
static gint hf_r3_lockstate_wantstate = - 1 ;
static gint hf_r3_lockstate_remote = - 1 ;
static gint hf_r3_lockstate_update = - 1 ;
static gint hf_r3_lockstate_exceptionspresent = - 1 ;
static gint hf_r3_lockstate_exceptionsactive = - 1 ;
static gint hf_r3_lockstate_timezonespresent = - 1 ;
static gint hf_r3_lockstate_timezonesactive = - 1 ;
static gint hf_r3_lockstate_autounlockspresent = - 1 ;
static gint hf_r3_lockstate_autounlocksactive = - 1 ;
static gint hf_r3_lockstate_uapmspresent = - 1 ;
static gint hf_r3_lockstate_uapmsactive = - 1 ;
static gint hf_r3_lockstate_uapmrelockspresent = - 1 ;
static gint hf_r3_lockstate_uapmreslocksactive = - 1 ;
static gint hf_r3_lockstate_nvramprotect = - 1 ;
static gint hf_r3_lockstate_nvramchecksum = - 1 ;
static gint hf_r3_mortisestatelog = - 1 ;
static gint hf_r3_mortisestatelog_pointer = - 1 ;
static gint hf_r3_mortisestatelog_mortisetype = - 1 ;
static gint hf_r3_mortisestatelog_waiting = - 1 ;
static gint hf_r3_mortisestatelog_state = - 1 ;
static gint hf_r3_mortisestatelog_last = - 1 ;
static gint hf_r3_mortisestatelog_event = - 1 ;
static gint hf_r3_timerchain_newtick = - 1 ;
static gint hf_r3_timerchain_currentboundary = - 1 ;
static gint hf_r3_timerchain_tasktag = - 1 ;
static gint hf_r3_timerchain_address = - 1 ;
static gint hf_r3_timerchain_reload = - 1 ;
static gint hf_r3_timerchain_boundary = - 1 ;
static gint hf_r3_timerchain_count = - 1 ;
static gint hf_r3_timerchain_flags = - 1 ;
static gint hf_r3_taskflags_taskid = - 1 ;
static gint hf_r3_taskflags_flags = - 1 ;
static gint hf_r3_checkpointlog_entryptr = - 1 ;
static gint hf_r3_checkpointlog_rcon = - 1 ;
static gint hf_r3_checkpointlog_checkpoint = - 1 ;
static gint hf_r3_cpuregisters_intcon = - 1 ;
static gint hf_r3_cpuregisters_intcon2 = - 1 ;
static gint hf_r3_cpuregisters_intcon3 = - 1 ;
static gint hf_r3_cpuregisters_pir1 = - 1 ;
static gint hf_r3_cpuregisters_pir2 = - 1 ;
static gint hf_r3_cpuregisters_pir3 = - 1 ;
static gint hf_r3_cpuregisters_pie1 = - 1 ;
static gint hf_r3_cpuregisters_pie2 = - 1 ;
static gint hf_r3_cpuregisters_pie3 = - 1 ;
static gint hf_r3_cpuregisters_ipr1 = - 1 ;
static gint hf_r3_cpuregisters_ipr2 = - 1 ;
static gint hf_r3_cpuregisters_ipr3 = - 1 ;
static gint hf_r3_cpuregisters_rcon = - 1 ;
static gint hf_r3_cpuregisters_osccon = - 1 ;
static gint hf_r3_cpuregisters_rcsta = - 1 ;
static gint hf_r3_cpuregisters_txsta = - 1 ;
static gint hf_r3_cpuregisters_rcsta2 = - 1 ;
static gint hf_r3_cpuregisters_txsta2 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon = - 1 ;
static gint hf_r3_cpuregisters_intcon_rbif = - 1 ;
static gint hf_r3_cpuregisters_intcon_int0if = - 1 ;
static gint hf_r3_cpuregisters_intcon_tmr0if = - 1 ;
static gint hf_r3_cpuregisters_intcon_rbie = - 1 ;
static gint hf_r3_cpuregisters_intcon_int0ie = - 1 ;
static gint hf_r3_cpuregisters_intcon_tmr0ie = - 1 ;
static gint hf_r3_cpuregisters_intcon_giel = - 1 ;
static gint hf_r3_cpuregisters_intcon_gieh = - 1 ;
static gint hf_r3_cpuregisters_intcon2_rbip = - 1 ;
static gint hf_r3_cpuregisters_intcon2_int3ip = - 1 ;
static gint hf_r3_cpuregisters_intcon2_tmr0ip = - 1 ;
static gint hf_r3_cpuregisters_intcon2_intedg3 = - 1 ;
static gint hf_r3_cpuregisters_intcon2_intedg2 = - 1 ;
static gint hf_r3_cpuregisters_intcon2_intedg1 = - 1 ;
static gint hf_r3_cpuregisters_intcon2_intedg0 = - 1 ;
static gint hf_r3_cpuregisters_intcon2_rbpu = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int1if = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int2if = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int3if = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int1ie = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int2ie = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int3ie = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int1ip = - 1 ;
static gint hf_r3_cpuregisters_intcon3_int2ip = - 1 ;
static gint hf_r3_cpuregisters_pir1_tmr1if = - 1 ;
static gint hf_r3_cpuregisters_pir1_tmr2if = - 1 ;
static gint hf_r3_cpuregisters_pir1_ccp1if = - 1 ;
static gint hf_r3_cpuregisters_pir1_ssp1if = - 1 ;
static gint hf_r3_cpuregisters_pir1_tx1if = - 1 ;
static gint hf_r3_cpuregisters_pir1_rc1if = - 1 ;
static gint hf_r3_cpuregisters_pir1_adif = - 1 ;
static gint hf_r3_cpuregisters_pir1_pspif = - 1 ;
static gint hf_r3_cpuregisters_pir2_ccp2if = - 1 ;
static gint hf_r3_cpuregisters_pir2_tmr3if = - 1 ;
static gint hf_r3_cpuregisters_pir2_hlvdif = - 1 ;
static gint hf_r3_cpuregisters_pir2_bcl1if = - 1 ;
static gint hf_r3_cpuregisters_pir2_eeif = - 1 ;
static gint hf_r3_cpuregisters_pir2_unused5 = - 1 ;
static gint hf_r3_cpuregisters_pir2_cmif = - 1 ;
static gint hf_r3_cpuregisters_pir2_oscfif = - 1 ;
static gint hf_r3_cpuregisters_pir3_ccp3if = - 1 ;
static gint hf_r3_cpuregisters_pir3_ccp4if = - 1 ;
static gint hf_r3_cpuregisters_pir3_ccp5if = - 1 ;
static gint hf_r3_cpuregisters_pir3_tmr4if = - 1 ;
static gint hf_r3_cpuregisters_pir3_tx2if = - 1 ;
static gint hf_r3_cpuregisters_pir3_rc2if = - 1 ;
static gint hf_r3_cpuregisters_pir3_bcl2if = - 1 ;
static gint hf_r3_cpuregisters_pir3_ssp2if = - 1 ;
static gint hf_r3_cpuregisters_pie1_tmr1ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_tmr2ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_ccp1ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_ssp1ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_tx1ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_rc1ie = - 1 ;
static gint hf_r3_cpuregisters_pie1_adie = - 1 ;
static gint hf_r3_cpuregisters_pie1_pspie = - 1 ;
static gint hf_r3_cpuregisters_pie2_oscfie = - 1 ;
static gint hf_r3_cpuregisters_pie2_cmie = - 1 ;
static gint hf_r3_cpuregisters_pie2_unused2 = - 1 ;
static gint hf_r3_cpuregisters_pie2_eeie = - 1 ;
static gint hf_r3_cpuregisters_pie2_bcl1ie = - 1 ;
static gint hf_r3_cpuregisters_pie2_hlvdie = - 1 ;
static gint hf_r3_cpuregisters_pie2_tmr3ie = - 1 ;
static gint hf_r3_cpuregisters_pie2_ccp2ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_ccp3ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_ccp4ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_ccp5ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_tmr4ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_tx2ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_rc2ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_bcl2ie = - 1 ;
static gint hf_r3_cpuregisters_pie3_ssp2ie = - 1 ;
static gint hf_r3_cpuregisters_ipr1_tmr1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_tmr2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_ccp1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_ssp1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_tx1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_rc1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_adip = - 1 ;
static gint hf_r3_cpuregisters_ipr1_pspip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_ccp2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_tmr3ip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_hlvdip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_bcl1ip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_eeip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_unused5 = - 1 ;
static gint hf_r3_cpuregisters_ipr2_cmip = - 1 ;
static gint hf_r3_cpuregisters_ipr2_oscfip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_ccp2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_ccp4ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_ccp5ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_tmr4ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_tx2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_rc2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_bcl2ip = - 1 ;
static gint hf_r3_cpuregisters_ipr3_ssp2ip = - 1 ;
static gint hf_r3_cpuregisters_rcon_bor = - 1 ;
static gint hf_r3_cpuregisters_rcon_por = - 1 ;
static gint hf_r3_cpuregisters_rcon_pd = - 1 ;
static gint hf_r3_cpuregisters_rcon_to = - 1 ;
static gint hf_r3_cpuregisters_rcon_unused4 = - 1 ;
static gint hf_r3_cpuregisters_rcon_ri = - 1 ;
static gint hf_r3_cpuregisters_rcon_sboren = - 1 ;
static gint hf_r3_cpuregisters_rcon_ipen = - 1 ;
static gint hf_r3_cpuregisters_osccon_scs0 = - 1 ;
static gint hf_r3_cpuregisters_osccon_scs1 = - 1 ;
static gint hf_r3_cpuregisters_osccon_iofs = - 1 ;
static gint hf_r3_cpuregisters_osccon_osts = - 1 ;
static gint hf_r3_cpuregisters_osccon_ircf0 = - 1 ;
static gint hf_r3_cpuregisters_osccon_ircf1 = - 1 ;
static gint hf_r3_cpuregisters_osccon_ircf2 = - 1 ;
static gint hf_r3_cpuregisters_osccon_idlen = - 1 ;
static gint hf_r3_cpuregisters_rcsta_rx9d = - 1 ;
static gint hf_r3_cpuregisters_rcsta_oerr = - 1 ;
static gint hf_r3_cpuregisters_rcsta_ferr = - 1 ;
static gint hf_r3_cpuregisters_rcsta_adden = - 1 ;
static gint hf_r3_cpuregisters_rcsta_cren = - 1 ;
static gint hf_r3_cpuregisters_rcsta_sren = - 1 ;
static gint hf_r3_cpuregisters_rcsta_rx9 = - 1 ;
static gint hf_r3_cpuregisters_rcsta_spen = - 1 ;
static gint hf_r3_cpuregisters_txsta_tx9d = - 1 ;
static gint hf_r3_cpuregisters_txsta_trmt = - 1 ;
static gint hf_r3_cpuregisters_txsta_brgh = - 1 ;
static gint hf_r3_cpuregisters_txsta_sendb = - 1 ;
static gint hf_r3_cpuregisters_txsta_sync = - 1 ;
static gint hf_r3_cpuregisters_txsta_txen = - 1 ;
static gint hf_r3_cpuregisters_txsta_tx9 = - 1 ;
static gint hf_r3_cpuregisters_txsta_csrc = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_rx9d = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_oerr = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_ferr = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_adden = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_cren = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_sren = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_rx9 = - 1 ;
static gint hf_r3_cpuregisters_rcsta2_spen = - 1 ;
static gint hf_r3_cpuregisters_txsta2_tx9d = - 1 ;
static gint hf_r3_cpuregisters_txsta2_trmt = - 1 ;
static gint hf_r3_cpuregisters_txsta2_brgh = - 1 ;
static gint hf_r3_cpuregisters_txsta2_sendb = - 1 ;
static gint hf_r3_cpuregisters_txsta2_sync = - 1 ;
static gint hf_r3_cpuregisters_txsta2_txen = - 1 ;
static gint hf_r3_cpuregisters_txsta2_tx9 = - 1 ;
static gint hf_r3_cpuregisters_txsta2_csrc = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_swdten = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused1 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused2 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused3 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused4 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused5 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused6 = - 1 ;
static gint hf_r3_cpuregisters_wdtcon_unused7 = - 1 ;
static gint hf_r3_dumpm41t81_reg00 = - 1 ;
static gint hf_r3_dumpm41t81_reg01 = - 1 ;
static gint hf_r3_dumpm41t81_reg02 = - 1 ;
static gint hf_r3_dumpm41t81_reg03 = - 1 ;
static gint hf_r3_dumpm41t81_reg04 = - 1 ;
static gint hf_r3_dumpm41t81_reg05 = - 1 ;
static gint hf_r3_dumpm41t81_reg06 = - 1 ;
static gint hf_r3_dumpm41t81_reg07 = - 1 ;
static gint hf_r3_dumpm41t81_reg08 = - 1 ;
static gint hf_r3_dumpm41t81_reg09 = - 1 ;
static gint hf_r3_dumpm41t81_reg0a = - 1 ;
static gint hf_r3_dumpm41t81_reg0b = - 1 ;
static gint hf_r3_dumpm41t81_reg0c = - 1 ;
static gint hf_r3_dumpm41t81_reg0d = - 1 ;
static gint hf_r3_dumpm41t81_reg0e = - 1 ;
static gint hf_r3_dumpm41t81_reg0f = - 1 ;
static gint hf_r3_dumpm41t81_reg10 = - 1 ;
static gint hf_r3_dumpm41t81_reg11 = - 1 ;
static gint hf_r3_dumpm41t81_reg12 = - 1 ;
static gint hf_r3_dumpm41t81_reg13 = - 1 ;
static gint hf_r3_dumpm41t81_reg00_sec1 = - 1 ;
static gint hf_r3_dumpm41t81_reg00_sec01 = - 1 ;
static gint hf_r3_dumpm41t81_reg01_st = - 1 ;
static gint hf_r3_dumpm41t81_reg01_10sec = - 1 ;
static gint hf_r3_dumpm41t81_reg01_1sec = - 1 ;
static gint hf_r3_dumpm41t81_reg02_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg02_10min = - 1 ;
static gint hf_r3_dumpm41t81_reg02_1min = - 1 ;
static gint hf_r3_dumpm41t81_reg03_cbe = - 1 ;
static gint hf_r3_dumpm41t81_reg03_cb = - 1 ;
static gint hf_r3_dumpm41t81_reg03_10hour = - 1 ;
static gint hf_r3_dumpm41t81_reg03_1hour = - 1 ;
static gint hf_r3_dumpm41t81_reg04_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg04_dow = - 1 ;
static gint hf_r3_dumpm41t81_reg05_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg05_10day = - 1 ;
static gint hf_r3_dumpm41t81_reg05_1day = - 1 ;
static gint hf_r3_dumpm41t81_reg06_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg06_10month = - 1 ;
static gint hf_r3_dumpm41t81_reg06_1month = - 1 ;
static gint hf_r3_dumpm41t81_reg07_10year = - 1 ;
static gint hf_r3_dumpm41t81_reg07_1year = - 1 ;
static gint hf_r3_dumpm41t81_reg08_out = - 1 ;
static gint hf_r3_dumpm41t81_reg08_ft = - 1 ;
static gint hf_r3_dumpm41t81_reg08_s = - 1 ;
static gint hf_r3_dumpm41t81_reg08_cal = - 1 ;
static gint hf_r3_dumpm41t81_reg09_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg09_bmb = - 1 ;
static gint hf_r3_dumpm41t81_reg09_rb = - 1 ;
static gint hf_r3_dumpm41t81_reg0a_afe = - 1 ;
static gint hf_r3_dumpm41t81_reg0a_sqwe = - 1 ;
static gint hf_r3_dumpm41t81_reg0a_abe = - 1 ;
static gint hf_r3_dumpm41t81_reg0a_10monthalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0a_1monthalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0b_rpt5 = - 1 ;
static gint hf_r3_dumpm41t81_reg0b_rpt4 = - 1 ;
static gint hf_r3_dumpm41t81_reg0b_10dayalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0b_1dayalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0c_rpt3 = - 1 ;
static gint hf_r3_dumpm41t81_reg0c_ht = - 1 ;
static gint hf_r3_dumpm41t81_reg0c_10houralm = - 1 ;
static gint hf_r3_dumpm41t81_reg0c_1houralm = - 1 ;
static gint hf_r3_dumpm41t81_reg0d_rpt2 = - 1 ;
static gint hf_r3_dumpm41t81_reg0d_10minalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0d_1minalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0e_rpt1 = - 1 ;
static gint hf_r3_dumpm41t81_reg0e_10secalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0e_1secalm = - 1 ;
static gint hf_r3_dumpm41t81_reg0f_wdf = - 1 ;
static gint hf_r3_dumpm41t81_reg0f_af = - 1 ;
static gint hf_r3_dumpm41t81_reg0f_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg10_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg11_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg12_notused = - 1 ;
static gint hf_r3_dumpm41t81_reg13_rs = - 1 ;
static gint hf_r3_dumpm41t81_reg13_notused = - 1 ;
static gint hf_r3_debuglog_recordnumber = - 1 ;
static gint hf_r3_debuglog_flags = - 1 ;
static gint hf_r3_debuglog_tick = - 1 ;
static gint hf_r3_adduserparamtype = - 1 ;
static gint hf_r3_adduserparamtypelength = - 1 ;
static gint hf_r3_adduserparamtypetype = - 1 ;
static gint hf_r3_adduserparamtypedatalen = - 1 ;
static gint hf_r3_adduserparamtypeerror = - 1 ;
static gint hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_LAST ] ;
/*
* These control the expansion of proto_item_add_subtree ( ) added items
*/
static gint ett_r3 = - 1 ;
static gint ett_r3header = - 1 ;
static gint ett_r3tail = - 1 ;
static gint ett_r3payload = - 1 ;
static gint ett_r3cmd = - 1 ;
static gint ett_r3configitem = - 1 ;
static gint ett_r3upstreamcommand = - 1 ;
static gint ett_r3upstreamfield = - 1 ;
static gint ett_r3timezone = - 1 ;
static gint ett_r3expireon = - 1 ;
static gint ett_r3datetime = - 1 ;
static gint ett_r3eventlogrecord = - 1 ;
static gint ett_r3declinedlogrecord = - 1 ;
static gint ett_r3alarmlogrecord = - 1 ;
static gint ett_r3debugmsg = - 1 ;
static gint ett_r3defineexceptionstartdate = - 1 ;
static gint ett_r3defineexceptionenddate = - 1 ;
static gint ett_r3defineexceptiongroupbits = - 1 ;
static gint ett_r3definecalendarmonth [ 13 ] = { - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 } ;
static gint ett_r3definetimezonestarttime = - 1 ;
static gint ett_r3definetimezoneendtime = - 1 ;
static gint ett_r3definetimezonedaymap = - 1 ;
static gint ett_r3eventlogdumpstarttime = - 1 ;
static gint ett_r3eventlogdumpendtime = - 1 ;
static gint ett_r3declinedlogdumpstarttime = - 1 ;
static gint ett_r3declinedlogdumpendtime = - 1 ;
static gint ett_r3alarmlogdumpstarttime = - 1 ;
static gint ett_r3alarmlogdumpendtime = - 1 ;
static gint ett_r3clearnvram = - 1 ;
static gint ett_r3filters = - 1 ;
static gint ett_r3alarmlist = - 1 ;
static gint ett_r3alarmcfg = - 1 ;
static gint ett_r3commandmfg = - 1 ;
static gint ett_r3serialnumber = - 1 ;
static gint ett_r3iopins = - 1 ;
static gint ett_r3checksumresults = - 1 ;
static gint ett_r3checksumresultsfield = - 1 ;
static gint ett_r3forceoptions = - 1 ;
static gint ett_r3peekpoke = - 1 ;
static gint ett_r3downloadfirmware = - 1 ;
static gint ett_r3capabilities = - 1 ;
static gint ett_r3lockstate = - 1 ;
static gint ett_r3mortisestatelog = - 1 ;
static gint ett_r3timerchain = - 1 ;
static gint ett_r3taskflags = - 1 ;
static gint ett_r3taskflagsentry = - 1 ;
static gint ett_r3checkpointlog = - 1 ;
static gint ett_r3checkpointlogentry = - 1 ;
static gint ett_r3cpuregisters = - 1 ;
static gint ett_r3cpuregister = - 1 ;
static gint ett_r3m41t81registers = - 1 ;
static gint ett_r3m41t81register = - 1 ;
static gint ett_r3debuglogrecord = - 1 ;
static gint ett_r3setdatetime = - 1 ;
static gint ett_r3manageuser = - 1 ;
/*
* Setup protocol subtree array
*/
static gint * ett [ ] =
{
& ett_r3 ,
& ett_r3header ,
& ett_r3tail ,
& ett_r3payload ,
& ett_r3cmd ,
& ett_r3configitem ,
& ett_r3upstreamcommand ,
& ett_r3upstreamfield ,
& ett_r3timezone ,
& ett_r3expireon ,
& ett_r3datetime ,
& ett_r3eventlogrecord ,
& ett_r3declinedlogrecord ,
& ett_r3alarmlogrecord ,
& ett_r3debugmsg ,
& ett_r3defineexceptionstartdate ,
& ett_r3defineexceptionenddate ,
& ett_r3defineexceptiongroupbits ,
& ett_r3definecalendarmonth [ 1 ] ,
& ett_r3definecalendarmonth [ 2 ] ,
& ett_r3definecalendarmonth [ 3 ] ,
& ett_r3definecalendarmonth [ 4 ] ,
& ett_r3definecalendarmonth [ 5 ] ,
& ett_r3definecalendarmonth [ 6 ] ,
& ett_r3definecalendarmonth [ 7 ] ,
& ett_r3definecalendarmonth [ 8 ] ,
& ett_r3definecalendarmonth [ 9 ] ,
& ett_r3definecalendarmonth [ 10 ] ,
& ett_r3definecalendarmonth [ 11 ] ,
& ett_r3definecalendarmonth [ 12 ] ,
& ett_r3definetimezonestarttime ,
& ett_r3definetimezoneendtime ,
& ett_r3definetimezonedaymap ,
& ett_r3eventlogdumpstarttime ,
& ett_r3eventlogdumpendtime ,
& ett_r3declinedlogdumpstarttime ,
& ett_r3declinedlogdumpendtime ,
& ett_r3alarmlogdumpstarttime ,
& ett_r3alarmlogdumpendtime ,
& ett_r3clearnvram ,
& ett_r3filters ,
& ett_r3alarmlist ,
& ett_r3alarmcfg ,
& ett_r3commandmfg ,
& ett_r3serialnumber ,
& ett_r3iopins ,
& ett_r3checksumresults ,
& ett_r3checksumresultsfield ,
& ett_r3forceoptions ,
& ett_r3peekpoke ,
& ett_r3downloadfirmware ,
& ett_r3capabilities ,
& ett_r3lockstate ,
& ett_r3mortisestatelog ,
& ett_r3timerchain ,
& ett_r3taskflags ,
& ett_r3taskflagsentry ,
& ett_r3checkpointlog ,
& ett_r3checkpointlogentry ,
& ett_r3cpuregisters ,
& ett_r3cpuregister ,
& ett_r3m41t81registers ,
& ett_r3m41t81register ,
& ett_r3debuglogrecord ,
& ett_r3setdatetime ,
& ett_r3manageuser
} ;
/*
* Indicates next command to be processed as a manufacturing command
*/
static gint mfgCommandFlag = FALSE ;
/*
* Some enums that don ' t exist in public . h and should
*/
typedef enum
{
CHECKPOINT_NONE = 0 ,
CHECKPOINT_ADC ,
CHECKPOINT_DPAC1 ,
CHECKPOINT_DPAC2 ,
CHECKPOINT_I2C1 ,
CHECKPOINT_I2C2 ,
CHECKPOINT_I2C3 ,
CHECKPOINT_I2C4 ,
CHECKPOINT_I2C5 ,
CHECKPOINT_I2C6 ,
CHECKPOINT_I2C7 ,
CHECKPOINT_I2C8 ,
CHECKPOINT_I2C9 ,
CHECKPOINT_I2C10 ,
CHECKPOINT_I2C11 ,
CHECKPOINT_I2C12 ,
CHECKPOINT_I2C13 ,
CHECKPOINT_I2C14 ,
CHECKPOINT_I2C15 ,
CHECKPOINT_I2C16 ,
CHECKPOINT_I2C17 ,
CHECKPOINT_I2C18 ,
CHECKPOINT_I2C19 ,
CHECKPOINT_I2C20 ,
CHECKPOINT_I2C21 ,
CHECKPOINT_I2C22 ,
CHECKPOINT_I2C23 ,
CHECKPOINT_I2C24 ,
CHECKPOINT_I2C25 ,
CHECKPOINT_I2C26 ,
CHECKPOINT_I2C27 ,
CHECKPOINT_I2C28 ,
CHECKPOINT_I2C29 ,
CHECKPOINT_I2C30 ,
CHECKPOINT_I2C31 ,
CHECKPOINT_I2C32 ,
CHECKPOINT_I2C33 ,
CHECKPOINT_I2C34 ,
CHECKPOINT_I2C35 ,
CHECKPOINT_I2C36 ,
CHECKPOINT_I2C37 ,
CHECKPOINT_I2C38 ,
CHECKPOINT_I2C39 ,
CHECKPOINT_I2C40 ,
CHECKPOINT_I2C41 ,
CHECKPOINT_I2C42 ,
CHECKPOINT_I2C43 ,
CHECKPOINT_I2C44 ,
CHECKPOINT_I2C45 ,
CHECKPOINT_NVRAM ,
CHECKPOINT_SERIAL1 ,
CHECKPOINT_SERIAL2 ,
CHECKPOINT_SERIAL3 ,
CHECKPOINT_WANDERING ,
CHECKPOINT_STRAYHPINT ,
CHECKPOINT_STRAYLPINT ,
CHECKPOINT_TESTWDT ,
CHECKPOINT_DPACDEBUG ,
CHECKPOINT_LAST
}
checkPoint_e ;
typedef enum
{
CONFIGTYPE_NONE = 0 ,
CONFIGTYPE_BOOL ,
CONFIGTYPE_8 ,
CONFIGTYPE_16 ,
CONFIGTYPE_32 ,
CONFIGTYPE_STRING ,
CONFIGTYPE_LAST
}
configType_e ;
typedef enum
{
DOWNLOADFIRMWARE_START = 0 ,
DOWNLOADFIRMWARE_DATA ,
DOWNLOADFIRMWARE_COMPLETE ,
DOWNLOADFIRMWARE_ABORT ,
DOWNLOADFIRMWARE_RESET ,
DOWNLOADFIRMWARE_LAST
}
downloadFirmware_e ;
typedef enum
{
MORTISEEVENT_DX_THROWN = 0 ,
MORTISEEVENT_DX_RETRACTED ,
MORTISEEVENT_LX_RETRACTED ,
MORTISEEVENT_LX_EXTENDED ,
MORTISEEVENT_AX_EXTENDED ,
MORTISEEVENT_AX_RETRACTED ,
MORTISEEVENT_RX_DEPRESSED ,
MORTISEEVENT_RX_RELEASED ,
MORTISEEVENT_PX_OPEN ,
MORTISEEVENT_PX_CLOSED ,
MORTISEEVENT_MX_UNLOCKED ,
MORTISEEVENT_MX_LOCKED ,
MORTISEEVENT_LAST ,
MORTISEEVENT_IGNORE
}
mortiseEvent_e ;
/*
* Print things with nice textual names
*/
static const value_string r3_accessmodenames [ ] =
{
{ ACCESSMODE_NONE , " ACCESMODE_NONE " } ,
{ ACCESSMODE_PRIMARYONLY , " ACCESSMODE_PRIMARYONLY " } ,
{ ACCESSMODE_PRIMARYORAUX , " ACCESSMODE_PRIMARYORAUX " } ,
{ ACCESSMODE_PRIMARYANDAUX , " ACCESSMODE_PRIMARYANDAUX " } ,
{ ACCESSMODE_PRIMARYTHENAUX , " ACCESSMODE_PRIMARYTHENAUX " } ,
{ 0 , NULL }
} ;
static const value_string r3_adduserparamtypenames [ ] =
{
{ ADDUSERPARAMTYPE_DISPOSITION , " ADDUSERPARAMTYPE_DISPOSITION " } ,
{ ADDUSERPARAMTYPE_USERNO , " ADDUSERPARAMTYPE_USERNO " } ,
{ ADDUSERPARAMTYPE_ACCESSALWAYS , " ADDUSERPARAMTYPE_ACCESSALWAYS " } ,
{ ADDUSERPARAMTYPE_ACCESSMODE , " ADDUSERPARAMTYPE_ACCESSMODE " } ,
{ ADDUSERPARAMTYPE_CACHED , " ADDUSERPARAMTYPE_CACHED " } ,
{ ADDUSERPARAMTYPE_USERTYPE , " ADDUSERPARAMTYPE_USERTYPE " } ,
{ ADDUSERPARAMTYPE_PRIMARYFIELD , " ADDUSERPARAMTYPE_PRIMARYFIELD " } ,
{ ADDUSERPARAMTYPE_PRIMARYFIELDTYPE , " ADDUSERPARAMTYPE_PRIMARYFIELDTYPE " } ,
{ ADDUSERPARAMTYPE_AUXFIELD , " ADDUSERPARAMTYPE_AUXFIELD " } ,
{ ADDUSERPARAMTYPE_AUXFIELDTYPE , " ADDUSERPARAMTYPE_AUXFIELDTYPE " } ,
{ ADDUSERPARAMTYPE_TIMEZONE , " ADDUSERPARAMTYPE_TIMEZONE " } ,
{ ADDUSERPARAMTYPE_EXPIREON , " ADDUSERPARAMTYPE_EXPIREON " } ,
{ ADDUSERPARAMTYPE_USECOUNT , " ADDUSERPARAMTYPE_USECOUNT " } ,
{ ADDUSERPARAMTYPE_EXCEPTIONGROUP , " ADDUSERPARAMTYPE_EXCEPTIONGROUP " } ,
{ 0 , NULL }
} ;
static const value_string r3_alarmidnames [ ] =
{
{ ALARMID_NONE , " ALARMID_NONE " } ,
{ ALARMID_VALIDIN , " ALARMID_VALIDIN " } ,
{ ALARMID_DENIEDACCESS , " ALARMID_DENIEDACCESS " } ,
{ ALARMID_SECURED , " ALARMID_SECURED " } ,
{ ALARMID_DOORFORCED , " ALARMID_DOORFORCED " } ,
{ ALARMID_KEYOVERRIDE , " ALARMID_KEYOVERRIDE " } ,
{ ALARMID_INVALIDENTRY , " ALARMID_INVALIDENTRY " } ,
{ ALARMID_DOORAJAR , " ALARMID_DOORAJAR " } ,
{ ALARMID_LOWBATTERY , " ALARMID_LOWBATTERY " } ,
{ ALARMID_RXHELD , " ALARMID_RXHELD " } ,
{ 0 , NULL }
} ;
static const value_string r3_capabilitiesnames [ ] =
{
{ CAPABILITIES_USERS , " CAPABILITIES_USERS " } ,
{ CAPABILITIES_TIMEZONES , " CAPABILITIES_TIMEZONES " } ,
{ CAPABILITIES_EXCEPTIONS , " CAPABILITIES_EXCEPTIONS " } ,
{ CAPABILITIES_EXCEPTIONGROUPS , " CAPABILITIES_EXCEPTIONGROUPS " } ,
{ CAPABILITIES_EVENTLOG , " CAPABILITIES_EVENTLOG " } ,
{ CAPABILITIES_DECLINEDLOG , " CAPABILITIES_DECLINEDLOG " } ,
{ CAPABILITIES_ALARMLOG , " CAPABILITIES_ALARMLOG " } ,
{ CAPABILITIES_TOTALEVENTS , " CAPABILITIES_TOTALEVENTS " } ,
{ 0 , NULL }
} ;
static const value_string r3_checkpointnames [ ] =
{
{ CHECKPOINT_NONE , " CHECKPOINT_NONE " } ,
{ CHECKPOINT_ADC , " CHECKPOINT_ADC " } ,
{ CHECKPOINT_DPAC1 , " CHECKPOINT_DPAC1 " } ,
{ CHECKPOINT_DPAC2 , " CHECKPOINT_DPAC2 " } ,
{ CHECKPOINT_I2C1 , " CHECKPOINT_I2C1 " } ,
{ CHECKPOINT_I2C2 , " CHECKPOINT_I2C2 " } ,
{ CHECKPOINT_I2C3 , " CHECKPOINT_I2C3 " } ,
{ CHECKPOINT_I2C4 , " CHECKPOINT_I2C4 " } ,
{ CHECKPOINT_I2C5 , " CHECKPOINT_I2C5 " } ,
{ CHECKPOINT_I2C6 , " CHECKPOINT_I2C6 " } ,
{ CHECKPOINT_I2C7 , " CHECKPOINT_I2C7 " } ,
{ CHECKPOINT_I2C8 , " CHECKPOINT_I2C8 " } ,
{ CHECKPOINT_I2C9 , " CHECKPOINT_I2C9 " } ,
{ CHECKPOINT_I2C10 , " CHECKPOINT_I2C10 " } ,
{ CHECKPOINT_I2C11 , " CHECKPOINT_I2C11 " } ,
{ CHECKPOINT_I2C12 , " CHECKPOINT_I2C12 " } ,
{ CHECKPOINT_I2C13 , " CHECKPOINT_I2C13 " } ,
{ CHECKPOINT_I2C14 , " CHECKPOINT_I2C14 " } ,
{ CHECKPOINT_I2C15 , " CHECKPOINT_I2C15 " } ,
{ CHECKPOINT_I2C16 , " CHECKPOINT_I2C16 " } ,
{ CHECKPOINT_I2C17 , " CHECKPOINT_I2C17 " } ,
{ CHECKPOINT_I2C18 , " CHECKPOINT_I2C18 " } ,
{ CHECKPOINT_I2C19 , " CHECKPOINT_I2C19 " } ,
{ CHECKPOINT_I2C20 , " CHECKPOINT_I2C20 " } ,
{ CHECKPOINT_I2C21 , " CHECKPOINT_I2C21 " } ,
{ CHECKPOINT_I2C22 , " CHECKPOINT_I2C22 " } ,
{ CHECKPOINT_I2C23 , " CHECKPOINT_I2C23 " } ,
{ CHECKPOINT_I2C24 , " CHECKPOINT_I2C24 " } ,
{ CHECKPOINT_I2C25 , " CHECKPOINT_I2C25 " } ,
{ CHECKPOINT_I2C26 , " CHECKPOINT_I2C26 " } ,
{ CHECKPOINT_I2C27 , " CHECKPOINT_I2C27 " } ,
{ CHECKPOINT_I2C28 , " CHECKPOINT_I2C28 " } ,
{ CHECKPOINT_I2C29 , " CHECKPOINT_I2C29 " } ,
{ CHECKPOINT_I2C30 , " CHECKPOINT_I2C30 " } ,
{ CHECKPOINT_I2C31 , " CHECKPOINT_I2C31 " } ,
{ CHECKPOINT_I2C32 , " CHECKPOINT_I2C32 " } ,
{ CHECKPOINT_I2C33 , " CHECKPOINT_I2C33 " } ,
{ CHECKPOINT_I2C34 , " CHECKPOINT_I2C34 " } ,
{ CHECKPOINT_I2C35 , " CHECKPOINT_I2C35 " } ,
{ CHECKPOINT_I2C36 , " CHECKPOINT_I2C36 " } ,
{ CHECKPOINT_I2C37 , " CHECKPOINT_I2C37 " } ,
{ CHECKPOINT_I2C38 , " CHECKPOINT_I2C38 " } ,
{ CHECKPOINT_I2C39 , " CHECKPOINT_I2C39 " } ,
{ CHECKPOINT_I2C40 , " CHECKPOINT_I2C40 " } ,
{ CHECKPOINT_I2C41 , " CHECKPOINT_I2C41 " } ,
{ CHECKPOINT_I2C42 , " CHECKPOINT_I2C42 " } ,
{ CHECKPOINT_I2C43 , " CHECKPOINT_I2C43 " } ,
{ CHECKPOINT_I2C44 , " CHECKPOINT_I2C44 " } ,
{ CHECKPOINT_I2C45 , " CHECKPOINT_I2C45 " } ,
{ CHECKPOINT_NVRAM , " CHECKPOINT_NVRAM " } ,
{ CHECKPOINT_SERIAL1 , " CHECKPOINT_SERIAL1 " } ,
{ CHECKPOINT_SERIAL2 , " CHECKPOINT_SERIAL2 " } ,
{ CHECKPOINT_SERIAL3 , " CHECKPOINT_SERIAL3 " } ,
{ CHECKPOINT_WANDERING , " CHECKPOINT_WANDERING " } ,
{ CHECKPOINT_STRAYHPINT , " CHECKPOINT_STRAYHPINT " } ,
{ CHECKPOINT_STRAYLPINT , " CHECKPOINT_STRAYLPINT " } ,
{ CHECKPOINT_TESTWDT , " CHECKPOINT_TESTWDT " } ,
{ CHECKPOINT_DPACDEBUG , " CHECKPOINT_DPACDEBUG " } ,
{ 0 , NULL }
} ;
static const value_string r3_checksumresultnames [ ] =
{
{ CHECKSUMRESULT_CONFIGURATIONNVRAM , " CHECKSUMRESULT_CONFIGURATIONNVRAM " } ,
{ CHECKSUMRESULT_EXCEPTIONS , " CHECKSUMRESULT_EXCEPTIONS " } ,
{ CHECKSUMRESULT_EXCEPTIONGROUPS , " CHECKSUMRESULT_EXCEPTIONGROUPS " } ,
{ CHECKSUMRESULT_TZCALENDARS , " CHECKSUMRESULT_TZCALENDARS " } ,
{ CHECKSUMRESULT_TIMEZONES , " CHECKSUMRESULT_TIMEZONES " } ,
{ CHECKSUMRESULT_USERS , " CHECKSUMRESULT_USERS " } ,
{ CHECKSUMRESULT_CACHELRU , " CHECKSUMRESULT_CACHELRU " } ,
{ 0 , NULL }
} ;
static const value_string r3_cmdnames [ ] =
{
{ CMD_RESPONSE , " CMD_RESPONSE " } ,
{ CMD_HANDSHAKE , " CMD_HANDSHAKE " } ,
{ CMD_KILLSESSION , " CMD_KILLSESSION " } ,
{ CMD_QUERYSERIALNUMBER , " CMD_QUERYSERIALNUMBER " } ,
{ CMD_QUERYVERSION , " CMD_QUERYVERSION " } ,
{ CMD_SETDATETIME , " CMD_SETDATETIME " } ,
{ CMD_QUERYDATETIME , " CMD_QUERYDATETIME " } ,
{ CMD_SETCONFIG , " CMD_SETCONFIG " } ,
{ CMD_GETCONFIG , " CMD_GETCONFIG " } ,
{ CMD_MANAGEUSER , " CMD_MANAGEUSER " } ,
{ CMD_DELETEUSERS , " CMD_DELETEUSERS " } ,
{ CMD_DEFINEEXCEPTION , " CMD_DEFINEEXCEPTION " } ,
{ CMD_DEFINEEXCEPTIONGROUP , " CMD_DEFINEEXCEPTIONGROUP " } ,
{ CMD_DEFINECALENDAR , " CMD_DEFINECALENDAR " } ,
{ CMD_DEFINETIMEZONE , " CMD_DEFINETIMEZONE " } ,
{ CMD_RMTAUTHRETRY , " CMD_RMTAUTHRETRY " } ,
{ CMD_FILTERS , " CMD_FILTERS " } ,
{ CMD_ALARMCONFIGURE , " CMD_ALARMCONFIGURE " } ,
{ CMD_EVENTLOGDUMP , " CMD_EVENTLOGDUMP " } ,
{ CMD_DECLINEDLOGDUMP , " CMD_DECLINEDLOGDUMP " } ,
{ CMD_ALARMLOGDUMP , " CMD_ALARMLOGDUMP " } ,
{ CMD_DOWNLOADFIRMWARE , " CMD_DOWNLOADFIRMWARE " } ,
{ CMD_DOWNLOADFIRMWARETIMEOUT , " CMD_DOWNLOADFIRMWARETIMEOUT " } ,
{ CMD_POWERTABLESELECTION , " CMD_POWERTABLESELECTION " } ,
{ CMD_CLEARNVRAM , " CMD_CLEARNVRAM " } ,
{ CMD_DPAC , " CMD_DPAC " } ,
{ CMD_SELFTEST , " CMD_SELFTEST " } ,
{ CMD_RESET , " CMD_RESET " } ,
{ CMD_LOGWRITE , " CMD_LOGWRITE " } ,
{ CMD_MFGCOMMAND , " CMD_MFGCOMMAND " } ,
{ CMD_NVRAMBACKUP , " CMD_NVRAMBACKUP " } ,
{ CMD_EXTENDEDRESPONSE , " CMD_EXTENDEDRESPONSE " } ,
{ 0 , NULL }
} ;
static const value_string r3_cmdmfgnames [ ] =
{
{ CMDMFG_SETSERIALNUMBER , " CMDMFG_SETSERIALNUMBER " } ,
{ CMDMFG_SETCRYPTKEY , " CMDMFG_SETCRYPTKEY " } ,
{ CMDMFG_DUMPNVRAM , " CMDMFG_DUMPNVRAM " } ,
{ CMDMFG_TERMINAL , " CMDMFG_TERMINAL " } ,
{ CMDMFG_REMOTEUNLOCK , " CMDMFG_REMOTEUNLOCK " } ,
{ CMDMFG_AUXCTLRVERSION , " CMDMFG_AUXCTLRVERSION " } ,
{ CMDMFG_IOPINS , " CMDMFG_IOPINS " } ,
{ CMDMFG_ADCS , " CMDMFG_ADCS " } ,
{ CMDMFG_HARDWAREID , " CMDMFG_HARDWAREID " } ,
{ CMDMFG_CHECKPOINTLOGDUMP , " CMDMFG_CHECKPOINTLOGDUMP " } ,
{ CMDMFG_CHECKPOINTLOGCLEAR , " CMDMFG_CHECKPOINTLOGCLEAR " } ,
{ CMDMFG_READREGISTERS , " CMDMFG_READREGISTERS " } ,
{ CMDMFG_FORCEOPTIONS , " CMDMFG_FORCEOPTIONS " } ,
{ CMDMFG_COMMUSER , " CMDMFG_COMMUSER " } ,
{ CMDMFG_DUMPKEYPAD , " CMDMFG_DUMPKEYPAD " } ,
{ CMDMFG_BATTERYCHECK , " CMDMFG_BATTERYCHECK " } ,
{ CMDMFG_RAMREFRESH , " CMDMFG_RAMREFRESH " } ,
{ CMDMFG_TASKFLAGS , " CMDMFG_TASKFLAGS " } ,
{ CMDMFG_TIMERCHAIN , " CMDMFG_TIMERCHAIN " } ,
{ CMDMFG_PEEKPOKE , " CMDMFG_PEEKPOKE " } ,
{ CMDMFG_LOCKSTATE , " CMDMFG_LOCKSTATE " } ,
{ CMDMFG_CAPABILITIES , " CMDMFG_CAPABILITIES " } ,
{ CMDMFG_DUMPM41T81 , " CMDMFG_DUMPM41T81 " } ,
{ CMDMFG_DEBUGLOGDUMP , " CMDMFG_DEBUGLOGDUMP " } ,
{ CMDMFG_DEBUGLOGCLEAR , " CMDMFG_DEBUGLOGCLEAR " } ,
{ CMDMFG_TESTWDT , " CMDMFG_TESTWDT " } ,
{ CMDMFG_QUERYCKSUM , " CMDMFG_QUERYCKSUM " } ,
{ CMDMFG_VALIDATECHECKSUMS , " CMDMFG_VALIDATECHECKSUMS " } ,
{ CMDMFG_REBUILDLRUCACHE , " CMDMFG_REBUILDLRUCACHE " } ,
{ CMDMFG_TZUPDATE , " CMDMFG_TZUPDATE " } ,
{ CMDMFG_TESTPRESERVE , " CMDMFG_TESTPRESERVE " } ,
{ CMDMFG_MORTISESTATELOGDUMP , " CMDMFG_MORTISESTATELOGDUMP " } ,
{ CMDMFG_MORTISESTATELOGCLEAR , " CMDMFG_MORTISESTATELOGCLEAR " } ,
{ CMDMFG_MORTISEPINS , " CMDMFG_MORTISEPINS " } ,
{ CMDMFG_HALTANDCATCHFIRE , " CMDMFG_HALTANDCATCHFIRE " } ,
{ 0 , NULL }
} ;
static const value_string r3_configitemnames [ ] =
{
{ CONFIGITEM_SERIAL_NUMBER , " CONFIGITEM_SERIAL_NUMBER " } ,
{ CONFIGITEM_CRYPT_KEY , " CONFIGITEM_CRYPT_KEY " } ,
{ CONFIGITEM_HARDWARE_OPTIONS_MFG , " CONFIGITEM_HARDWARE_OPTIONS_MFG " } ,
{ CONFIGITEM_HARDWARE_OPTIONS , " CONFIGITEM_HARDWARE_OPTIONS " } ,
{ CONFIGITEM_NVRAM_CHANGES , " CONFIGITEM_NVRAM_CHANGES " } ,
{ CONFIGITEM_NVRAMDIRTY , " CONFIGITEM_NVRAMDIRTY " } ,
{ CONFIGITEM_NVRAM_WV , " CONFIGITEM_NVRAM_WV " } ,
{ CONFIGITEM_ENABLE_WDT , " CONFIGITEM_ENABLE_WDT " } ,
{ CONFIGITEM_EARLY_ACK , " CONFIGITEM_EARLY_ACK " } ,
{ CONFIGITEM_CONSOLE_AES_ONLY , " CONFIGITEM_CONSOLE_AES_ONLY " } ,
{ CONFIGITEM_RADIO_AES_ONLY , " CONFIGITEM_RADIO_AES_ONLY " } ,
{ CONFIGITEM_NDRLE , " CONFIGITEM_NDRLE " } ,
{ CONFIGITEM_SOMF , " CONFIGITEM_SOMF " } ,
{ CONFIGITEM_NOGAF , " CONFIGITEM_NOGAF " } ,
{ CONFIGITEM_CARD_READER_POWER , " CONFIGITEM_CARD_READER_POWER " } ,
{ CONFIGITEM_PROX_ENABLE , " CONFIGITEM_PROX_ENABLE " } ,
{ CONFIGITEM_CKSUMCONFIG , " CONFIGITEM_CKSUMCONFIG " } ,
{ CONFIGITEM_DAILY_BATTERY_CHECK , " CONFIGITEM_DAILY_BATTERY_CHECK " } ,
{ CONFIGITEM_DAILY_BATTERY_CHECK_HOUR , " CONFIGITEM_DAILY_BATTERY_CHECK_HOUR " } ,
{ CONFIGITEM_BATTERY_LOW , " CONFIGITEM_BATTERY_LOW " } ,
{ CONFIGITEM_LRU_HEAD , " CONFIGITEM_LRU_HEAD " } ,
{ CONFIGITEM_LRU_TAIL , " CONFIGITEM_LRU_TAIL " } ,
{ CONFIGITEM_RTC_CALIBRATION , " CONFIGITEM_RTC_CALIBRATION " } ,
{ CONFIGITEM_ACVREQUESTER , " CONFIGITEM_ACVREQUESTER " } ,
{ CONFIGITEM_LOCAL_LED , " CONFIGITEM_LOCAL_LED " } ,
{ CONFIGITEM_ERRCNT_XORLEN , " CONFIGITEM_ERRCNT_XORLEN " } ,
{ CONFIGITEM_ERRCNT_CRC , " CONFIGITEM_ERRCNT_CRC " } ,
{ CONFIGITEM_ERRCNT_NOTSIGIL , " CONFIGITEM_ERRCNT_NOTSIGIL " } ,
{ CONFIGITEM_ERRCNT_TIMEOUT , " CONFIGITEM_ERRCNT_TIMEOUT " } ,
{ CONFIGITEM_ERRCNT_TOOLONG , " CONFIGITEM_ERRCNT_TOOLONG " } ,
{ CONFIGITEM_ERRCNT_TOOSHORT , " CONFIGITEM_ERRCNT_TOOSHORT " } ,
{ CONFIGITEM_ERRCNT_HITDEFAULT , " CONFIGITEM_ERRCNT_HITDEFAULT " } ,
{ CONFIGITEM_ERRCNT_OVERRUN , " CONFIGITEM_ERRCNT_OVERRUN " } ,
{ CONFIGITEM_ERRCNT_UARTFE , " CONFIGITEM_ERRCNT_UARTFE " } ,
{ CONFIGITEM_ERRCNT_UARTOE , " CONFIGITEM_ERRCNT_UARTOE " } ,
{ CONFIGITEM_DST_SET , " CONFIGITEM_DST_SET " } ,
{ CONFIGITEM_DST_MODE , " CONFIGITEM_DST_MODE " } ,
{ CONFIGITEM_DST_FORWARD_MONTH , " CONFIGITEM_DST_FORWARD_MONTH " } ,
{ CONFIGITEM_DST_FORWARD_DOM , " CONFIGITEM_DST_FORWARD_DOM " } ,
{ CONFIGITEM_DST_FORWARD_OOD , " CONFIGITEM_DST_FORWARD_OOD " } ,
{ CONFIGITEM_DST_FORWARD_DOW , " CONFIGITEM_DST_FORWARD_DOW " } ,
{ CONFIGITEM_DST_FORWARD_HOUR , " CONFIGITEM_DST_FORWARD_HOUR " } ,
{ CONFIGITEM_DST_FORWARD_MINUTE , " CONFIGITEM_DST_FORWARD_MINUTE " } ,
{ CONFIGITEM_DST_FORWARD_ADJUST , " CONFIGITEM_DST_FORWARD_ADJUST " } ,
{ CONFIGITEM_DST_BACK_MONTH , " CONFIGITEM_DST_BACK_MONTH " } ,
{ CONFIGITEM_DST_BACK_DOM , " CONFIGITEM_DST_BACK_DOM " } ,
{ CONFIGITEM_DST_BACK_OOD , " CONFIGITEM_DST_BACK_OOD " } ,
{ CONFIGITEM_DST_BACK_DOW , " CONFIGITEM_DST_BACK_DOW " } ,
{ CONFIGITEM_DST_BACK_HOUR , " CONFIGITEM_DST_BACK_HOUR " } ,
{ CONFIGITEM_DST_BACK_MINUTE , " CONFIGITEM_DST_BACK_MINUTE " } ,
{ CONFIGITEM_DST_BACK_ADJUST , " CONFIGITEM_DST_BACK_ADJUST " } ,
{ CONFIGITEM_EVENTLOG_ZEROMEM , " CONFIGITEM_EVENTLOG_ZEROMEM " } ,
{ CONFIGITEM_EVENTLOG_BEGIN , " CONFIGITEM_EVENTLOG_BEGIN " } ,
{ CONFIGITEM_EVENTLOG_RECORD , " CONFIGITEM_EVENTLOG_RECORD " } ,
{ CONFIGITEM_EVENTLOG_ENTRIES , " CONFIGITEM_EVENTLOG_ENTRIES " } ,
{ CONFIGITEM_EVENTLOG_WARNDEVICE , " CONFIGITEM_EVENTLOG_WARNDEVICE " } ,
{ CONFIGITEM_EVENTLOG_WARNEVERY , " CONFIGITEM_EVENTLOG_WARNEVERY " } ,
{ CONFIGITEM_EVENTLOG_RMTDEVICE , " CONFIGITEM_EVENTLOG_RMTDEVICE " } ,
{ CONFIGITEM_DECLINEDLOG_ZEROMEM , " CONFIGITEM_DECLINEDLOG_ZEROMEM " } ,
{ CONFIGITEM_DECLINEDLOG_BEGIN , " CONFIGITEM_DECLINEDLOG_BEGIN " } ,
{ CONFIGITEM_DECLINEDLOG_RECORD , " CONFIGITEM_DECLINEDLOG_RECORD " } ,
{ CONFIGITEM_DECLINEDLOG_ENTRIES , " CONFIGITEM_DECLINEDLOG_ENTRIES " } ,
{ CONFIGITEM_DECLINEDLOG_WARNDEVICE , " CONFIGITEM_DECLINEDLOG_WARNDEVICE " } ,
{ CONFIGITEM_DECLINEDLOG_WARNEVERY , " CONFIGITEM_DECLINEDLOG_WARNEVERY " } ,
{ CONFIGITEM_DECLINEDLOG_RMTDEVICE , " CONFIGITEM_DECLINEDLOG_RMTDEVICE " } ,
{ CONFIGITEM_ALARMLOG_ZEROMEM , " CONFIGITEM_ALARMLOG_ZEROMEM " } ,
{ CONFIGITEM_ALARMLOG_BEGIN , " CONFIGITEM_ALARMLOG_BEGIN " } ,
{ CONFIGITEM_ALARMLOG_RECORD , " CONFIGITEM_ALARMLOG_RECORD " } ,
{ CONFIGITEM_ALARMLOG_ENTRIES , " CONFIGITEM_ALARMLOG_ENTRIES " } ,
{ CONFIGITEM_ALARMLOG_WARNDEVICE , " CONFIGITEM_ALARMLOG_WARNDEVICE " } ,
{ CONFIGITEM_ALARMLOG_WARNEVERY , " CONFIGITEM_ALARMLOG_WARNEVERY " } ,
{ CONFIGITEM_ALARMLOG_RMTDEVICE , " CONFIGITEM_ALARMLOG_RMTDEVICE " } ,
{ CONFIGITEM_VISIBLE_FEEDBACK , " CONFIGITEM_VISIBLE_FEEDBACK " } ,
{ CONFIGITEM_AUDIBLE_FEEDBACK , " CONFIGITEM_AUDIBLE_FEEDBACK " } ,
{ CONFIGITEM_VISIBLE_INDICATORS , " CONFIGITEM_VISIBLE_INDICATORS " } ,
{ CONFIGITEM_AUDIBLE_INDICATORS , " CONFIGITEM_AUDIBLE_INDICATORS " } ,
{ CONFIGITEM_2NDPINDURATION , " CONFIGITEM_2NDPINDURATION " } ,
{ CONFIGITEM_LOCKOUT_ATTEMPTS , " CONFIGITEM_LOCKOUT_ATTEMPTS " } ,
{ CONFIGITEM_LOCKOUT_DURATION , " CONFIGITEM_LOCKOUT_DURATION " } ,
{ CONFIGITEM_KEYPAD_INACTIVITY , " CONFIGITEM_KEYPAD_INACTIVITY " } ,
{ CONFIGITEM_ICIDLE_DURATION , " CONFIGITEM_ICIDLE_DURATION " } ,
{ CONFIGITEM_WRITE_DECLINED_LOG , " CONFIGITEM_WRITE_DECLINED_LOG " } ,
{ CONFIGITEM_LOW_BATTERY_INDICATOR , " CONFIGITEM_LOW_BATTERY_INDICATOR " } ,
{ CONFIGITEM_PANIC_MODE , " CONFIGITEM_PANIC_MODE " } ,
{ CONFIGITEM_TIMEZONE_ENABLE , " CONFIGITEM_TIMEZONE_ENABLE " } ,
{ CONFIGITEM_EXCEPTION_ENABLE , " CONFIGITEM_EXCEPTION_ENABLE " } ,
{ CONFIGITEM_AUTOUNLOCK_ENABLE , " CONFIGITEM_AUTOUNLOCK_ENABLE " } ,
{ CONFIGITEM_LOCK_PRIORITY_EMERGENCY , " CONFIGITEM_LOCK_PRIORITY_EMERGENCY " } ,
{ CONFIGITEM_LOCK_PRIORITY_SUPERVISOR , " CONFIGITEM_LOCK_PRIORITY_SUPERVISOR " } ,
{ CONFIGITEM_LOCK_PRIORITY_USER , " CONFIGITEM_LOCK_PRIORITY_USER " } ,
{ CONFIGITEM_LOCK_PRIORITY_PASSAGE , " CONFIGITEM_LOCK_PRIORITY_PASSAGE " } ,
{ CONFIGITEM_LOCK_PRIORITY_PANIC , " CONFIGITEM_LOCK_PRIORITY_PANIC " } ,
{ CONFIGITEM_LOCK_PRIORITY_LOCKOUT , " CONFIGITEM_LOCK_PRIORITY_LOCKOUT " } ,
{ CONFIGITEM_LOCK_PRIORITY_RELOCK , " CONFIGITEM_LOCK_PRIORITY_RELOCK " } ,
{ CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN , " CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN " } ,
{ CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE , " CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE " } ,
{ CONFIGITEM_LOCK_PRIORITY_REMOTE , " CONFIGITEM_LOCK_PRIORITY_REMOTE " } ,
{ CONFIGITEM_LOCK_TYPE , " CONFIGITEM_LOCK_TYPE " } ,
{ CONFIGITEM_DOUBLE_PULSE , " CONFIGITEM_DOUBLE_PULSE " } ,
{ CONFIGITEM_DOUBLE_DELAY , " CONFIGITEM_DOUBLE_DELAY " } ,
{ CONFIGITEM_MOTOR_DURATION , " CONFIGITEM_MOTOR_DURATION " } ,
{ CONFIGITEM_MORTISE_TYPE , " CONFIGITEM_MORTISE_TYPE " } ,
{ CONFIGITEM_UNLOCK_TIME , " CONFIGITEM_UNLOCK_TIME " } ,
{ CONFIGITEM_EXT_UNLOCK_TIME , " CONFIGITEM_EXT_UNLOCK_TIME " } ,
{ CONFIGITEM_DOOR_AJAR_TIME , " CONFIGITEM_DOOR_AJAR_TIME " } ,
{ CONFIGITEM_SESSION_TIMEOUT , " CONFIGITEM_SESSION_TIMEOUT " } ,
{ CONFIGITEM_RETRY_ON_TIMEOUT , " CONFIGITEM_RETRY_ON_TIMEOUT " } ,
{ CONFIGITEM_UNSOLICITED_ENCRYPT , " CONFIGITEM_UNSOLICITED_ENCRYPT " } ,
{ CONFIGITEM_RMT_AUTH_TIMEOUT , " CONFIGITEM_RMT_AUTH_TIMEOUT " } ,
{ CONFIGITEM_RMT_AUTH_DEVICE , " CONFIGITEM_RMT_AUTH_DEVICE " } ,
{ CONFIGITEM_ALARM_DEVICE , " CONFIGITEM_ALARM_DEVICE " } ,
{ CONFIGITEM_NOTIFY_DEVICE , " CONFIGITEM_NOTIFY_DEVICE " } ,
{ CONFIGITEM_COMMUSER_DEVICE , " CONFIGITEM_COMMUSER_DEVICE " } ,
{ CONFIGITEM_SCHEDULER_DEVICE , " CONFIGITEM_SCHEDULER_DEVICE " } ,
{ CONFIGITEM_SCHEDULER_TYPE , " CONFIGITEM_SCHEDULER_TYPE " } ,
{ CONFIGITEM_SCHEDULER_AWAKE , " CONFIGITEM_SCHEDULER_AWAKE " } ,
{ CONFIGITEM_SCHEDULER_PERIOD , " CONFIGITEM_SCHEDULER_PERIOD " } ,
{ CONFIGITEM_SCHEDULER_HOD , " CONFIGITEM_SCHEDULER_HOD " } ,
{ CONFIGITEM_SCHEDULER_DOW , " CONFIGITEM_SCHEDULER_DOW " } ,
{ CONFIGITEM_SCHEDULER_DOM , " CONFIGITEM_SCHEDULER_DOM " } ,
{ CONFIGITEM_SCHEDULER_HM1 , " CONFIGITEM_SCHEDULER_HM1 " } ,
{ CONFIGITEM_SCHEDULER_HM2 , " CONFIGITEM_SCHEDULER_HM2 " } ,
{ CONFIGITEM_SCHEDULER_HM3 , " CONFIGITEM_SCHEDULER_HM3 " } ,
{ CONFIGITEM_SCHEDULER_HM4 , " CONFIGITEM_SCHEDULER_HM4 " } ,
{ CONFIGITEM_RADIO_TYPE , " CONFIGITEM_RADIO_TYPE " } ,
{ CONFIGITEM_RADIO_MODE , " CONFIGITEM_RADIO_MODE " } ,
{ CONFIGITEM_RADIO_TIMEOUT , " CONFIGITEM_RADIO_TIMEOUT " } ,
{ CONFIGITEM_RADIO_ATTEMPTS , " CONFIGITEM_RADIO_ATTEMPTS " } ,
{ CONFIGITEM_RADIO_HOUSEKEEPING , " CONFIGITEM_RADIO_HOUSEKEEPING " } ,
{ CONFIGITEM_RADIO_LEAPUSERNAME , " CONFIGITEM_RADIO_LEAPUSERNAME " } ,
{ CONFIGITEM_RADIO_LEAPPASSWORD , " CONFIGITEM_RADIO_LEAPPASSWORD " } ,
{ CONFIGITEM_INHIBIT_VOLTAGE , " CONFIGITEM_INHIBIT_VOLTAGE " } ,
{ CONFIGITEM_LOW_VOLTAGE , " CONFIGITEM_LOW_VOLTAGE " } ,
{ CONFIGITEM_PT_RANGE_1 , " CONFIGITEM_PT_RANGE_1 " } ,
{ CONFIGITEM_PT_RANGE_2 , " CONFIGITEM_PT_RANGE_2 " } ,
{ CONFIGITEM_PT_RANGE_3 , " CONFIGITEM_PT_RANGE_3 " } ,
{ CONFIGITEM_PT_RANGE_4 , " CONFIGITEM_PT_RANGE_4 " } ,
{ CONFIGITEM_PT_RANGE_5 , " CONFIGITEM_PT_RANGE_5 " } ,
{ CONFIGITEM_PT_RANGE_6 , " CONFIGITEM_PT_RANGE_6 " } ,
{ CONFIGITEM_PT_RANGE_7 , " CONFIGITEM_PT_RANGE_7 " } ,
{ CONFIGITEM_PT_RANGE_8 , " CONFIGITEM_PT_RANGE_8 " } ,
{ CONFIGITEM_MAGCARD_IFS , " CONFIGITEM_MAGCARD_IFS " } ,
{ CONFIGITEM_MAGCARD_FIELDS , " CONFIGITEM_MAGCARD_FIELDS " } ,
{ CONFIGITEM_MAGCARD_OFFSET , " CONFIGITEM_MAGCARD_OFFSET " } ,
{ CONFIGITEM_MAGCARD_DIGITS , " CONFIGITEM_MAGCARD_DIGITS " } ,
{ CONFIGITEM_ALARMS , " CONFIGITEM_ALARMS " } ,
{ CONFIGITEM_FILTERS , " CONFIGITEM_FILTERS " } ,
{ CONFIGITEM_ALARMSTATE , " CONFIGITEM_ALARMSTATE " } ,
{ CONFIGITEM_DOORSTATE , " CONFIGITEM_DOORSTATE " } ,
{ CONFIGITEM_DPACDEBUG , " CONFIGITEM_DPACDEBUG " } ,
{ CONFIGITEM_FAILOPENSECURE , " CONFIGITEM_FAILOPENSECURE " } ,
{ CONFIGITEM_REPLACED_VOLTAGE , " CONFIGITEM_REPLACED_VOLTAGE " } ,
{ CONFIGITEM_RX_HELD_TIME , " CONFIGITEM_RX_HELD_TIME " } ,
{ CONFIGITEM_PACKET_TIMEOUT , " CONFIGITEM_PACKET_TIMEOUT " } ,
{ CONFIGITEM_EXTENDEDRESPONSE , " CONFIGITEM_EXTENDEDRESPONSE " } ,
{ CONFIGITEM_PASSAGEMODEINDICATOR , " CONFIGITEM_PASSAGEMODEINDICATOR " } ,
{ CONFIGITEM_PFMRETURNTIME , " CONFIGITEM_PFMRETURNTIME " } ,
{ 0 , NULL }
} ;
static const value_string r3_configtypenames [ ] =
{
{ CONFIGTYPE_NONE , " CONFIGTYPE_NONE " } ,
{ CONFIGTYPE_BOOL , " CONFIGTYPE_BOOL " } ,
{ CONFIGTYPE_8 , " CONFIGTYPE_8 " } ,
{ CONFIGTYPE_16 , " CONFIGTYPE_16 " } ,
{ CONFIGTYPE_32 , " CONFIGTYPE_32 " } ,
{ CONFIGTYPE_STRING , " CONFIGTYPE_STRING " } ,
{ 0 , NULL }
} ;
static const value_string r3_dispositionnames [ ] =
{
{ DISPOSITION_ADD , " DISPOSITION_ADD " } ,
{ DISPOSITION_REPLACE , " DISPOSITION_REPLACE " } ,
{ DISPOSITION_UPDATE , " DISPOSITION_UPDATE " } ,
{ DISPOSITION_DELETE , " DISPOSITION_DELETE " } ,
{ DISPOSITION_RETRIEVE , " DISPOSITION_RETRIEVE " } ,
{ 0 , NULL }
} ;
static const value_string r3_deleteusersnames [ ] =
{
{ DELETEUSERS_ALL , " DELETEUSER_ALL " } ,
{ DELETEUSERS_CACHED , " DELETEUSER_CACHED " } ,
{ 0 , NULL }
} ;
static const value_string r3_downloadfirmwarenames [ ] =
{
{ DOWNLOADFIRMWARE_START , " DOWNLOADFIRMWARE_START " } ,
{ DOWNLOADFIRMWARE_DATA , " DOWNLOADFIRMWARE_DATA " } ,
{ DOWNLOADFIRMWARE_COMPLETE , " DOWNLOADFIRMWARE_COMPLETE " } ,
{ DOWNLOADFIRMWARE_ABORT , " DOWNLOADFIRMWARE_ABORT " } ,
{ DOWNLOADFIRMWARE_RESET , " DOWNLOADFIRMWARE_RESET " } ,
{ 0 , NULL }
} ;
static const value_string r3_encryptionschemenames [ ] =
{
{ ENCRYPTIONSCHEME_NONE , " ENCRYPTIONSCHEME_NONE " } ,
{ ENCRYPTIONSCHEME_ROLLING , " ENCRYPTIONSCHEME_ROLLING " } ,
{ ENCRYPTIONSCHEME_SN , " ENCRYPTIONSCHEME_SN " } ,
{ ENCRYPTIONSCHEME_AESIV , " ENCRYPTIONSCHEME_AESIV " } ,
{ ENCRYPTIONSCHEME_AES , " ENCRYPTIONSCHEME_AES " } ,
{ 0 , NULL }
} ;
static const value_string r3_eventnames [ ] =
{
{ EVENT_INVALIDPIN , " EVENT_INVALIDPIN " } ,
{ EVENT_USER , " EVENT_USER " } ,
{ EVENT_ONETIME , " EVENT_ONETIME " } ,
{ EVENT_PASSAGEBEGIN , " EVENT_PASSAGEBEGIN " } ,
{ EVENT_PASSAGEEND , " EVENT_PASSAGEEND " } ,
{ EVENT_BADTIME , " EVENT_BADTIME " } ,
{ EVENT_LOCKEDOUT , " EVENT_LOCKEDOUT " } ,
{ EVENT_LOWBATTERY , " EVENT_LOWBATTERY " } ,
{ EVENT_DEADBATTERY , " EVENT_DEADBATTERY " } ,
{ EVENT_BATTERYREPLACED , " EVENT_BATTERYREPLACED " } ,
{ EVENT_USERADDED , " EVENT_USERADDED " } ,
{ EVENT_USERDELETED , " EVENT_USERDELETED " } ,
{ EVENT_EMERGENCY , " EVENT_EMERGENCY " } ,
{ EVENT_PANIC , " EVENT_PANIC " } ,
{ EVENT_RELOCK , " EVENT_RELOCK " } ,
{ EVENT_LOCKOUTBEGIN , " EVENT_LOCKOUTBEGIN " } ,
{ EVENT_LOCKOUTEND , " EVENT_LOCKOUTEND " } ,
{ EVENT_RESET , " EVENT_RESET " } ,
{ EVENT_DATETIMESET , " EVENT_DATETIMESET " } ,
{ EVENT_LOGCLEARED , " EVENT_LOGCLEARED " } ,
{ EVENT_DBRESET , " EVENT_DBRESET " } ,
{ EVENT_COMMSTARTED , " EVENT_COMMSTARTED " } ,
{ EVENT_COMMENDED , " EVENT_COMMENDED " } ,
{ EVENT_FIRMWAREABORT , " EVENT_FIRMWAREABORT " } ,
{ EVENT_FIRMWAREERROR , " EVENT_FIRMWAREERROR " } ,
{ EVENT_FIRMWARETIMEOUT , " EVENT_FIRMWARETIMEOUT " } ,
{ EVENT_DSTFALLBACK , " EVENT_DSTFALLBACK " } ,
{ EVENT_DSTSPRINGFORWARD , " EVENT_DSTSPRINGFORWARD " } ,
{ EVENT_BOLTTHROWN , " EVENT_BOLTTHROWN " } ,
{ EVENT_BOLTRETRACTED , " EVENT_BOLTRETRACTED " } ,
{ EVENT_MASTERCODE , " EVENT_MASTERCODE " } ,
{ EVENT_COMMUSER , " EVENT_COMMUSER " } ,
{ EVENT_DPACDISABLED , " EVENT_DPACDISABLED " } ,
{ EVENT_NOTIFY , " EVENT_NOTIFY " } ,
{ EVENT_EXPIRED , " EVENT_EXPIRED " } ,
{ EVENT_SUPERVISOR , " EVENT_SUPERVISOR " } ,
{ EVENT_MCCENTER , " EVENT_MCCENTER " } ,
{ EVENT_MCCEXIT , " EVENT_MCCEXIT " } ,
{ EVENT_SERIALRXOVERRUN , " EVENT_SERIALRXOVERRUN " } ,
{ EVENT_DPACRXOVERRUN , " EVENT_DPACRXOVERRUN " } ,
{ EVENT_NVRAMPBCLEAR , " EVENT_NVRAMPBCLEAR " } ,
{ EVENT_NVRAMLAYOUTCHANGE , " EVENT_NVRAMLAYOUTCHANGE " } ,
{ EVENT_NVRAMOK , " EVENT_NVRAMOK " } ,
{ EVENT_USERREPLACED , " EVENT_USERREPLACED " } ,
{ EVENT_RADIOTIMEOUT , " EVENT_RADIOTIMEOUT " } ,
{ EVENT_SUSPENDEDUSER , " EVENT_SUSPENDEDUSER " } ,
{ EVENT_USERUPDATED , " EVENT_USERUPDATED " } ,
{ EVENT_DOORBOLTED , " EVENT_DOORBOLTED " } ,
{ EVENT_PANICACTIVE , " EVENT_PANICACTIVE " } ,
{ EVENT_PASSAGEACTIVE , " EVENT_PASSAGEACTIVE " } ,
{ EVENT_PASSAGEINACTIVE , " EVENT_PASSAGEINACTIVE " } ,
{ EVENT_BADACCESSMODE , " EVENT_BADACCESSMODE " } ,
{ EVENT_CLOCKERR , " EVENT_CLOCKERR " } ,
{ EVENT_REMOTEUNLOCK , " EVENT_REMOTEUNLOCK " } ,
{ EVENT_TZHAUDISABLED , " EVENT_TZHAUDISABLED " } ,
{ EVENT_EVENTLOGWRAPPED , " EVENT_EVENTLOGWRAPPED " } ,
{ EVENT_DECLINEDLOGWRAPPED , " EVENT_DECLINEDLOGWRAPPED " } ,
{ EVENT_ALARMLOGWRAPPED , " EVENT_ALARMLOGWRAPPED " } ,
{ EVENT_RADIOBUSYEMERGENCY , " EVENT_RADIOBUSYEMERGENCY " } ,
{ EVENT_RADIOBUSYSUPERVISOR , " EVENT_RADIOBUSYSUPERVISOR " } ,
{ EVENT_RADIOBUSYONETIME , " EVENT_RADIOBUSYONETIME " } ,
{ EVENT_RADIOBUSYUSER , " EVENT_RADIOBUSYUSER " } ,
{ EVENT_RADIOBUSYPANIC , " EVENT_RADIOBUSYPANIC " } ,
{ EVENT_RADIOBUSYREX , " EVENT_RADIOBUSYREX " } ,
{ EVENT_RADIOBUSYLOCKOUT , " EVENT_RADIOBUSYLOCKOUT " } ,
{ EVENT_RADIOBUSYRELOCK , " EVENT_RADIOBUSYRELOCK " } ,
{ EVENT_BATTERYCHECKHELDOFF , " EVENT_BATTERYCHECKHELDOFF " } ,
{ EVENT_RMTAUTHREQUEST , " EVENT_RMTAUTHREQUEST " } ,
{ EVENT_FIRMWAREUPDATE , " EVENT_FIRMWAREUPDATE " } ,
{ EVENT_FIRMWAREUPDATEFAILED , " EVENT_FIRMWAREUPDATEFAILED " } ,
{ EVENT_MSMFAILURE , " EVENT_MSMFAILURE " } ,
{ EVENT_CLOCKRESET , " EVENT_CLOCKRESET " } ,
{ EVENT_POWERFAIL , " EVENT_POWERFAIL " } ,
{ EVENT_DPAC501WENTSTUPID , " EVENT_DPAC501WENTSTUPID " } ,
{ EVENT_CHECKSUMCONFIG , " EVENT_CHECKSUMCONFIG " } ,
{ EVENT_CHECKSUMTZ , " EVENT_CHECKSUMTZ " } ,
{ EVENT_DEBUG , " EVENT_DEBUG " } ,
{ 0 , NULL }
} ;
static const value_string r3_fieldtypenames [ ] =
{
{ FIELDTYPE_NONE , " FIELDTYPE_NONE " } ,
{ FIELDTYPE_PIN , " FIELDTYPE_PIN " } ,
{ FIELDTYPE_PROX , " FIELDTYPE_PROX " } ,
{ FIELDTYPE_MAGCARD , " FIELDTYPE_MAGCARD " } ,
{ 0 , NULL }
} ;
static const value_string r3_filtereventnames [ ] =
{
{ EVENT_INVALIDPIN , " EVENT_INVALIDPIN " } ,
{ EVENT_USER , " EVENT_USER " } ,
{ EVENT_ONETIME , " EVENT_ONETIME " } ,
{ EVENT_PASSAGEBEGIN , " EVENT_PASSAGEBEGIN " } ,
{ EVENT_PASSAGEEND , " EVENT_PASSAGEEND " } ,
{ EVENT_BADTIME , " EVENT_BADTIME " } ,
{ EVENT_LOCKEDOUT , " EVENT_LOCKEDOUT " } ,
{ EVENT_LOWBATTERY , " EVENT_LOWBATTERY " } ,
{ EVENT_DEADBATTERY , " EVENT_DEADBATTERY " } ,
{ EVENT_BATTERYREPLACED , " EVENT_BATTERYREPLACED " } ,
{ EVENT_USERADDED , " EVENT_USERADDED " } ,
{ EVENT_USERDELETED , " EVENT_USERDELETED " } ,
{ EVENT_EMERGENCY , " EVENT_EMERGENCY " } ,
{ EVENT_PANIC , " EVENT_PANIC " } ,
{ EVENT_RELOCK , " EVENT_RELOCK " } ,
{ EVENT_LOCKOUTBEGIN , " EVENT_LOCKOUTBEGIN " } ,
{ EVENT_LOCKOUTEND , " EVENT_LOCKOUTEND " } ,
{ EVENT_RESET , " EVENT_RESET " } ,
{ EVENT_DATETIMESET , " EVENT_DATETIMESET " } ,
{ EVENT_LOGCLEARED , " EVENT_LOGCLEARED " } ,
{ EVENT_DBRESET , " EVENT_DBRESET " } ,
{ EVENT_COMMSTARTED , " EVENT_COMMSTARTED " } ,
{ EVENT_COMMENDED , " EVENT_COMMENDED " } ,
{ EVENT_FIRMWAREABORT , " EVENT_FIRMWAREABORT " } ,
{ EVENT_FIRMWAREERROR , " EVENT_FIRMWAREERROR " } ,
{ EVENT_FIRMWARETIMEOUT , " EVENT_FIRMWARETIMEOUT " } ,
{ EVENT_DSTFALLBACK , " EVENT_DSTFALLBACK " } ,
{ EVENT_DSTSPRINGFORWARD , " EVENT_DSTSPRINGFORWARD " } ,
{ EVENT_BOLTTHROWN , " EVENT_BOLTTHROWN " } ,
{ EVENT_BOLTRETRACTED , " EVENT_BOLTRETRACTED " } ,
{ EVENT_MASTERCODE , " EVENT_MASTERCODE " } ,
{ EVENT_COMMUSER , " EVENT_COMMUSER " } ,
{ EVENT_DPACDISABLED , " EVENT_DPACDISABLED " } ,
{ EVENT_NOTIFY , " EVENT_NOTIFY " } ,
{ EVENT_EXPIRED , " EVENT_EXPIRED " } ,
{ EVENT_SUPERVISOR , " EVENT_SUPERVISOR " } ,
{ EVENT_MCCENTER , " EVENT_MCCENTER " } ,
{ EVENT_MCCEXIT , " EVENT_MCCEXIT " } ,
{ EVENT_SERIALRXOVERRUN , " EVENT_SERIALRXOVERRUN " } ,
{ EVENT_DPACRXOVERRUN , " EVENT_DPACRXOVERRUN " } ,
{ EVENT_NVRAMPBCLEAR , " EVENT_NVRAMPBCLEAR " } ,
{ EVENT_NVRAMLAYOUTCHANGE , " EVENT_NVRAMLAYOUTCHANGE " } ,
{ EVENT_NVRAMOK , " EVENT_NVRAMOK " } ,
{ EVENT_USERREPLACED , " EVENT_USERREPLACED " } ,
{ EVENT_RADIOTIMEOUT , " EVENT_RADIOTIMEOUT " } ,
{ EVENT_SUSPENDEDUSER , " EVENT_SUSPENDEDUSER " } ,
{ EVENT_USERUPDATED , " EVENT_USERUPDATED " } ,
{ EVENT_DOORBOLTED , " EVENT_DOORBOLTED " } ,
{ EVENT_PANICACTIVE , " EVENT_PANICACTIVE " } ,
{ EVENT_PASSAGEACTIVE , " EVENT_PASSAGEACTIVE " } ,
{ EVENT_PASSAGEINACTIVE , " EVENT_PASSAGEINACTIVE " } ,
{ EVENT_BADACCESSMODE , " EVENT_BADACCESSMODE " } ,
{ EVENT_CLOCKERR , " EVENT_CLOCKERR " } ,
{ EVENT_REMOTEUNLOCK , " EVENT_REMOTEUNLOCK " } ,
{ EVENT_TZHAUDISABLED , " EVENT_TZHAUDISABLED " } ,
{ EVENT_EVENTLOGWRAPPED , " EVENT_EVENTLOGWRAPPED " } ,
{ EVENT_DECLINEDLOGWRAPPED , " EVENT_DECLINEDLOGWRAPPED " } ,
{ EVENT_ALARMLOGWRAPPED , " EVENT_ALARMLOGWRAPPED " } ,
{ EVENT_RADIOBUSYEMERGENCY , " EVENT_RADIOBUSYEMERGENCY " } ,
{ EVENT_RADIOBUSYSUPERVISOR , " EVENT_RADIOBUSYSUPERVISOR " } ,
{ EVENT_RADIOBUSYONETIME , " EVENT_RADIOBUSYONETIME " } ,
{ EVENT_RADIOBUSYUSER , " EVENT_RADIOBUSYUSER " } ,
{ EVENT_RADIOBUSYPANIC , " EVENT_RADIOBUSYPANIC " } ,
{ EVENT_RADIOBUSYREX , " EVENT_RADIOBUSYREX " } ,
{ EVENT_RADIOBUSYLOCKOUT , " EVENT_RADIOBUSYLOCKOUT " } ,
{ EVENT_RADIOBUSYRELOCK , " EVENT_RADIOBUSYRELOCK " } ,
{ EVENT_BATTERYCHECKHELDOFF , " EVENT_BATTERYCHECKHELDOFF " } ,
{ EVENT_RMTAUTHREQUEST , " EVENT_RMTAUTHREQUEST " } ,
{ EVENT_FIRMWAREUPDATE , " EVENT_FIRMWAREUPDATE " } ,
{ EVENT_FIRMWAREUPDATEFAILED , " EVENT_FIRMWAREUPDATEFAILED " } ,
{ EVENT_MSMFAILURE , " EVENT_MSMFAILURE " } ,
{ EVENT_CLOCKRESET , " EVENT_CLOCKRESET " } ,
{ EVENT_POWERFAIL , " EVENT_POWERFAIL " } ,
{ EVENT_DPAC501WENTSTUPID , " EVENT_DPAC501WENTSTUPID " } ,
{ EVENT_CHECKSUMCONFIG , " EVENT_CHECKSUMCONFIG " } ,
{ EVENT_CHECKSUMTZ , " EVENT_CHECKSUMTZ " } ,
{ EVENT_DEBUG , " EVENT_DEBUG " } ,
{ 0xfe , " (Enable All Filters) " } ,
{ 0xff , " (Disable All Filters) " } ,
{ 0 , NULL }
} ;
static const value_string r3_filtertypenames [ ] =
{
{ FILTERSELECT_RECORDING , " FILTERSELECT_RECORDING " } ,
{ FILTERSELECT_REPORTING , " FILTERSELECT_REPORTING " } ,
{ 0 , NULL }
} ;
static const value_string r3_forceitemnames [ ] =
{
{ FORCEITEM_RADIOPOWER , " FORCEITEM_RADIOPOWER " } ,
{ FORCEITEM_RADIOENABLE , " FORCEITEM_RADIOENABLE " } ,
{ FORCEITEM_LEDRED , " FORCEITEM_LEDRED " } ,
{ FORCEITEM_LEDGREEN , " FORCEITEM_LEDGREEN " } ,
{ FORCEITEM_LEDYELLOW , " FORCEITEM_LEDYELLOW " } ,
{ FORCEITEM_PIEZO , " FORCEITEM_PIEZO " } ,
{ FORCEITEM_MAGPOWER , " FORCEITEM_MAGPOWER " } ,
{ FORCEITEM_MAGLEDA , " FORCEITEM_MAGLEDA " } ,
{ FORCEITEM_MAGLEDB , " FORCEITEM_MAGLEDB " } ,
{ FORCEITEM_PROXPOWER , " FORCEITEM_PROXPOWER " } ,
{ FORCEITEM_PROXPING , " FORCEITEM_PROXPING " } ,
{ FORCEITEM_PROXMODE , " FORCEITEM_PROXMODE " } ,
{ FORCEITEM_I2CPOWER , " FORCEITEM_I2CPOWER " } ,
{ FORCEITEM_MOTORARUN , " FORCEITEM_MOTORARUN " } ,
{ FORCEITEM_MOTORBRUN , " FORCEITEM_MOTORBRUN " } ,
{ FORCEITEM_VMON , " FORCEITEM_VMON " } ,
{ FORCEITEM_PROX , " FORCEITEM_PROX " } ,
{ FORCEITEM_MORTISETEST , " FORCEITEM_MORTISETEST " } ,
{ FORCEITEM_KEYPADTEST , " FORCEITEM_KEYPADTEST " } ,
{ FORCEITEM_MAGTEST , " FORCEITEM_MAGTEST " } ,
{ FORCEITEM_PROXTEST , " FORCEITEM_PROXTEST " } ,
{ 0 , NULL }
} ;
static const value_string r3_mfgfieldnames [ ] =
{
{ MFGFIELD_IOPINS , " MFGFIELD_IOPINS " } ,
{ MFGFIELD_ADCS , " MFGFIELD_ADCS " } ,
{ MFGFIELD_HARDWAREID , " MFGFIELD_HARDWAREID " } ,
{ MFGFIELD_CHECKPOINTLOG , " MFGFIELD_CHECKPOINTLOG " } ,
{ MFGFIELD_CPUREGISTERS , " MFGFIELD_CPUREGISTERS " } ,
{ MFGFIELD_TASKFLAGS , " MFGFIELD_TASKFLAGS " } ,
{ MFGFIELD_TIMERCHAIN , " MFGFIELD_TIMERCHAIN " } ,
{ MFGFIELD_PEEKPOKE , " MFGFIELD_PEEKPOKE " } ,
{ MFGFIELD_LOCKSTATE , " MFGFIELD_LOCKSTATE " } ,
{ MFGFIELD_CAPABILITIES , " MFGFIELD_CAPABILITIES " } ,
{ MFGFIELD_DUMPM41T81 , " MFGFIELD_DUMPM41T81 " } ,
{ MFGFIELD_NVRAMCHECKSUMVALUE , " MFGFIELD_NVRAMCHECKSUMVALUE " } ,
{ MFGFIELD_CHECKSUMRESULTS , " MFGFIELD_CHECKSUMRESULTS " } ,
{ MFGFIELD_MORTISESTATELOG , " MFGFIELD_MORTISESTATELOG " } ,
{ MFGFIELD_MORTISEPINS , " MFGFIELD_MORTISEPINS " } ,
{ MFGFIELD_KEYPADCHAR , " MFGFIELD_KEYPADCHAR " } ,
{ MFGFIELD_MAGCARD , " MFGFIELD_MAGCARD " } ,
{ MFGFIELD_PROXCARD , " MFGFIELD_PROXCARD " } ,
{ 0 , NULL }
} ;
static const value_string r3_mortiseeventnames [ ] =
{
{ MORTISEEVENT_DX_THROWN , " MORTISEEVENT_DX_THROWN " } ,
{ MORTISEEVENT_DX_RETRACTED , " MORTISEEVENT_DX_RETRACTED " } ,
{ MORTISEEVENT_LX_RETRACTED , " MORTISEEVENT_LX_RETRACTED " } ,
{ MORTISEEVENT_LX_EXTENDED , " MORTISEEVENT_LX_EXTENDED " } ,
{ MORTISEEVENT_AX_EXTENDED , " MORTISEEVENT_AX_EXTENDED " } ,
{ MORTISEEVENT_AX_RETRACTED , " MORTISEEVENT_AX_RETRACTED " } ,
{ MORTISEEVENT_RX_DEPRESSED , " MORTISEEVENT_RX_DEPRESSED " } ,
{ MORTISEEVENT_RX_RELEASED , " MORTISEEVENT_RX_RELEASED " } ,
{ MORTISEEVENT_PX_OPEN , " MORTISEEVENT_PX_OPEN " } ,
{ MORTISEEVENT_PX_CLOSED , " MORTISEEVENT_PX_CLOSED " } ,
{ MORTISEEVENT_MX_UNLOCKED , " MORTISEEVENT_MX_UNLOCKED " } ,
{ MORTISEEVENT_MX_LOCKED , " MORTISEEVENT_MX_LOCKED " } ,
{ MORTISEEVENT_LAST , " MORTISEEVENT_LAST " } ,
{ MORTISEEVENT_IGNORE , " MORTISEEVENT_IGNORE " } ,
{ 0 , NULL }
} ;
static const value_string r3_mortisetypenames [ ] =
{
{ MORTISETYPE_NONE , " MORTISETYPE_NONE " } ,
{ MORTISETYPE_S82276 , " MORTISETYPE_S82276 " } ,
{ MORTISETYPE_S82277 , " MORTISETYPE_S82277 " } ,
{ MORTISETYPE_S82278 , " MORTISETYPE_S82278 " } ,
{ MORTISETYPE_S82279 , " MORTISETYPE_S82279 " } ,
{ MORTISETYPE_S10G77 , " MORTISETYPE_S10G77 " } ,
{ MORTISETYPE_S8877 , " MORTISETYPE_S8877 " } ,
{ MORTISETYPE_S8878 , " MORTISETYPE_S8878 " } ,
{ MORTISETYPE_S8977 , " MORTISETYPE_S8977 " } ,
{ MORTISETYPE_S8978 , " MORTISETYPE_S8978 " } ,
{ MORTISETYPE_CRML20x36 , " MORTISETYPE_CRML20x36 " } ,
{ MORTISETYPE_CRML20x35 , " MORTISETYPE_CRML20x35 " } ,
{ MORTISETYPE_CRML20x34 , " MORTISETYPE_CRML20x34 " } ,
{ MORTISETYPE_CRML20x33 , " MORTISETYPE_CRML20x33 " } ,
{ MORTISETYPE_CRCL33x34 , " MORTISETYPE_CRCL33x34 " } ,
{ MORTISETYPE_CR9X34 , " MORTISETYPE_CR9X34 " } ,
{ MORTISETYPE_CR9X33 , " MORTISETYPE_CR9X33 " } ,
{ MORTISETYPE_CR9MX34 , " MORTISETYPE_CR9MX34 " } ,
{ MORTISETYPE_CR9MX33 , " MORTISETYPE_CR9MX33 " } ,
{ 0 , NULL }
} ;
static const value_string r3_peekpokenames [ ] =
{
{ PEEKPOKE_READU8 , " PEEKPOKE_READU8 " } ,
{ PEEKPOKE_READU16 , " PEEKPOKE_READU16 " } ,
{ PEEKPOKE_READU24 , " PEEKPOKE_READU24 " } ,
{ PEEKPOKE_READU32 , " PEEKPOKE_READU32 " } ,
{ PEEKPOKE_READSTRING , " PEEKPOKE_READSTRING " } ,
{ PEEKPOKE_WRITEU8 , " PEEKPOKE_WRITEU8 " } ,
{ PEEKPOKE_WRITEU16 , " PEEKPOKE_WRITEU16 " } ,
{ PEEKPOKE_WRITEU24 , " PEEKPOKE_WRITEU24 " } ,
{ PEEKPOKE_WRITEU32 , " PEEKPOKE_WRITEU32 " } ,
{ PEEKPOKE_WRITESTRING , " PEEKPOKE_WRITESTRING " } ,
{ 0 , NULL }
} ;
static const value_string r3_ppmisourcenames [ ] =
{
{ PPMISOURCE_NONE , " PPMISOURCE_NONE " } ,
{ PPMISOURCE_PIN , " PPMISOURCE_PIN " } ,
{ PPMISOURCE_PROX , " PPMISOURCE_PROX " } ,
{ PPMISOURCE_MAGCARD , " PPMISOURCE_MAGCARD " } ,
{ 0 , NULL }
} ;
static const value_string r3_responsetypenames [ ] =
{
{ RESPONSETYPE_OK , " RESPONSETYPE_OK " } ,
{ RESPONSETYPE_ERROR , " RESPONSETYPE_ERROR " } ,
{ RESPONSETYPE_HASDATA , " RESPONSETYPE_HASDATA " } ,
{ RESPONSETYPE_NOHANDLER , " RESPONSETYPE_NOHANDLER " } ,
{ RESPONSETYPE_NOSESSION , " RESPONSETYPE_NOSESSION " } ,
{ RESPONSETYPE_BADCOMMAND , " RESPONSETYPE_BADCOMMAND " } ,
{ RESPONSETYPE_BADPARAMETER , " RESPONSETYPE_BADPARAMETER " } ,
{ RESPONSETYPE_BADPARAMETERLEN , " RESPONSETYPE_BADPARAMETERLEN " } ,
{ RESPONSETYPE_MISSINGPARAMETER , " RESPONSETYPE_MISSINGPARAMETER " } ,
{ RESPONSETYPE_DUPLICATEPARAMETER , " RESPONSETYPE_DUPLICATEPARAMETER " } ,
{ RESPONSETYPE_PARAMETERCONFLICT , " RESPONSETYPE_PARAMETERCONFLICT " } ,
{ RESPONSETYPE_BADDEVICE , " RESPONSETYPE_BADDEVICE " } ,
{ RESPONSETYPE_NVRAMERROR , " RESPONSETYPE_NVRAMERROR " } ,
{ RESPONSETYPE_NVRAMERRORNOACK , " RESPONSETYPE_NVRAMERRORNOACK " } ,
{ RESPONSETYPE_NVRAMERRORNOACK32 , " RESPONSETYPE_NVRAMERRORNOACK32 " } ,
{ RESPONSETYPE_NOTI2CADDRESS , " RESPONSETYPE_NOTI2CADDRESS " } ,
{ RESPONSETYPE_FIRMWAREERROR , " RESPONSETYPE_FIRMWAREERROR " } ,
{ RESPONSETYPE_DUMPINPROGRESS , " RESPONSETYPE_DUMPINPROGRESS " } ,
{ RESPONSETYPE_INTERNALERROR , " RESPONSETYPE_INTERNALERROR " } ,
{ RESPONSETYPE_NOTIMPLEMENTED , " RESPONSETYPE_NOTIMPLEMENTED " } ,
{ RESPONSETYPE_PINFORMATERROR , " RESPONSETYPE_PINFORMATERROR " } ,
{ RESPONSETYPE_PINEXISTS , " RESPONSETYPE_PINEXISTS " } ,
{ RESPONSETYPE_PINNOTFOUND , " RESPONSETYPE_PINNOTFOUND " } ,
{ RESPONSETYPE_USERACTIVE , " RESPONSETYPE_USERACTIVE " } ,
{ RESPONSETYPE_USERINACTIVE , " RESPONSETYPE_USERINACTIVE " } ,
{ RESPONSETYPE_PARENTNOTFOUND , " RESPONSETYPE_PARENTNOTFOUND " } ,
{ RESPONSETYPE_NOCHAIN , " RESPONSETYPE_NOCHAIN " } ,
{ RESPONSETYPE_CAUGHTINLOOP , " RESPONSETYPE_CAUGHTINLOOP " } ,
{ RESPONSETYPE_EVENTFILTERED , " RESPONSETYPE_EVENTFILTERED " } ,
{ RESPONSETYPE_PAYLOADTOOLARGE , " RESPONSETYPE_PAYLOADTOOLARGE " } ,
{ RESPONSETYPE_ENDOFDATA , " RESPONSETYPE_ENDOFDATA " } ,
{ RESPONSETYPE_RMTAUTHREJECTED , " RESPONSETYPE_RMTAUTHREJECTED " } ,
{ RESPONSETYPE_NVRAMVERSIONERROR , " RESPONSETYPE_NVRAMVERSIONERROR " } ,
{ RESPONSETYPE_NOHARDWARE , " RESPONSETYPE_NOHARDWARE " } ,
{ RESPONSETYPE_SCHEDULERCONFLICT , " RESPONSETYPE_SCHEDULERCONFLICT " } ,
{ RESPONSETYPE_NVRAMWRITEERROR , " RESPONSETYPE_NVRAMWRITEERROR " } ,
{ RESPONSETYPE_DECLINEDFILTERED , " RESPONSETYPE_DECLINEDFILTERED " } ,
{ RESPONSETYPE_NECONFIGPARM , " RESPONSETYPE_NECONFIGPARM " } ,
{ RESPONSETYPE_FLASHERASEERROR , " RESPONSETYPE_FLASHERASEERROR " } ,
{ RESPONSETYPE_FLASHWRITEERROR , " RESPONSETYPE_FLASHWRITEERROR " } ,
{ RESPONSETYPE_BADNVBACKUP , " RESPONSETYPE_BADNVBACKUP " } ,
{ RESPONSETYPE_EARLYACK , " RESPONSETYPE_EARLYACK " } ,
{ RESPONSETYPE_ALARMFILTERED , " RESPONSETYPE_ALARMFILTERED " } ,
{ RESPONSETYPE_ACVFAILURE , " RESPONSETYPE_ACVFAILURE " } ,
{ RESPONSETYPE_USERCHECKSUMERROR , " RESPONSETYPE_USERCHECKSUMERROR " } ,
{ RESPONSETYPE_CHECKSUMERROR , " RESPONSETYPE_CHECKSUMERROR " } ,
{ RESPONSETYPE_RTCSQWFAILURE , " RESPONSETYPE_RTCSQWFAILURE " } ,
{ RESPONSETYPE_PRIORITYSHUTDOWN , " RESPONSETYPE_PRIORITYSHUTDOWN " } ,
{ RESPONSETYPE_NOTMODIFIABLE , " RESPONSETYPE_NOTMODIFIABLE " } ,
{ RESPONSETYPE_CANTPRESERVE , " RESPONSETYPE_CANTPRESERVE " } ,
{ RESPONSETYPE_INPASSAGEMODE , " RESPONSETYPE_INPASSAGEMODE " } ,
{ 0 , NULL }
} ;
static const value_string r3_timezonemodenames [ ] =
{
{ TIMEZONEMODE_NORMAL , " TIMEZONEMODE_NORMAL " } ,
{ TIMEZONEMODE_EXCLUSION , " TIMEZONEMODE_EXCLUSION " } ,
{ TIMEZONEMODE_AUTOTIME , " TIMEZONEMODE_AUTOTIME " } ,
{ TIMEZONEMODE_AUTOFPT , " TIMEZONEMODE_AUTOFPT " } ,
{ TIMEZONEMODE_UAPM , " TIMEZONEMODE_UAPM " } ,
{ 0 , NULL }
} ;
static const value_string r3_upstreamcommandnames [ ] =
{
{ UPSTREAMCOMMAND_RESERVED , " UPSTREAMCOMMAND_RESERVED " } ,
{ UPSTREAMCOMMAND_DEBUGMSG , " UPSTREAMCOMMAND_DEBUGMSG " } ,
{ UPSTREAMCOMMAND_QUERYVERSION , " UPSTREAMCOMMAND_QUERYVERSION " } ,
{ UPSTREAMCOMMAND_QUERYDATETIME , " UPSTREAMCOMMAND_QUERYDATETIME " } ,
{ UPSTREAMCOMMAND_QUERYSERIALNUMBER , " UPSTREAMCOMMAND_QUERYSERIALNUMBER " } ,
{ UPSTREAMCOMMAND_DUMPEVENTLOG , " UPSTREAMCOMMAND_DUMPEVENTLOG " } ,
{ UPSTREAMCOMMAND_DUMPNVRAM , " UPSTREAMCOMMAND_DUMPNVRAM " } ,
{ UPSTREAMCOMMAND_RMTAUTHREQUEST , " UPSTREAMCOMMAND_RMTAUTHREQUEST " } ,
{ UPSTREAMCOMMAND_RETRIEVEUSER , " UPSTREAMCOMMAND_RETRIEVEUSER " } ,
{ UPSTREAMCOMMAND_QUERYCONFIG , " UPSTREAMCOMMAND_QUERYCONFIG " } ,
{ UPSTREAMCOMMAND_RMTEVENTLOGRECORD , " UPSTREAMCOMMAND_RMTEVENTLOGRECORD " } ,
{ UPSTREAMCOMMAND_DPAC , " UPSTREAMCOMMAND_DPAC " } ,
{ UPSTREAMCOMMAND_NOTIFY , " UPSTREAMCOMMAND_NOTIFY " } ,
{ UPSTREAMCOMMAND_MFG , " UPSTREAMCOMMAND_MFG " } ,
{ UPSTREAMCOMMAND_EVENTLOGWARNING , " UPSTREAMCOMMAND_EVENTLOGWARNING " } ,
{ UPSTREAMCOMMAND_DUMPNVRAMRLE , " UPSTREAMCOMMAND_DUMPNVRAMRLE " } ,
{ UPSTREAMCOMMAND_RMTDECLINEDRECORD , " UPSTREAMCOMMAND_RMTDECLINEDRECORD " } ,
{ UPSTREAMCOMMAND_DECLINEDWARNING , " UPSTREAMCOMMAND_DECLINEDWARNING " } ,
{ UPSTREAMCOMMAND_DUMPDECLINEDLOG , " UPSTREAMCOMMAND_DUMPDECLINEDLOG " } ,
{ UPSTREAMCOMMAND_RMTALARMRECORD , " UPSTREAMCOMMAND_RMTALARMRECORD " } ,
{ UPSTREAMCOMMAND_ALARMWARNING , " UPSTREAMCOMMAND_ALARMWARNING " } ,
{ UPSTREAMCOMMAND_DUMPALARMLOG , " UPSTREAMCOMMAND_DUMPALARMLOG " } ,
{ UPSTREAMCOMMAND_CONNECTSCHEDULER , " UPSTREAMCOMMAND_CONNECTSCHEDULER " } ,
{ UPSTREAMCOMMAND_CONNECTCOMMUSER , " UPSTREAMCOMMAND_CONNECTCOMMUSER " } ,
{ UPSTREAMCOMMAND_CONNECTALARM , " UPSTREAMCOMMAND_CONNECTALARM " } ,
{ UPSTREAMCOMMAND_DUMPDEBUGLOG , " UPSTREAMCOMMAND_DUMPDEBUGLOG " } ,
{ 0 , NULL }
} ;
static const value_string r3_upstreamfieldnames [ ] =
{
{ UPSTREAMFIELD_NOTUSED , " UPSTREAMFIELD_NOTUSED " } ,
{ UPSTREAMFIELD_SERIALNUMBER , " UPSTREAMFIELD_SERIALNUMBER " } ,
{ UPSTREAMFIELD_NAR , " UPSTREAMFIELD_NAR " } ,
{ UPSTREAMFIELD_ENTRYDEVICE , " UPSTREAMFIELD_ENTRYDEVICE " } ,
{ UPSTREAMFIELD_PPMIFIELDTYPE , " UPSTREAMFIELD_PPMIFIELDTYPE " } ,
{ UPSTREAMFIELD_PIN , " UPSTREAMFIELD_PIN " } ,
{ UPSTREAMFIELD_SEQUENCENUMBER , " UPSTREAMFIELD_SEQUENCENUMBER " } ,
{ UPSTREAMFIELD_RESPONSEWINDOW , " UPSTREAMFIELD_RESPONSEWINDOW " } ,
{ UPSTREAMFIELD_USERNUMBER , " UPSTREAMFIELD_USERNUMBER " } ,
{ UPSTREAMFIELD_VERSION , " UPSTREAMFIELD_VERSION " } ,
{ UPSTREAMFIELD_EVENTLOGRECORD , " UPSTREAMFIELD_EVENTLOGRECORD " } ,
{ UPSTREAMFIELD_DATETIME , " UPSTREAMFIELD_DATETIME " } ,
{ UPSTREAMFIELD_EVENTLOGRECORDCOUNT , " UPSTREAMFIELD_EVENTLOGRECORDCOUNT " } ,
{ UPSTREAMFIELD_DECLINEDRECORDCOUNT , " UPSTREAMFIELD_DECLINEDRECORDCOUNT " } ,
{ UPSTREAMFIELD_DECLINEDRECORD , " UPSTREAMFIELD_DECLINEDRECORD " } ,
{ UPSTREAMFIELD_USERTYPE , " UPSTREAMFIELD_USERTYPE " } ,
{ UPSTREAMFIELD_ACCESSALWAYS , " UPSTREAMFIELD_ACCESSALWAYS " } ,
{ UPSTREAMFIELD_CACHED , " UPSTREAMFIELD_CACHED " } ,
{ UPSTREAMFIELD_PRIMARYFIELDTYPE , " UPSTREAMFIELD_PRIMARYFIELDTYPE " } ,
{ UPSTREAMFIELD_AUXFIELDTYPE , " UPSTREAMFIELD_AUXFIELDTYPE " } ,
{ UPSTREAMFIELD_ACCESSMODE , " UPSTREAMFIELD_ACCESSMODE " } ,
{ UPSTREAMFIELD_EXPIREON , " UPSTREAMFIELD_EXPIREON " } ,
{ UPSTREAMFIELD_USECOUNT , " UPSTREAMFIELD_USECOUNT " } ,
{ UPSTREAMFIELD_TIMEZONE , " UPSTREAMFIELD_TIMEZONE " } ,
{ UPSTREAMFIELD_EXCEPTIONGROUP , " UPSTREAMFIELD_EXCEPTIONGROUP " } ,
{ UPSTREAMFIELD_PRIMARYPIN , " UPSTREAMFIELD_PRIMARYPIN " } ,
{ UPSTREAMFIELD_AUXPIN , " UPSTREAMFIELD_AUXPIN " } ,
{ UPSTREAMFIELD_ALARMRECORDCOUNT , " UPSTREAMFIELD_ALARMRECORDCOUNT " } ,
{ UPSTREAMFIELD_ALARMRECORD , " UPSTREAMFIELD_ALARMRECORD " } ,
{ UPSTREAMFIELD_AUXCTLRVERSION , " UPSTREAMFIELD_AUXCTLRVERSION " } ,
{ 0 , NULL }
} ;
static const value_string r3_usertypenames [ ] =
{
{ USERTYPE_NONE , " USERTYPE_NONE " } ,
{ USERTYPE_MASTER , " USERTYPE_MASTER " } ,
{ USERTYPE_EMERGENCY , " USERTYPE_EMERGENCY " } ,
{ USERTYPE_SUPERVISOR , " USERTYPE_SUPERVISOR " } ,
{ USERTYPE_USER , " USERTYPE_USER " } ,
{ USERTYPE_EXTENDED , " USERTYPE_EXTENDED " } ,
{ USERTYPE_PASSAGE , " USERTYPE_PASSAGE " } ,
{ USERTYPE_ONETIME , " USERTYPE_ONETIME " } ,
{ USERTYPE_PANIC , " USERTYPE_PANIC " } ,
{ USERTYPE_LOCKOUT , " USERTYPE_LOCKOUT " } ,
{ USERTYPE_RELOCK , " USERTYPE_RELOCK " } ,
{ USERTYPE_NOTIFY , " USERTYPE_NOTIFY " } ,
{ USERTYPE_COMM , " USERTYPE_COMM " } ,
{ USERTYPE_SUSPENDED , " USERTYPE_SUSPENDED " } ,
{ 0 , NULL }
} ;
static const value_string r3_mfgnvramdumpnames [ ] =
{
{ 0 , " All " } ,
{ 1 , " PIC " } ,
{ 2 , " User " } ,
{ 3 , " Event " } ,
{ 0 , NULL }
} ;
static const value_string r3_mfgremoteunlocknames [ ] =
{
{ 0 , " Normal " } ,
{ 1 , " Unlock " } ,
{ 2 , " Lock " } ,
{ 0 , NULL }
} ;
static const value_string r3_mfgtestpreservenames [ ] =
{
{ 0 , " Save " } ,
{ 1 , " Restore " } ,
{ 0 , NULL }
} ;
static const value_string r3_daynames [ ] =
{
{ 0 , " Sunday " } ,
{ 1 , " Monday " } ,
{ 2 , " Tueday " } ,
{ 3 , " Wednesday " } ,
{ 4 , " Thursday " } ,
{ 5 , " Friday " } ,
{ 6 , " Saturday " } ,
{ 0 , NULL }
} ;
static const value_string r3_monthnames [ ] =
{
{ 0 , " ERROR! " } ,
{ 1 , " January " } ,
{ 2 , " February " } ,
{ 3 , " March " } ,
{ 4 , " April " } ,
{ 5 , " May " } ,
{ 6 , " June " } ,
{ 7 , " July " } ,
{ 8 , " August " } ,
{ 9 , " September " } ,
{ 10 , " October " } ,
{ 11 , " November " } ,
{ 12 , " December " } ,
{ 0 , NULL }
} ;
static const value_string r3_monthdaynames [ ] =
{
{ 0 , " ERROR! " } ,
{ 1 , " 1st " } ,
{ 2 , " 2nd " } ,
{ 3 , " 3rd " } ,
{ 4 , " 4th " } ,
{ 5 , " 5th " } ,
{ 6 , " 6th " } ,
{ 7 , " 7th " } ,
{ 8 , " 8th " } ,
{ 9 , " 9th " } ,
{ 10 , " 10th " } ,
{ 11 , " 11th " } ,
{ 12 , " 12th " } ,
{ 13 , " 13th " } ,
{ 14 , " 14th " } ,
{ 15 , " 15th " } ,
{ 16 , " 16th " } ,
{ 17 , " 17th " } ,
{ 18 , " 18th " } ,
{ 19 , " 19th " } ,
{ 20 , " 20th " } ,
{ 21 , " 21st " } ,
{ 22 , " 22nd " } ,
{ 23 , " 23rd " } ,
{ 24 , " 24th " } ,
{ 25 , " 25th " } ,
{ 26 , " 26th " } ,
{ 27 , " 27th " } ,
{ 28 , " 28th " } ,
{ 29 , " 29th " } ,
{ 30 , " 30th " } ,
{ 31 , " 31st " } ,
{ 0 , NULL }
} ;
static const value_string r3_powertablenames [ ] =
{
{ 1 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8} " } ,
{ 2 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8} " } ,
{ 3 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8} " } ,
{ 4 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {12, 11, 11, 10, 10, 9, 9, 8} " } ,
{ 5 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {13, 12, 12, 11, 11, 10, 10, 9} " } ,
{ 6 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {14, 13, 13, 12, 12, 11, 11, 10} " } ,
{ 7 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {15, 14, 14, 13, 13, 12, 12, 11} " } ,
{ 8 , " CONFIGITEM_PT_RANGE_1..CONFIGITEM_PT_RANGE_8 = {16, 15, 15, 14, 14, 13, 13, 12} " } ,
{ 0 , NULL }
} ;
static const true_false_string tfs_rmtauthretry_flags =
{
" Retry " ,
" Deny "
} ;
static const true_false_string tfs_mortisepins_flags =
{
" High " ,
" Low "
} ;
static const true_false_string tfs_errornoerror_flags =
{
" Error " ,
" No Error "
} ;
static const string_string r3_snmanufacturernames [ ] =
{
{ " IT " , " ITS " } ,
{ " KC " , " Kimchuk " } ,
{ NULL , NULL }
} ;
static const string_string r3_snyearnames [ ] =
{
{ " 5 " , " 2005 " } ,
{ " 6 " , " 2006 " } ,
{ " 7 " , " 2007 " } ,
{ " 8 " , " 2008 " } ,
{ " 9 " , " 2009 " } ,
{ " 0 " , " 2010 " } ,
{ " 1 " , " 2011 " } ,
{ " 2 " , " 2012 " } ,
{ " 3 " , " 2013 " } ,
{ " 4 " , " 2014 " } ,
{ NULL , NULL }
} ;
static const string_string r3_snmodelnames [ ] =
{
{ " H " , " Sx controller " } ,
{ " J " , " Px controller " } ,
{ " D " , " PG offline interface board " } ,
{ " E " , " Px online interface board " } ,
{ " N " , " Ethernet-PD board " } ,
{ " O " , " CAM board " } ,
{ NULL , NULL }
} ;
static const string_string r3_sngroupnames [ ] =
{
{ " S " , " Sargent " } ,
{ " P " , " Persona " } ,
{ " C " , " Corbin-Russwin " } ,
{ NULL , NULL }
} ;
static const string_string r3_snnidnames [ ] =
{
{ " A " , " Ethernet " } ,
{ " B " , " DPAC 802.11b " } ,
{ " C " , " DPAC 802.11bg " } ,
{ " D " , " Zigbee " } ,
{ " E " , " GPRS " } ,
{ NULL , NULL }
} ;
static const string_string r3_snhidnames [ ] =
{
{ " 00 " , " [None] " } ,
{ " 01 " , " Keypad " } ,
{ " 02 " , " eProx " } ,
{ " 03 " , " eProx, Keypad " } ,
{ " 04 " , " iProx " } ,
{ " 05 " , " iProx, Keypad " } ,
{ " 06 " , " iProx, eProx " } ,
{ " 07 " , " iProx, eProx, Keypad " } ,
{ " 08 " , " Mag Card " } ,
{ " 09 " , " Mag Card, Keypad " } ,
{ " 0a " , " Mag Card, eProx " } ,
{ " 0b " , " Mag Card, eProx, Keypad " } ,
{ " 0c " , " Mag Card, iProx " } ,
{ " 0d " , " Mag Card, iProx, Keypad " } ,
{ " 0e " , " Mag Card, iProx, eProx " } ,
{ " 0f " , " Mag Card, iProx, eProx, Keypad " } ,
{ " 10 " , " Biometric " } ,
{ " 11 " , " Biometric, Keypad " } ,
{ " 12 " , " Biometric, eProx " } ,
{ " 13 " , " Biometric, eProx, Keypad " } ,
{ " 14 " , " Biometric, iProx " } ,
{ " 15 " , " Biometric, iProx, Keypad " } ,
{ " 16 " , " Biometric, iProx, eProx " } ,
{ " 17 " , " Biometric, iProx, eProx, Keypad " } ,
{ " 18 " , " Biometric, Mag Card " } ,
{ " 19 " , " Biometric, Mag Card, Keypad " } ,
{ " 1a " , " Biometric, Mag Card, eProx " } ,
{ " 1b " , " Biometric, Mag Card, eProx, Keypad " } ,
{ " 1c " , " Biometric, Mag Card, iProx " } ,
{ " 1d " , " Biometric, Mag Card, iProx, Keypad " } ,
{ " 1e " , " Biometric, Mag Card, iProx, eProx " } ,
{ " 1f " , " Biometric, Mag Card, iProx, eProx, Keypad " } ,
{ NULL , NULL }
} ;
static const string_string r3_snpowersupplynames [ ] =
{
{ " A " , " Batteries " } ,
{ " B " , " External power " } ,
{ " C " , " Power over Ethernet " } ,
{ " D " , " External power w/ backup " } ,
{ " E " , " Power over Ethernet w/ backup " } ,
{ NULL , NULL }
} ;
static const string_string r3_snmortisenames [ ] =
{
{ " A " , " Sargent 82276 mortise " } ,
{ " B " , " Sargent 82277 mortise " } ,
{ " C " , " Sargent 82278 mortise " } ,
{ " D " , " Sargent 82279 mortise " } ,
{ " E " , " Sargent 10G77 bored " } ,
{ " F " , " Sargent 8877 exit " } ,
{ " G " , " Sargent 8878 exit " } ,
{ " H " , " Sargent 8977 exit " } ,
{ " I " , " Sargent 8878 exit " } ,
{ " J " , " Corbin-Russwin ML20736/ML20836 mortise " } ,
{ " K " , " Corbin-Russwin ML20735/ML20835 mortise " } ,
{ " L " , " Corbin-Russwin ML20734/ML20834 mortise " } ,
{ " M " , " Corbin-Russwin ML20733/ML20833 mortise " } ,
{ " N " , " Corbin-Russwin CL33734/CL33834 bored " } ,
{ " O " , " Corbin-Russwin 9734/9834 exit " } ,
{ " P " , " Corbin-Russwin 9733/9833 exit " } ,
{ " Q " , " Corbin-Russwin 9M734/9M834 exit " } ,
{ " R " , " Corbin-Russwin 9M733/9M833 exit " } ,
{ NULL , NULL }
} ;
/*
* Mapping table so dissect_r3_cmd_setconfig ( ) knows what the configuration item type is
*/
typedef struct
{
configItem_e configItem ;
configType_e configType ;
}
configMap_t ;
configMap_t configMap [ ] =
{
{ CONFIGITEM_SERIAL_NUMBER , CONFIGTYPE_STRING } ,
{ CONFIGITEM_CRYPT_KEY , CONFIGTYPE_STRING } ,
{ CONFIGITEM_HARDWARE_OPTIONS_MFG , CONFIGTYPE_16 } ,
{ CONFIGITEM_HARDWARE_OPTIONS , CONFIGTYPE_16 } ,
{ CONFIGITEM_NVRAM_CHANGES , CONFIGTYPE_16 } ,
{ CONFIGITEM_NVRAMDIRTY , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_NVRAM_WV , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_ENABLE_WDT , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_EARLY_ACK , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_CONSOLE_AES_ONLY , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_RADIO_AES_ONLY , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_NDRLE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_SOMF , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_NOGAF , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_CARD_READER_POWER , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_PROX_ENABLE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_CKSUMCONFIG , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_DAILY_BATTERY_CHECK , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_DAILY_BATTERY_CHECK_HOUR , CONFIGTYPE_8 } ,
{ CONFIGITEM_BATTERY_LOW , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_LRU_HEAD , CONFIGTYPE_16 } ,
{ CONFIGITEM_LRU_TAIL , CONFIGTYPE_16 } ,
{ CONFIGITEM_RTC_CALIBRATION , CONFIGTYPE_8 } ,
{ CONFIGITEM_ACVREQUESTER , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCAL_LED , CONFIGTYPE_8 } ,
{ CONFIGITEM_ERRCNT_XORLEN , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_CRC , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_NOTSIGIL , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_TIMEOUT , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_TOOLONG , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_TOOSHORT , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_HITDEFAULT , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_OVERRUN , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_UARTFE , CONFIGTYPE_16 } ,
{ CONFIGITEM_ERRCNT_UARTOE , CONFIGTYPE_16 } ,
{ CONFIGITEM_DST_SET , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_DST_MODE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_MONTH , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_DOM , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_OOD , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_DOW , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_HOUR , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_MINUTE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_FORWARD_ADJUST , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_MONTH , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_DOM , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_OOD , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_DOW , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_HOUR , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_MINUTE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DST_BACK_ADJUST , CONFIGTYPE_8 } ,
{ CONFIGITEM_EVENTLOG_ZEROMEM , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_EVENTLOG_BEGIN , CONFIGTYPE_16 } ,
{ CONFIGITEM_EVENTLOG_RECORD , CONFIGTYPE_16 } ,
{ CONFIGITEM_EVENTLOG_ENTRIES , CONFIGTYPE_16 } ,
{ CONFIGITEM_EVENTLOG_WARNDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_EVENTLOG_WARNEVERY , CONFIGTYPE_16 } ,
{ CONFIGITEM_EVENTLOG_RMTDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DECLINEDLOG_ZEROMEM , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_DECLINEDLOG_BEGIN , CONFIGTYPE_16 } ,
{ CONFIGITEM_DECLINEDLOG_RECORD , CONFIGTYPE_16 } ,
{ CONFIGITEM_DECLINEDLOG_ENTRIES , CONFIGTYPE_16 } ,
{ CONFIGITEM_DECLINEDLOG_WARNDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DECLINEDLOG_WARNEVERY , CONFIGTYPE_16 } ,
{ CONFIGITEM_DECLINEDLOG_RMTDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_ALARMLOG_ZEROMEM , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_ALARMLOG_BEGIN , CONFIGTYPE_16 } ,
{ CONFIGITEM_ALARMLOG_RECORD , CONFIGTYPE_16 } ,
{ CONFIGITEM_ALARMLOG_ENTRIES , CONFIGTYPE_16 } ,
{ CONFIGITEM_ALARMLOG_WARNDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_ALARMLOG_WARNEVERY , CONFIGTYPE_16 } ,
{ CONFIGITEM_ALARMLOG_RMTDEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_VISIBLE_FEEDBACK , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_AUDIBLE_FEEDBACK , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_VISIBLE_INDICATORS , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_AUDIBLE_INDICATORS , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_2NDPINDURATION , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCKOUT_ATTEMPTS , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCKOUT_DURATION , CONFIGTYPE_8 } ,
{ CONFIGITEM_KEYPAD_INACTIVITY , CONFIGTYPE_8 } ,
{ CONFIGITEM_ICIDLE_DURATION , CONFIGTYPE_8 } ,
{ CONFIGITEM_WRITE_DECLINED_LOG , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_LOW_BATTERY_INDICATOR , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_PANIC_MODE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_TIMEZONE_ENABLE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_EXCEPTION_ENABLE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_AUTOUNLOCK_ENABLE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_LOCK_PRIORITY_EMERGENCY , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_SUPERVISOR , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_USER , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_PASSAGE , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_PANIC , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_LOCKOUT , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_RELOCK , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_PRIORITY_REMOTE , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOCK_TYPE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DOUBLE_PULSE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_DOUBLE_DELAY , CONFIGTYPE_8 } ,
{ CONFIGITEM_MOTOR_DURATION , CONFIGTYPE_8 } ,
{ CONFIGITEM_MORTISE_TYPE , CONFIGTYPE_8 } ,
{ CONFIGITEM_UNLOCK_TIME , CONFIGTYPE_8 } ,
{ CONFIGITEM_EXT_UNLOCK_TIME , CONFIGTYPE_8 } ,
{ CONFIGITEM_DOOR_AJAR_TIME , CONFIGTYPE_8 } ,
{ CONFIGITEM_SESSION_TIMEOUT , CONFIGTYPE_8 } ,
{ CONFIGITEM_RETRY_ON_TIMEOUT , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_UNSOLICITED_ENCRYPT , CONFIGTYPE_8 } ,
{ CONFIGITEM_RMT_AUTH_TIMEOUT , CONFIGTYPE_8 } ,
{ CONFIGITEM_RMT_AUTH_DEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_ALARM_DEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_NOTIFY_DEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_COMMUSER_DEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_SCHEDULER_DEVICE , CONFIGTYPE_8 } ,
{ CONFIGITEM_SCHEDULER_TYPE , CONFIGTYPE_8 } ,
{ CONFIGITEM_SCHEDULER_AWAKE , CONFIGTYPE_8 } ,
{ CONFIGITEM_SCHEDULER_PERIOD , CONFIGTYPE_16 } ,
{ CONFIGITEM_SCHEDULER_HOD , CONFIGTYPE_STRING } ,
{ CONFIGITEM_SCHEDULER_DOW , CONFIGTYPE_8 } ,
{ CONFIGITEM_SCHEDULER_DOM , CONFIGTYPE_32 } ,
{ CONFIGITEM_SCHEDULER_HM1 , CONFIGTYPE_16 } ,
{ CONFIGITEM_SCHEDULER_HM2 , CONFIGTYPE_16 } ,
{ CONFIGITEM_SCHEDULER_HM3 , CONFIGTYPE_16 } ,
{ CONFIGITEM_SCHEDULER_HM4 , CONFIGTYPE_16 } ,
{ CONFIGITEM_RADIO_TYPE , CONFIGTYPE_8 } ,
{ CONFIGITEM_RADIO_MODE , CONFIGTYPE_8 } ,
{ CONFIGITEM_RADIO_TIMEOUT , CONFIGTYPE_8 } ,
{ CONFIGITEM_RADIO_ATTEMPTS , CONFIGTYPE_8 } ,
{ CONFIGITEM_RADIO_HOUSEKEEPING , CONFIGTYPE_8 } ,
{ CONFIGITEM_RADIO_LEAPUSERNAME , CONFIGTYPE_STRING } ,
{ CONFIGITEM_RADIO_LEAPPASSWORD , CONFIGTYPE_STRING } ,
{ CONFIGITEM_INHIBIT_VOLTAGE , CONFIGTYPE_8 } ,
{ CONFIGITEM_LOW_VOLTAGE , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_1 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_2 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_3 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_4 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_5 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_6 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_7 , CONFIGTYPE_8 } ,
{ CONFIGITEM_PT_RANGE_8 , CONFIGTYPE_8 } ,
{ CONFIGITEM_MAGCARD_IFS , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_MAGCARD_FIELDS , CONFIGTYPE_8 } ,
{ CONFIGITEM_MAGCARD_OFFSET , CONFIGTYPE_8 } ,
{ CONFIGITEM_MAGCARD_DIGITS , CONFIGTYPE_8 } ,
{ CONFIGITEM_ALARMS , CONFIGTYPE_STRING } ,
{ CONFIGITEM_FILTERS , CONFIGTYPE_STRING } ,
{ CONFIGITEM_ALARMSTATE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DOORSTATE , CONFIGTYPE_8 } ,
{ CONFIGITEM_DPACDEBUG , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_FAILOPENSECURE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_REPLACED_VOLTAGE , CONFIGTYPE_8 } ,
{ CONFIGITEM_RX_HELD_TIME , CONFIGTYPE_8 } ,
{ CONFIGITEM_PACKET_TIMEOUT , CONFIGTYPE_8 } ,
{ CONFIGITEM_EXTENDEDRESPONSE , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_PASSAGEMODEINDICATOR , CONFIGTYPE_BOOL } ,
{ CONFIGITEM_PFMRETURNTIME , CONFIGTYPE_8 }
} ;
/*
*
*/
static hf_register_info hf [ ] =
{
{ & hf_r3_tildex3ds , { " DPAC Attention " , " r3.dpac_attention " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_header , { " Header " , " r3.header " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_payload , { " Payload " , " r3.payload " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_tail , { " Tail " , " r3.tail " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_sigil , { " Sigil " , " r3.sigil " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_address , { " Address " , " r3.address " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_packetnumber , { " Packet Number " , " r3.packetnumber " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_packetlength , { " Packet Length " , " r3.packetlength " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_encryption , { " Crypt Type " , " r3.encryption " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_encryptionschemenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_crc , { " CRC " , " r3.crc " , FT_UINT16 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_crc_bad , { " Bad CRC " , " r3.crc_bad " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_xor , { " XOR " , " r3.xor " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_xor_bad , { " Bad XOR " , " r3.xor_bad " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_commandlength , { " Command Length " , " r3.command.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_command , { " Command " , " r3.command.command " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_cmdnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_commanddata , { " Command Data " , " r3.command.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_commandmfglength , { " Mfg Command Length " , " r3.commandmfg.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_commandmfg , { " Mfg Command " , " r3.commandmfg.command " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_cmdmfgnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_commandmfgdata , { " Mfg Command Data " , " r3.commandmfg.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_responselength , { " Response Length " , " r3.response.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_responsecommand , { " Response Command " , " r3.response.command " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_cmdnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_responsetype , { " Response Type " , " r3.response.responsetype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_responsetypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_responsetocommand , { " Response To Command " , " r3.response.to_command " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_cmdnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_responsedata , { " Response Data " , " r3.response.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamcommand , { " Upstream Command " , " r3.upstreamcommand.command " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_upstreamcommandnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfield , { " Upstream Field " , " r3.upstreamfield " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldlength , { " Field Length " , " r3.upstreamfield.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldtype , { " Field Type " , " r3.upstreamfield.type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_upstreamfieldnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfielddatalen , { " Data Length " , " r3.upstreamfield.datalen " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfielderror , { " Error " , " r3.upstreamfield.error " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_SERIALNUMBER ] , { " Serial Number " , " r3.upstreamfield.serialnumber " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_NAR ] , { " Next Available Record " , " r3.upstreamfield.nar " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_ENTRYDEVICE ] , { " Entry Device " , " r3.upstreamfield.entrydevice " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_PPMIFIELDTYPE ] , { " PPMI Field Type " , " r3.upstreamfield.ppmifieldtype " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_PIN ] , { " PIN " , " r3.upstreamfield.pin " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_SEQUENCENUMBER ] , { " Sequence Number " , " r3.upstreamfield.sequencenumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_RESPONSEWINDOW ] , { " Response Window " , " r3.upstreamfield.responsewindow " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_USERNUMBER ] , { " User Number " , " r3.upstreamfield.usernumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_VERSION ] , { " Version " , " r3.upstreamfield.version " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_EVENTLOGRECORD ] , { " Event Log Record " , " r3.upstreamfield.eventlogrecord " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_DATETIME ] , { " Date/Time " , " r3.upstreamfield.datetime " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_EVENTLOGRECORDCOUNT ] , { " Event Log Record Count " , " r3.upstreamfield.eventlogrecordcount " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_DECLINEDRECORDCOUNT ] , { " Declined Log Record " , " r3.upstreamfield.declinedlogrecord " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_DECLINEDRECORD ] , { " Declined Log " , " r3.upstreamfield.declinedlog " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_USERTYPE ] , { " User Type " , " r3.upstreamfield.usertype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_usertypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_ACCESSALWAYS ] , { " Access Always " , " r3.upstreamfield.accessalways " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_CACHED ] , { " Cached " , " r3.upstreamfield.cached " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_PRIMARYFIELDTYPE ] , { " Primary Field Type " , " r3.upstreamfield.primaryfieldtype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_AUXFIELDTYPE ] , { " Aux Field Type " , " r3.upstreamfield.auxfieldtype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_ACCESSMODE ] , { " Access Mode " , " r3.upstreamfield.accessmode " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_accessmodenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_EXPIREON ] , { " Expire On " , " r3.upstreamfield.expireon " , FT_UINT24 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_USECOUNT ] , { " Use Count " , " r3.upstreamfield.usecount " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_TIMEZONE ] , { " Timezone " , " r3.upstreamfield.timezone " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_EXCEPTIONGROUP ] , { " Exception Group " , " r3.upstreamfield.exceptiongroup " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_PRIMARYPIN ] , { " Primary PIN " , " r3.upstreamfield.primarypin " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_AUXPIN ] , { " Aux PIN " , " r3.upstreamfield.auxpin " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_ALARMRECORDCOUNT ] , { " Alarm Record Count " , " r3.upstreamfield.alarmrecordcount " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_ALARMRECORD ] , { " Alarm Record " , " r3.upstreamfield.alarmrecord " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_upstreamfieldarray [ UPSTREAMFIELD_AUXCTLRVERSION ] , { " Aux Controller Version " , " r3.upstreamfield.auxctlrversion " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitems , { " Configuration Item List " , " r3.configitems " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitem , { " Configuration Item " , " r3.configitem " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_configitemnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configfield , { " Config Field " , " r3.configfield " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemlength , { " Configuration Item Length " , " r3.configitem.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemtype , { " Configuration Item Type " , " r3.configitem.type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_configtypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata , { " Configuration Item Data " , " r3.configitem.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata_bool , { " Configuration Item Boolean " , " r3.configitem.data_boolean " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata_8 , { " Configuration Item 8-bit " , " r3.configitem.data_8 " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata_16 , { " Configuration Item 16-bit " , " r3.configitem.data_16 " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata_32 , { " Configuration Item 32-bit " , " r3.configitem.data_32 " , FT_UINT32 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_configitemdata_string , { " Configuration Item String " , " r3.configitem.data_string " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_timezonearray [ 0 ] , { " Timezone 0 " , " r3.timezone.0 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000001 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 1 ] , { " Timezone 1 " , " r3.timezone.1 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000002 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 2 ] , { " Timezone 2 " , " r3.timezone.2 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000004 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 3 ] , { " Timezone 3 " , " r3.timezone.3 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000008 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 4 ] , { " Timezone 4 " , " r3.timezone.4 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000010 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 5 ] , { " Timezone 5 " , " r3.timezone.5 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000020 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 6 ] , { " Timezone 6 " , " r3.timezone.6 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000040 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 7 ] , { " Timezone 7 " , " r3.timezone.7 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000080 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 8 ] , { " Timezone 8 " , " r3.timezone.8 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000100 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 9 ] , { " Timezone 9 " , " r3.timezone.9 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000200 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 10 ] , { " Timezone 10 " , " r3.timezone.10 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000400 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 11 ] , { " Timezone 11 " , " r3.timezone.11 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00000800 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 12 ] , { " Timezone 12 " , " r3.timezone.12 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00001000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 13 ] , { " Timezone 13 " , " r3.timezone.13 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00002000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 14 ] , { " Timezone 14 " , " r3.timezone.14 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00004000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 15 ] , { " Timezone 15 " , " r3.timezone.15 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00008000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 16 ] , { " Timezone 16 " , " r3.timezone.16 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00010000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 17 ] , { " Timezone 17 " , " r3.timezone.17 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00020000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 18 ] , { " Timezone 18 " , " r3.timezone.18 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00040000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 19 ] , { " Timezone 19 " , " r3.timezone.19 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00080000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 20 ] , { " Timezone 20 " , " r3.timezone.20 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00100000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 21 ] , { " Timezone 21 " , " r3.timezone.21 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00200000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 22 ] , { " Timezone 22 " , " r3.timezone.22 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00400000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 23 ] , { " Timezone 23 " , " r3.timezone.23 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x00800000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 24 ] , { " Timezone 24 " , " r3.timezone.24 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x01000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 25 ] , { " Timezone 25 " , " r3.timezone.25 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x02000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 26 ] , { " Timezone 26 " , " r3.timezone.26 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x04000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 27 ] , { " Timezone 27 " , " r3.timezone.27 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x08000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 28 ] , { " Timezone 28 " , " r3.timezone.28 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x10000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 29 ] , { " Timezone 29 " , " r3.timezone.29 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x20000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 30 ] , { " Timezone 30 " , " r3.timezone.30 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x40000000 , NULL , HFILL } } ,
{ & hf_r3_timezonearray [ 31 ] , { " Timezone 31 " , " r3.timezone.31 " , FT_BOOLEAN , 32 , TFS ( & tfs_enabled_disabled ) , 0x80000000 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_expireon_year , { " Expiration Year " , " r3.expireon.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_expireon_month , { " Expiration Month " , " r3.expireon.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_expireon_day , { " Expiration Day " , " r3.expireon.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_year , { " Date/Time Year " , " r3.datetime.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_month , { " Date/Time Month " , " r3.datetime.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_day , { " Date/Time Day " , " r3.datetime.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_dow , { " Date/Time DOW " , " r3.datetime.dow " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_daynames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_hours , { " Date/Time Hours " , " r3.datetime.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_minutes , { " Date/Time Minutes " , " r3.datetime.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_seconds , { " Date/Time Seconds " , " r3.datetime.seconds " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_datetime_dst , { " Date/Time DST " , " r3.datetime.dst " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_recordnumber , { " Record Number " , " r3.eventlog.recordnumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_year , { " Year " , " r3.eventlog.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_month , { " Month " , " r3.eventlog.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_day , { " Day " , " r3.eventlog.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_hour , { " Hours " , " r3.eventlog.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_minute , { " Minutes " , " r3.eventlog.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_second , { " Seconds " , " r3.eventlog.seconds " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_usernumber , { " User Number " , " r3.eventlog.usernumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlog_event , { " ID " , " r3.eventlog.id " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_eventnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_recordnumber , { " Record Number " , " r3.declinedlog.recordnumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_year , { " Year " , " r3.declinedlog.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_month , { " Month " , " r3.declinedlog.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_day , { " Day " , " r3.declinedlog.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_hour , { " Hours " , " r3.declinedlog.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_minute , { " Minutes " , " r3.declinedlog.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_second , { " Seconds " , " r3.declinedlog.seconds " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_usernumber , { " User Number " , " r3.declinedlog.usernumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_cred1type , { " Credential 1 Type " , " r3.declinedlog.cred1type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_fieldtypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_cred2type , { " Credential 2 Type " , " r3.declinedlog.cred2type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_fieldtypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_cred1 , { " Credential 1 " , " r3.declinedlog.cred1 " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlog_cred2 , { " Credential 2 " , " r3.declinedlog.cred2 " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_recordnumber , { " Record Number " , " r3.alarmlog.recordnumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_year , { " Year " , " r3.alarmlog.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_month , { " Month " , " r3.alarmlog.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_day , { " Day " , " r3.alarmlog.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_hour , { " Hours " , " r3.alarmlog.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_minute , { " Minutes " , " r3.alarmlog.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_second , { " Seconds " , " r3.alarmlog.seconds " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_id , { " ID " , " r3.alarmlog.id " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_alarmidnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlog_usernumber , { " User Number " , " r3.alarmlog.usernumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_debugmsg , { " Debug Message " , " r3.debug " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_year , { " Year " , " r3.setdate.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_month , { " Month " , " r3.setdate.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_day , { " Day " , " r3.setdate.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_dow , { " Day-Of-Week " , " r3.setdate.dow " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_daynames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_hours , { " Hours " , " r3.setdate.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_minutes , { " Minutes " , " r3.setdate.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_setdate_seconds , { " Seconds " , " r3.setdate.seconds " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_deleteusers , { " Delete Users " , " r3.deleteusers " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_deleteusersnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_number , { " Exception Number " , " r3.defineexception.number " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_startdate_month , { " Start Month " , " r3.defineexception.start.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_startdate_day , { " Start Day " , " r3.defineexception.start.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_startdate_hours , { " Start Hours " , " r3.defineexception.start.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_startdate_minutes , { " Start Minutes " , " r3.defineexception.start.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_enddate_month , { " End Month " , " r3.defineexception.end.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_enddate_day , { " End Day " , " r3.defineexception.end.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_enddate_hours , { " End Hours " , " r3.defineexception.end.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexception_enddate_minutes , { " End Minutes " , " r3.defineexception.end.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexceptiongroup_number , { " Define Exception Group Number " , " r3.defineexceptiongroup.number " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_defineexceptiongroup_bits , { " Define Exception Group Bit Field " , " r3.defineexceptiongroup.field " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definecalendar_number , { " Define Calendar Number " , " r3.definecalendar.number " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definecalendar_bits , { " Define Calendar Bit Field " , " r3.definecalendar.field " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_number , { " Timezone Number " , " r3.definetimezone.number " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_starttime_hours , { " Start Hours " , " r3.definetimezone.start.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_starttime_minutes , { " Start Minutes " , " r3.definetimezone.start.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_endtime_hours , { " End Hours " , " r3.definetimezone.end.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_endtime_minutes , { " End Minutes " , " r3.definetimezone.end.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_definetimezone_daymap [ 0 ] , { " Sunday " , " r3.definetimezone.daymap.sunday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000001 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 1 ] , { " Monday " , " r3.definetimezone.daymap.monday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000002 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 2 ] , { " Tuesday " , " r3.definetimezone.daymap.tuesday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000004 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 3 ] , { " Wednesday " , " r3.definetimezone.daymap.wednesday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000008 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 4 ] , { " Thursday " , " r3.definetimezone.daymap.thursday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000010 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 5 ] , { " Friday " , " r3.definetimezone.daymap.friday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000020 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_daymap [ 6 ] , { " Saturday " , " r3.definetimezone.daymap.saturday " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x00000040 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_definetimezone_exceptiongroup , { " Exception Group " , " r3.definetimezone.exceptiongroup " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_mode , { " Mode " , " r3.definetimezone.mode " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_timezonemodenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_definetimezone_calendar , { " Calendar " , " r3.definetimezone.calendar " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_rmtauthretry_sequence , { " Remote Auth Retry Sequence " , " r3.rmtauthretry.sequence " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_rmtauthretry_retry , { " Remote Auth Retry Mode " , " r3.rmtauthretry.mode " , FT_BOOLEAN , 8 , TFS ( & tfs_rmtauthretry_flags ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_starttime_year , { " Start Year " , " r3.eventlogdump.start.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_starttime_month , { " Start Month " , " r3.eventlogdump.start.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_starttime_day , { " Start Day " , " r3.eventlogdump.start.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_starttime_hours , { " Start Hours " , " r3.eventlogdump.start.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_starttime_minutes , { " Start Minutes " , " r3.eventlogdump.start.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_endtime_year , { " End Year " , " r3.eventlogdump.end.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_endtime_month , { " End Month " , " r3.eventlogdump.end.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_endtime_day , { " End Day " , " r3.eventlogdump.end.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_endtime_hours , { " End Hours " , " r3.eventlogdump.end.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_endtime_minutes , { " End Minutes " , " r3.eventlogdump.end.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_eventlogdump_user , { " Filter User " , " r3.eventlogdump.user " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_starttime_year , { " Start Year " , " r3.declinedlogdump.start.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_starttime_month , { " Start Month " , " r3.declinedlogdump.start.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_starttime_day , { " Start Day " , " r3.declinedlogdump.start.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_starttime_hours , { " Start Hours " , " r3.declinedlogdump.start.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_starttime_minutes , { " Start Minutes " , " r3.declinedlogdump.start.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_endtime_year , { " End Year " , " r3.declinedlogdump.end.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_endtime_month , { " End Month " , " r3.declinedlogdump.end.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_endtime_day , { " End Day " , " r3.declinedlogdump.end.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_endtime_hours , { " End Hours " , " r3.declinedlogdump.end.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_declinedlogdump_endtime_minutes , { " End Minutes " , " r3.declinedlogdump.end.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_starttime_year , { " Start Year " , " r3.alarmlogdump.start.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_starttime_month , { " Start Month " , " r3.alarmlogdump.start.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_starttime_day , { " Start Day " , " r3.alarmlogdump.start.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_starttime_hours , { " Start Hours " , " r3.alarmlogdump.start.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_starttime_minutes , { " Start Minutes " , " r3.alarmlogdump.start.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_endtime_year , { " End Year " , " r3.alarmlogdump.end.year " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_endtime_month , { " End Month " , " r3.alarmlogdump.end.month " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_monthnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_endtime_day , { " End Day " , " r3.alarmlogdump.end.day " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_endtime_hours , { " End Hours " , " r3.alarmlogdump.end.hours " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarmlogdump_endtime_minutes , { " End Minutes " , " r3.alarmlogdump.end.minutes " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_nvramclearoptions [ 0 ] , { " NVRAMCLEAROPTIONS_CFGINSTALLER " , " r3.nvramclear.cfginstaller " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000001 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 1 ] , { " NVRAMCLEAROPTIONS_CFGADMIN " , " r3.nvramclear.cfgadmin " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000002 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 2 ] , { " NVRAMCLEAROPTIONS_EXCEPTIONS " , " r3.nvramclear.exceptions " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000004 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 3 ] , { " NVRAMCLEAROPTIONS_EXCEPTIONGROUPS " , " r3.nvramclear.exceptiongroups " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000008 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 4 ] , { " NVRAMCLEAROPTIONS_CALENDARS " , " r3.nvramclear.calendars " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000010 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 5 ] , { " NVRAMCLEAROPTIONS_TIMEZONES " , " r3.nvramclear.timezones " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000020 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 6 ] , { " NVRAMCLEAROPTIONS_FILTERS " , " r3.nvramclear.filters " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000040 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 7 ] , { " NVRAMCLEAROPTIONS_EVENTLOG " , " r3.nvramclear.eventlog " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000080 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 8 ] , { " NVRAMCLEAROPTIONS_USERDATA " , " r3.nvramclear.userdata " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000100 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 9 ] , { " NVRAMCLEAROPTIONS_DECLINEDLOG " , " r3.nvramclear.declinedlog " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000200 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 10 ] , { " NVRAMCLEAROPTIONS_ALARMLOG " , " r3.nvramclear.alarmlog " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000400 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 11 ] , { " NVRAMCLEAROPTIONS_LRUCACHE " , " r3.nvramclear.lrucache " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00000800 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 12 ] , { " NVRAMCLEAROPTIONS_DBHASH " , " r3.nvramclear.dbhash " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00001000 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 13 ] , { " NVRAMCLEAROPTIONS_CFGSYSTEM " , " r3.nvramclear.cfgsystem " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00002000 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 14 ] , { " NVRAMCLEAROPTIONS_UNUSED " , " r3.nvramclear.unused " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00004000 , NULL , HFILL } } ,
{ & hf_r3_nvramclearoptions [ 15 ] , { " NVRAMCLEAROPTIONS_USEBACKUP " , " r3.nvramclear.usebackup " , FT_BOOLEAN , 16 , TFS ( & tfs_enabled_disabled ) , 0x00008000 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_writeeventlog_user , { " User " , " r3.writeeventlog.user " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_writeeventlog_event , { " Event " , " r3.writeeventlog.event " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_eventnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_powertableselection , { " Table " , " r3.powertableselection " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_powertablenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_filter_type , { " Type " , " r3.filter.type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_filtertypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_filter_list , { " Event " , " r3.filter.event " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_filtereventnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarm_length , { " Length " , " r3.alarm.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_alarm_id , { " ID " , " r3.alarm.id " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_alarmidnames ) , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_alarm_state , { " State " , " r3.alarm.state " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x0 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_mfgfield_length , { " Field Length " , " r3.mfgfield.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgfield , { " Field " , " r3.mfgfield.field " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_mfgfieldnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgfield_data , { " Field Data " , " r3.mfgfield.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgsetserialnumber , { " Serial Number " , " r3.mfgsetserialnumber " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgsetcryptkey , { " Crypt Key " , " r3.mfgsetcryptkey " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgdumpnvram , { " NVRAM Section " , " r3.mfgnvramdump " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_mfgnvramdumpnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgremoteunlock , { " Remote Unlock " , " r3.mfgremoteunlock " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_mfgremoteunlocknames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mfgtestpreserve , { " Preserve Mode " , " r3.mfgtestpreserve " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_mfgtestpreservenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 0 ] , { " ADC 0 " , " r3.adc.0 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 1 ] , { " ADC 1 " , " r3.adc.1 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 2 ] , { " ADC 2 " , " r3.adc.2 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 3 ] , { " ADC 3 " , " r3.adc.3 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 4 ] , { " ADC 4 " , " r3.adc.4 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 5 ] , { " ADC 5 " , " r3.adc.5 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 6 ] , { " ADC 6 " , " r3.adc.6 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adc [ 7 ] , { " ADC 7 " , " r3.adc.7 " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_hardwareid_board , { " Board ID " , " r3.hardwareid.board " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_hardwareid_cpuid , { " CPU ID " , " r3.hardwareid.cpuid " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_hardwareid_cpurev , { " CPU Rev " , " r3.hardwareid.cpurev " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_testkeypad , { " Keypad Char " , " r3.test.keypad " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_testmagcard , { " Mag Card " , " r3.test.magcard " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_testproxcard , { " Prox Card " , " r3.test.proxcard " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdump_record , { " Record Number " , " r3.nvramdump.record " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdump_length , { " Record Length " , " r3.nvramdump.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdump_data , { " Record Data " , " r3.nvramdump.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdumprle_record , { " Record Number " , " r3.nvramdumprle.record " , FT_UINT24 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdumprle_length , { " Record Length " , " r3.nvramdumprle.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramdumprle_data , { " Record Data " , " r3.nvramdumprle.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_iopins_lat , { " LAT " , " r3.iopins.lat " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_iopins_port , { " PORT " , " r3.iopins.port " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_iopins_tris , { " TRIS " , " r3.iopins.tris " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mortisepins_s1 , { " Mortise Pin S1 " , " r3.mortisepins.s1 " , FT_BOOLEAN , 8 , TFS ( & tfs_mortisepins_flags ) , 0x00000001 , NULL , HFILL } } ,
{ & hf_r3_mortisepins_s2 , { " Mortise Pin S2 " , " r3.mortisepins.s2 " , FT_BOOLEAN , 8 , TFS ( & tfs_mortisepins_flags ) , 0x00000002 , NULL , HFILL } } ,
{ & hf_r3_mortisepins_s3 , { " Mortise Pin S3 " , " r3.mortisepins.s3 " , FT_BOOLEAN , 8 , TFS ( & tfs_mortisepins_flags ) , 0x00000004 , NULL , HFILL } } ,
{ & hf_r3_mortisepins_s4 , { " Mortise Pin S4 " , " r3.mortisepins.s4 " , FT_BOOLEAN , 8 , TFS ( & tfs_mortisepins_flags ) , 0x00000008 , NULL , HFILL } } ,
{ & hf_r3_checksumresults , { " Checksum Results " , " r3.checksumresults " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checksumresults_field , { " Field " , " r3.checksumresults.field " , FT_UINT8 , BASE_HEX , VALS ( r3_checksumresultnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checksumresults_length , { " Length " , " r3.checksumresults.length " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checksumresults_state , { " State " , " r3.checksumresults.state " , FT_BOOLEAN , 8 , TFS ( & tfs_errornoerror_flags ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_forceoptions_item , { " Item " , " r3.forceoptions.item " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_forceitemnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_forceoptions_length , { " Length " , " r3.forceoptions.length " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_forceoptions_state_8 , { " State " , " r3.forceoptions.state " , FT_BOOLEAN , 8 , TFS ( & tfs_enabled_disabled ) , 0x0 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_forceoptions_state_16 , { " State " , " r3.forceoptions.state " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_forceoptions_state_24 , { " State " , " r3.forceoptions.state " , FT_UINT24 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_forceoptions_state_32 , { " State " , " r3.forceoptions.state " , FT_UINT32 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_operation , { " Operation " , " r3.peekpoke.operation " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_peekpokenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_address , { " Address " , " r3.peekpoke.address " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_length , { " Length " , " r3.peekpoke.length " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_poke8 , { " 8 Bit Value " , " r3.peekpoke.poke8 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_poke16 , { " 16 Bit Value " , " r3.peekpoke.poke16 " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_poke24 , { " 24 Bit Value " , " r3.peekpoke.poke24 " , FT_UINT24 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_poke32 , { " 32 Bit Value " , " r3.peekpoke.poke32 " , FT_UINT32 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_peekpoke_pokestring , { " String Value " , " r3.peekpoke.pokestring " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_length , { " Length " , " r3.firmwaredownload.length " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_record , { " Record Number " , " r3.firmwaredownload.record " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_action , { " Action " , " r3.firmwaredownload.action " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_downloadfirmwarenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_timeout , { " Timeout " , " r3.firmwaredownload.timeout " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_nvram , { " NVRAM " , " r3.firmwaredownload.nvram " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_address , { " Address " , " r3.firmwaredownload.address " , FT_UINT32 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_bytes , { " Bytes " , " r3.firmwaredownload.bytes " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_data , { " Data " , " r3.firmwaredownload.data " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_crc , { " CRC " , " r3.firmwaredownload.crc " , FT_UINT16 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_firmwaredownload_crc_bad , { " Bad CRC " , " r3.firmwaredownload.crc_bad " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramchecksumvalue , { " Value " , " r3.nvramchecksum.value " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_nvramchecksumvalue_fixup , { " Fixup " , " r3.nvramchecksum.fixup " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_capabilities , { " Capability " , " r3.capabilities " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_capabilities_length , { " Length " , " r3.capabilies.length " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_capabilities_type , { " Type " , " r3.capabilies.type " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_capabilitiesnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_capabilities_value , { " Value " , " r3.capabilies.value " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_lockstate_passage , { " Passage " , " r3.lockstate.passage " , FT_BOOLEAN , 24 , NULL , 0x00000001 , NULL , HFILL } } ,
{ & hf_r3_lockstate_panic , { " Panic " , " r3.lockstate.panic " , FT_BOOLEAN , 24 , NULL , 0x00000002 , NULL , HFILL } } ,
{ & hf_r3_lockstate_lockout , { " Lockout " , " r3.lockstate.lockout " , FT_BOOLEAN , 24 , NULL , 0x00000004 , NULL , HFILL } } ,
{ & hf_r3_lockstate_relock , { " Relock " , " r3.lockstate.relock " , FT_BOOLEAN , 24 , NULL , 0x00000008 , NULL , HFILL } } ,
{ & hf_r3_lockstate_autoopen , { " Auto Open " , " r3.lockstate.autoopen " , FT_BOOLEAN , 24 , NULL , 0x00000010 , NULL , HFILL } } ,
{ & hf_r3_lockstate_nextauto , { " Next Auto " , " r3.lockstate.nextauto " , FT_BOOLEAN , 24 , NULL , 0x00000020 , NULL , HFILL } } ,
{ & hf_r3_lockstate_lockstate , { " Lock State " , " r3.lockstate.lockstate " , FT_BOOLEAN , 24 , NULL , 0x00000040 , NULL , HFILL } } ,
{ & hf_r3_lockstate_wantstate , { " Want State " , " r3.lockstate.wantstate " , FT_BOOLEAN , 24 , NULL , 0x00000080 , NULL , HFILL } } ,
{ & hf_r3_lockstate_remote , { " Remote " , " r3.lockstate.remote " , FT_BOOLEAN , 24 , NULL , 0x00000100 , NULL , HFILL } } ,
{ & hf_r3_lockstate_update , { " Update " , " r3.lockstate.update " , FT_BOOLEAN , 24 , NULL , 0x00000200 , NULL , HFILL } } ,
{ & hf_r3_lockstate_exceptionspresent , { " Exceptions Present " , " r3.lockstate.exceptionspresent " , FT_BOOLEAN , 24 , NULL , 0x00000400 , NULL , HFILL } } ,
{ & hf_r3_lockstate_exceptionsactive , { " Exceptions Active " , " r3.lockstate.exceptionsactive " , FT_BOOLEAN , 24 , NULL , 0x00000800 , NULL , HFILL } } ,
{ & hf_r3_lockstate_timezonespresent , { " Timezones Presents " , " r3.lockstate.timezonespresent " , FT_BOOLEAN , 24 , NULL , 0x00001000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_timezonesactive , { " Timezones Active " , " r3.lockstate.timezonesactive " , FT_BOOLEAN , 24 , NULL , 0x00002000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_autounlockspresent , { " Auto Unlocks Present " , " r3.lockstate.autounlockspresent " , FT_BOOLEAN , 24 , NULL , 0x00004000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_autounlocksactive , { " Auto Unlocks Active " , " r3.lockstate.autounlocksactive " , FT_BOOLEAN , 24 , NULL , 0x00008000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_uapmspresent , { " UAPMs Present " , " r3.lockstate.uapmspresent " , FT_BOOLEAN , 24 , NULL , 0x00010000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_uapmsactive , { " UAPMs Active " , " r3.lockstate.uapmsactive " , FT_BOOLEAN , 24 , NULL , 0x00020000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_uapmrelockspresent , { " UAPM Relocks Present " , " r3.lockstate.uapmrelockspresent " , FT_BOOLEAN , 24 , NULL , 0x00040000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_uapmreslocksactive , { " UAPM Relocks Active " , " r3.lockstate.uapmreslocksactive " , FT_BOOLEAN , 24 , NULL , 0x00080000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_nvramprotect , { " NVRAM Protect " , " r3.lockstate.nvramprotect " , FT_BOOLEAN , 24 , NULL , 0x00100000 , NULL , HFILL } } ,
{ & hf_r3_lockstate_nvramchecksum , { " MVRAM Checksum " , " r3.lockstate.nvramchecksum " , FT_BOOLEAN , 24 , NULL , 0x00200000 , NULL , HFILL } } ,
{ & hf_r3_mortisestatelog , { " Mortise State Log " , " r3.mortisestatelog " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mortisestatelog_pointer , { " Event Pointer " , " r3.mortisestatelog.pointer " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mortisestatelog_mortisetype , { " Mortise Type " , " r3.mortisestatelog.mortisetype " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_mortisetypenames ) , 0x0 , NULL , HFILL } } ,
2009-11-28 14:47:12 +00:00
{ & hf_r3_mortisestatelog_waiting , { " Waiting For Door Closed " , " r3.mortisestatelog.waiting " , FT_BOOLEAN , 8 , TFS ( & tfs_true_false ) , 0x00 , NULL , HFILL } } ,
2009-11-28 01:16:52 +00:00
{ & hf_r3_mortisestatelog_state , { " State " , " r3.mortisestatelog.state " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mortisestatelog_last , { " Last State " , " r3.mortisestatelog.laststate " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_mortisestatelog_event , { " Event " , " r3.mortisestatelog.event " , FT_UINT8 , BASE_HEX_DEC , VALS ( r3_mortiseeventnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_newtick , { " New Tick " , " r3.timerchain.newtick " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_currentboundary , { " Current Boundary " , " r3.timerchain.currentboundary " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_tasktag , { " Task Tag " , " r3.timerchain.tasktag " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_address , { " Address " , " r3.timerchain.address " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_reload , { " Reload " , " r3.timerchain.reload " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_boundary , { " Boundary " , " r3.timerchain.boundary " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_count , { " Count " , " r3.timerchain.count " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_timerchain_flags , { " Flags " , " r3.timerchain.flags " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_taskflags_taskid , { " Task ID " , " r3.taskflags.taskid " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_taskflags_flags , { " Flags " , " r3.taskflags.flags " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checkpointlog_entryptr , { " Entry Pointer " , " r3.checkpointlog.entrypointer " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checkpointlog_rcon , { " RCON " , " r3.checkpointlog.rcon " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_checkpointlog_checkpoint , { " Checkpoint " , " r3.checkpointlog.checkpoint " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon , { " INTCON " , " r3.cpuregisters.intcon " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2 , { " INTCON2 " , " r3.cpuregisters.intcon2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3 , { " INTCON3 " , " r3.cpuregisters.intcon3 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1 , { " PIR1 " , " r3.cpuregisters.pir1 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2 , { " PIR2 " , " r3.cpuregisters.pir2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3 , { " PIR3 " , " r3.cpuregisters.pir3 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1 , { " PIE1 " , " r3.cpuregisters.pie1 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2 , { " PIE2 " , " r3.cpuregisters.pie2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3 , { " PIE3 " , " r3.cpuregisters.pie3 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1 , { " IPR1 " , " r3.cpuregisters.ipr1 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2 , { " IPR2 " , " r3.cpuregisters.ipr2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3 , { " IPR3 " , " r3.cpuregisters.ipr3 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon , { " RCON " , " r3.cpuregisters.rcon " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon , { " OSCCON " , " r3.cpuregisters.osccon " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta , { " RCSTA " , " r3.cpuregisters.rcsta " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta , { " TXSTA " , " r3.cpuregisters.txsta " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2 , { " RCSTA2 " , " r3.cpuregisters.rcsta2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2 , { " TXSTA2 " , " r3.cpuregisters.txsta2 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon , { " WDTCON " , " r3.cpuregisters.wdtcon " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_rbif , { " INTCON.RBIF " , " r3.cpuregisters.intcon.rbif " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_int0if , { " INTCON.INT0IF " , " r3.cpuregisters.intcon.int0if " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_tmr0if , { " INTCON.TMR0IF " , " r3.cpuregisters.intcon.tmr0if " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_rbie , { " INTCON.RBIE " , " r3.cpuregisters.intcon.rbie " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_int0ie , { " INTCON.INT0IE " , " r3.cpuregisters.intcon.int0ie " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_tmr0ie , { " INTCON.TMR0IE " , " r3.cpuregisters.intcon.tmr0ie " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_giel , { " INTCON.GIEL " , " r3.cpuregisters.intcon.giel " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon_gieh , { " INTCON.GIEH " , " r3.cpuregisters.intcon.gieh " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_rbip , { " INTCON2.RBIP " , " r3_cpuregisters_intcon2_rbip " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_int3ip , { " INTCON2.INT3IP " , " r3_cpuregisters_intcon2_int3ip " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_tmr0ip , { " INTCON2.TMR0IP " , " r3_cpuregisters_intcon2_tmr0ip " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_intedg3 , { " INTCON2.INTEDG3 " , " r3_cpuregisters_intcon2_intedg3 " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_intedg2 , { " INTCON2.INTEDG2 " , " r3_cpuregisters_intcon2_intedg2 " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_intedg1 , { " INTCON2.INTEDG1 " , " r3_cpuregisters_intcon2_intedg1 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_intedg0 , { " INTCON2.INTEDG0 " , " r3_cpuregisters_intcon2_intedg0 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon2_rbpu , { " INTCON2.RBPU " , " r3_cpuregisters_intcon2_rbpu " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int1if , { " INTCON3.INT1IF " , " r3.cpuregisters.intcon3.int1if " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int2if , { " INTCON3.INT2IF " , " r3.cpuregisters.intcon3.int2if " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int3if , { " INTCON3.INT3IF " , " r3.cpuregisters.intcon3.int3if " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int1ie , { " INTCON3.INT1IE " , " r3.cpuregisters.intcon3.int1ie " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int2ie , { " INTCON3.INT2IE " , " r3.cpuregisters.intcon3.int2ie " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int3ie , { " INTCON3.INT3IE " , " r3.cpuregisters.intcon3.int3ie " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int1ip , { " INTCON3.INT1IP " , " r3.cpuregisters.intcon3.int1ip " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_intcon3_int2ip , { " INTCON3.INT2IP " , " r3.cpuregisters.intcon3.int2ip " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_tmr1if , { " PIR1.TMR1IF " , " r3.cpuregisters.pir1.tmr1if " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_tmr2if , { " PIR1.TMR2IF " , " r3.cpuregisters.pir1.tmr2if " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_ccp1if , { " PIR1.CCP1IF " , " r3.cpuregisters.pir1.ccp1if " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_ssp1if , { " PIR1.SSP1IF " , " r3.cpuregisters.pir1.ssp1if " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_tx1if , { " PIR1.TX1IF " , " r3.cpuregisters.pir1.tx1if " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_rc1if , { " PIR1.RC1IF " , " r3.cpuregisters.pir1.rc1if " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_adif , { " PIR1.ADIF " , " r3.cpuregisters.pir1.adif " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir1_pspif , { " PIR1.PSPIF " , " r3.cpuregisters.pir1.pspif " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_ccp2if , { " PIR2.CCP2IF " , " r3.cpuregisters.pir2.ccp2if " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_tmr3if , { " PIR2.TMR3IF " , " r3.cpuregisters.pir2.tmr3if " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_hlvdif , { " PIR2.HLVDIF " , " r3.cpuregisters.pir2.hlvdif " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_bcl1if , { " PIR2.BCL1IF " , " r3.cpuregisters.pir2.bcl1if " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_eeif , { " PIR2.EEIF " , " r3.cpuregisters.pir2.eeif " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_unused5 , { " PIR2.UNUSED5 " , " r3.cpuregisters.pir2.unused5 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_cmif , { " PIR2.CMIF " , " r3.cpuregisters.pir2.cmif " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir2_oscfif , { " PIR2.OSCFIF " , " r3.cpuregisters.pir2.oscfif " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_ccp3if , { " PIR3.CCP3IF " , " r3.cpuregisters.pir3.ccp3if " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_ccp4if , { " PIR3.CCP4IF " , " r3.cpuregisters.pir3.ccp4if " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_ccp5if , { " PIR3.CCP5IF " , " r3.cpuregisters.pir3.ccp5if " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_tmr4if , { " PIR3.TMR4IF " , " r3.cpuregisters.pir3.tmr4if " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_tx2if , { " PIR3.TX2IF " , " r3.cpuregisters.pir3.tx2if " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_rc2if , { " PIR3.RC2IF " , " r3.cpuregisters.pir3.rc2if " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_bcl2if , { " PIR3.BCL2IF " , " r3.cpuregisters.pir3.bcl2if " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pir3_ssp2if , { " PIR3.SSP2IF " , " r3.cpuregisters.pir3.ssp2if " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_tmr1ie , { " PIE1.TMR1IE " , " r3.cpuregisters.pie1.tmr1ie " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_tmr2ie , { " PIE1.TMR2IE " , " r3.cpuregisters.pie1.tmr2ie " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_ccp1ie , { " PIE1.CCP1IE " , " r3.cpuregisters.pie1.ccp1ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_ssp1ie , { " PIE1.SSP1IE " , " r3.cpuregisters.pie1.ssp1ie " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_tx1ie , { " PIE1.TX1IE " , " r3.cpuregisters.pie1.tx1ie " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_rc1ie , { " PIE1.RC1IE " , " r3.cpuregisters.pie1.rc1ie " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_adie , { " PIE1.ADIE " , " r3.cpuregisters.pie1.adie " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie1_pspie , { " PIE1.PSPIE " , " r3.cpuregisters.pie1.pspie " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_oscfie , { " PIE2.OSCFIE " , " r3.cpuregisters.pie2.oscfie " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_cmie , { " PIE2.CMIE " , " r3.cpuregisters.pie2.cmie " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_unused2 , { " PIE2.UNUSED2 " , " r3.cpuregisters.pie2.unused2 " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_eeie , { " PIE2.EEIE " , " r3.cpuregisters.pie2.eeie " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_bcl1ie , { " PIE2.BCL1IE " , " r3.cpuregisters.pie2.bcl1ie " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_hlvdie , { " PIE2.HLVDIE " , " r3.cpuregisters.pie2.hlvdie " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_tmr3ie , { " PIE2.TMR3IE " , " r3.cpuregisters.pie2.tmr3ie " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie2_ccp2ie , { " PIE2.CCP2IE " , " r3.cpuregisters.pie2.ccp2ie " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_ccp3ie , { " PIE3.CCP3IE " , " r3.cpuregisters.pie3.ccp3ie " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_ccp4ie , { " PIE3.CCP4IE " , " r3.cpuregisters.pie3.ccp4ie " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_ccp5ie , { " PIE3.CCP5IE " , " r3.cpuregisters.pie3.ccp5ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_tmr4ie , { " PIE3.TMR4IE " , " r3.cpuregisters.pie3.tmr4ie " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_tx2ie , { " PIE3.TX2IE " , " r3.cpuregisters.pie3.tx2ie " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_rc2ie , { " PIE3.RC2IE " , " r3.cpuregisters.pie3.rc2ie " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_bcl2ie , { " PIE3.BCL2IE " , " r3.cpuregisters.pie3.bcl2ie " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_pie3_ssp2ie , { " PIE3.SSP2IE " , " r3.cpuregisters.pie3.ssp2ie " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_tmr1ip , { " IPR1.TMR1IP " , " r3.cpuregisters.ipr1.tmr1ip " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_tmr2ip , { " IPR1.TMR2IP " , " r3.cpuregisters.ipr1.tmr2ip " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_ccp1ip , { " IPR1.CCP1IP " , " r3.cpuregisters.ipr1.ccp1ip " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_ssp1ip , { " IPR1.SSP1IP " , " r3.cpuregisters.ipr1.ssp1ip " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_tx1ip , { " IPR1.TX1IP " , " r3.cpuregisters.ipr1.tx1ip " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_rc1ip , { " IPR1.RC1IP " , " r3.cpuregisters.ipr1.rc1ip " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_adip , { " IPR1.ADIP " , " r3.cpuregisters.ipr1.adip " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr1_pspip , { " IPR1.PSPIP " , " r3.cpuregisters.ipr1.pspip " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_ccp2ip , { " IPR2.CCP2IP " , " r3.cpuregisters.ipr2.ccp2ip " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_tmr3ip , { " IPR2.TMR3IP " , " r3.cpuregisters.ipr2.tmr3ip " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_hlvdip , { " IPR2.HLVDIP " , " r3.cpuregisters.ipr2.hlvdip " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_bcl1ip , { " IPR2.BCL1IP " , " r3.cpuregisters.ipr2.bcl1ip " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_eeip , { " IPR2.EEIP " , " r3.cpuregisters.ipr2.eeip " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_unused5 , { " IPR2.UNUSED5 " , " r3.cpuregisters.ipr2.unused5 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_cmip , { " IPR2.CMIP " , " r3.cpuregisters.ipr2.cmip " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr2_oscfip , { " IPR2.OSCFIP " , " r3.cpuregisters.ipr2.oscfip " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_ccp2ip , { " IPR3.CCP2IP " , " r3.cpuregisters.ipr3.ccp2ip " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_ccp4ip , { " IPR3.CCP4IP " , " r3.cpuregisters.ipr3.ccp4ip " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_ccp5ip , { " IPR3.CCP5IP " , " r3.cpuregisters.ipr3.ccp5ip " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_tmr4ip , { " IPR3.TMR4IP " , " r3.cpuregisters.ipr3.tmr4ip " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_tx2ip , { " IPR3.TX2IP " , " r3.cpuregisters.ipr3.tx2ip " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_rc2ip , { " IPR3.RC2IP " , " r3.cpuregisters.ipr3.rc2ip " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_bcl2ip , { " IPR3.BCL2IP " , " r3.cpuregisters.ipr3.bcl2ip " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_ipr3_ssp2ip , { " IPR3.SSP2IP " , " r3.cpuregisters.ipr3.ssp2ip " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_bor , { " RCON./BOR " , " r3.cpuregisters.rcon.bor " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_por , { " RCON./POR " , " r3.cpuregisters.rcon.por " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_pd , { " RCON./PD " , " r3.cpuregisters.rcon.pd " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_to , { " RCON./TO " , " r3.cpuregisters.rcon.to " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_unused4 , { " RCON.UNUSED4 " , " r3.cpuregisters.rcon.unused4 " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_ri , { " RCON./RI " , " r3.cpuregisters.rcon.ri " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_sboren , { " RCON.SBOREN " , " r3.cpuregisters.rcon.sboren " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcon_ipen , { " RCON.IPEN " , " r3.cpuregisters.rcon.ipen " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_scs0 , { " OSCCON.SCS0 " , " r3.cpuregisters.osccon.scs0 " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_scs1 , { " OSCCON.SCS1 " , " r3.cpuregisters.osccon.scs1 " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_iofs , { " OSCCON.IOFS " , " r3.cpuregisters.osccon.iofs " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_osts , { " OSCCON.OSTS " , " r3.cpuregisters.osccon.osts " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_ircf0 , { " OSCCON.IRCF0 " , " r3.cpuregisters.osccon.ircf0 " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_ircf1 , { " OSCCON.IRCF1 " , " r3.cpuregisters.osccon.ircf1 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_ircf2 , { " OSCCON.IRCF2 " , " r3.cpuregisters.osccon.ircf2 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_osccon_idlen , { " OSCCON.IDLEN " , " r3.cpuregisters.osccon.idlen " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_rx9d , { " RCSTA.RX9D " , " r3.cpuregisters.rcsta.rx9d " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_oerr , { " RCSTA.OERR " , " r3.cpuregisters.rcsta.oerr " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_ferr , { " RCSTA.FERR " , " r3.cpuregisters.rcsta.ferr " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_adden , { " RCSTA.ADDEN " , " r3.cpuregisters.rcsta.adden " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_cren , { " RCSTA.CREN " , " r3.cpuregisters.rcsta.cren " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_sren , { " RCSTA.SREN " , " r3.cpuregisters.rcsta.sren " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_rx9 , { " RCSTA.RX9 " , " r3.cpuregisters.rcsta.rx9 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta_spen , { " RCSTA.SPEN " , " r3.cpuregisters.rcsta.spen " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_tx9d , { " TXSTA.TX9D " , " r3.cpuregisters.txsta.tx9d " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_trmt , { " TXSTA.TRMT " , " r3.cpuregisters.txsta.trmt " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_brgh , { " TXSTA.BRGH " , " r3.cpuregisters.txsta.brgh " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_sendb , { " TXSTA.SENDB " , " r3.cpuregisters.txsta.sendb " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_sync , { " TXSTA.SYNC " , " r3.cpuregisters.txsta.sync " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_txen , { " TXSTA.TXEN " , " r3.cpuregisters.txsta.txen " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_tx9 , { " TXSTA.TX9 " , " r3.cpuregisters.txsta.tx9 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta_csrc , { " TXSTA.CSRC " , " r3.cpuregisters.txsta.csrc " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_rx9d , { " RCSTA2.RX9D " , " r3.cpuregisters.rcsta2.rx9d " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_oerr , { " RCSTA2.OERR " , " r3.cpuregisters.rcsta2.oerr " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_ferr , { " RCSTA2.FERR " , " r3.cpuregisters.rcsta2.ferr " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_adden , { " RCSTA2.ADDEN " , " r3.cpuregisters.rcsta2.adden " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_cren , { " RCSTA2.CREN " , " r3.cpuregisters.rcsta2.cren " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_sren , { " RCSTA2.SREN " , " r3.cpuregisters.rcsta2.sren " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_rx9 , { " RCSTA2.RX9 " , " r3.cpuregisters.rcsta2.rx9 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_rcsta2_spen , { " RCSTA2.SPEN " , " r3.cpuregisters.rcsta2.spen " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_tx9d , { " TXSTA2.TX9D " , " r3.cpuregisters.txsta2.tx9d " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_trmt , { " TXSTA2.TRMT " , " r3.cpuregisters.txsta2.trmt " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_brgh , { " TXSTA2.BRGH " , " r3.cpuregisters.txsta2.brgh " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_sendb , { " TXSTA2.SENDB " , " r3.cpuregisters.txsta2.sendb " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_sync , { " TXSTA2.SYNC " , " r3.cpuregisters.txsta2.sync " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_txen , { " TXSTA2.TXEN " , " r3.cpuregisters.txsta2.txen " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_tx9 , { " TXSTA2.TX9 " , " r3.cpuregisters.txsta2.tx9 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_txsta2_csrc , { " TXSTA2.CSRC " , " r3.cpuregisters.txsta2.csrc " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_swdten , { " WDTCON.SWDTEN " , " r3.cpuregisters.wdtcon.swdten " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused1 , { " WDTCON.UNUSED1 " , " r3.cpuregisters.wdtcon.unused1 " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused2 , { " WDTCON.UNUSED2 " , " r3.cpuregisters.wdtcon.unused2 " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused3 , { " WDTCON.UNUSED3 " , " r3.cpuregisters.wdtcon.unused3 " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused4 , { " WDTCON.UNUSED4 " , " r3.cpuregisters.wdtcon.unused4 " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused5 , { " WDTCON.UNUSED5 " , " r3.cpuregisters.wdtcon.unused5 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused6 , { " WDTCON.UNUSED6 " , " r3.cpuregisters.wdtcon.unused6 " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_r3_cpuregisters_wdtcon_unused7 , { " WDTCON.UNUSED7 " , " r3.cpuregisters.wdtcon.unused7 " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg00 , { " REG 0x00 " , " r3.m41t81.reg00 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg01 , { " REG 0x01 " , " r3.m41t81.reg01 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg02 , { " REG 0x02 " , " r3.m41t81.reg02 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg03 , { " REG 0x03 " , " r3.m41t81.reg03 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg04 , { " REG 0x04 " , " r3.m41t81.reg04 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg05 , { " REG 0x05 " , " r3.m41t81.reg05 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg06 , { " REG 0x06 " , " r3.m41t81.reg06 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg07 , { " REG 0x07 " , " r3.m41t81.reg07 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg08 , { " REG 0x08 " , " r3.m41t81.reg08 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg09 , { " REG 0x09 " , " r3.m41t81.reg09 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a , { " REG 0x0a " , " r3.m41t81.reg0a " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0b , { " REG 0x0b " , " r3.m41t81.reg0b " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0c , { " REG 0x0c " , " r3.m41t81.reg0c " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0d , { " REG 0x0d " , " r3.m41t81.reg0d " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0e , { " REG 0x0e " , " r3.m41t81.reg0e " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0f , { " REG 0x0f " , " r3.m41t81.reg0f " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg10 , { " REG 0x10 " , " r3.m41t81.reg10 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg11 , { " REG 0x11 " , " r3.m41t81.reg11 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg12 , { " REG 0x12 " , " r3.m41t81.reg12 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg13 , { " REG 0x13 " , " r3.m41t81.reg13 " , FT_UINT8 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg00_sec1 , { " .1 Seconds " , " r3.m41t81.reg00.sec1 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg00_sec01 , { " .01 Seconds " , " r3.m41t81.reg00.sec01 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg01_st , { " ST " , " r3.m41t81.reg01.st " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg01_10sec , { " 10 Seconds " , " r3.m41t81.reg01.10sec " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg01_1sec , { " 1 Seconds " , " r3.m41t81.reg01.1sec " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg02_notused , { " (not used) " , " r3.m41t81.reg02.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg02_10min , { " 10 Minutes " , " r3.m41t81.reg02.10min " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg02_1min , { " 1 Minutes " , " r3.m41t81.reg02.1min " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg03_cbe , { " CBE " , " r3.m41t81.reg03.cbe " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg03_cb , { " CB " , " r3.m41t81.reg03.cb " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg03_10hour , { " 10 Hours " , " r3.m41t81.reg03.10hour " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg03_1hour , { " 1 Hours " , " r3.m41t81.reg03.1hour " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg04_notused , { " (not used) " , " r3.m41t81.reg04.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg04_dow , { " DOW " , " r3.m41t81.reg04.dow " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg05_notused , { " (not used) " , " r3.m41t81.reg05.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg05_10day , { " 10 Day " , " r3.m41t81.reg05.10day " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg05_1day , { " 1 Day " , " r3.m41t81.reg05.1day " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg06_notused , { " (not used) " , " r3.m41t81.reg06.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg06_10month , { " 10 Month " , " r3.m41t81.reg06.10month " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg06_1month , { " 1 Month " , " r3.m41t81.reg06.1month " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg07_10year , { " 10 Year " , " r3.m41t81.reg07.10year " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg07_1year , { " 1 Year " , " r3.m41t81.reg07.1year " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg08_out , { " OUT " , " r3.m41t81.reg08.out " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg08_ft , { " FT " , " r3.m41t81.reg08.ft " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg08_s , { " S " , " r3.m41t81.reg08.s " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg08_cal , { " CAL " , " r3.m41t81.reg08.cal " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg09_notused , { " (not used) " , " r3.m41t81.reg09.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg09_bmb , { " BMB " , " r3.m41t81.reg09.bmb " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg09_rb , { " RB " , " r3.m41t81.reg09.rb " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a_afe , { " AFE " , " r3.m41t81.reg0a.afe " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a_sqwe , { " SQWE " , " r3.m41t81.reg0a.sqwe " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a_abe , { " ABE " , " r3.m41t81.reg0a.abe " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a_10monthalm , { " 10 Month Alarm " , " r3.m41t81.reg0a.10monthalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0a_1monthalm , { " 1 Month Alarm " , " r3.m41t81.reg0a.1monthalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0b_rpt5 , { " RPT5 " , " r3.m41t81.reg0b.rpt5 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0b_rpt4 , { " RPT4 " , " r3.m41t81.reg0b.rpt4 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0b_10dayalm , { " 10 Day Alarm " , " r3.m41t81.reg0b.10dayalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0b_1dayalm , { " 1 Day Alarm " , " r3.m41t81.reg0b.1dayalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0c_rpt3 , { " RPT3 " , " r3.m41t81.reg0c.rpt3 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0c_ht , { " HT " , " r3.m41t81.reg0c.ht " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0c_10houralm , { " 10 Hour Alarm " , " r3.m41t81.reg0c.10houralm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0c_1houralm , { " 1 Hour Alarm " , " r3.m41t81.reg0c.1houralm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0d_rpt2 , { " RPT2 " , " r3.m41t81.reg0d.rpt2 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0d_10minalm , { " 10 Min Alarm " , " r3.m41t81.reg0d.10minalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0d_1minalm , { " 1 Min Alarm " , " r3.m41t81.reg0d.1minalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0e_rpt1 , { " RPT1 " , " r3.m41t81.reg0e.rpt1 " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0e_10secalm , { " 10 Sec Alarm " , " r3.m41t81.reg0e.10secalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0e_1secalm , { " 1 Sec Alarm " , " r3.m41t81.reg0e.1secalm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0f_wdf , { " WDF " , " r3.m41t81.reg0f.wdf " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0f_af , { " AF " , " r3.m41t81.reg0f.af " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg0f_notused , { " (not used) " , " r3.m41t81.reg0f.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg10_notused , { " (not used) " , " r3.m41t81.reg10.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg11_notused , { " (not used) " , " r3.m41t81.reg11.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg12_notused , { " (not used) " , " r3.m41t81.reg12.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg13_rs , { " RS " , " r3.m41t81.reg13.rs " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_dumpm41t81_reg13_notused , { " (not used) " , " r3.m41t81.reg13.notused " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_debuglog_recordnumber , { " Record Number " , " r3.debuglog.recordnumber " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_debuglog_flags , { " Flags " , " r3.debuglog.flags " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_debuglog_tick , { " Tick " , " r3.debuglog.tick " , FT_UINT16 , BASE_HEX_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtype , { " Upstream Field " , " r3.manageuser " , FT_NONE , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypelength , { " Field Length " , " r3.manageuser.length " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypetype , { " Field Type " , " r3.manageuser.type " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_adduserparamtypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypedatalen , { " Data Length " , " r3.manageuser.datalen " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypeerror , { " Error " , " r3.manageuser.error " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_DISPOSITION ] , { " Disposition " , " r3.manageuser.disposition " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_dispositionnames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_USERNO ] , { " User Number " , " r3.manageuser.usernumber " , FT_UINT16 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_ACCESSALWAYS ] , { " Access Always " , " r3.manageuser.accessalways " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_ACCESSMODE ] , { " Access Mode " , " r3.manageuser.accessmode " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_accessmodenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_CACHED ] , { " Cached " , " r3.manageuser.cached " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_USERTYPE ] , { " User Type " , " r3.manageuser.usertype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_usertypenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_PRIMARYFIELD ] , { " Primary Field " , " r3.manageuser.primaryfield " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_PRIMARYFIELDTYPE ] , { " Primary Field Type " , " r3.manageuser.primaryfieldtype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_AUXFIELD ] , { " Aux Field " , " r3.manageuser.auxfield " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_AUXFIELDTYPE ] , { " Aux Field Type " , " r3.manageuser.auxfieldtype " , FT_UINT8 , BASE_DEC_HEX , VALS ( r3_ppmisourcenames ) , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_USECOUNT ] , { " Use Count " , " r3.manageuser.usecount " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_EXCEPTIONGROUP ] , { " Exception Group " , " r3.manageuser.exceptiongroup " , FT_UINT8 , BASE_DEC_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_EXPIREON ] , { " Expire On " , " r3.manageuser.expireon " , FT_UINT24 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_r3_adduserparamtypearray [ ADDUSERPARAMTYPE_TIMEZONE ] , { " Timezone " , " r3.manageuser.timezone " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } }
} ;
typedef struct dissectorParser_s
{
cmdCommand_e command ;
void ( * dissector ) ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * r3_tree ) ;
}
dissectorParser_t ;
/*
* Dissectors for each command
*/
static void dissect_r3_cmd_response ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_handshake ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_killsession ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_queryserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_queryversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_setdatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_querydatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_setconfig ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_getconfig ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_manageuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_deleteusers ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_defineexception ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_defineexceptiongroup ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_definecalendar ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_definetimezone ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_rmtauthretry ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_filters ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_alarmconfigure ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_eventlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_declinedlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_alarmlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_downloadfirmware ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_downloadfirmwaretimeout ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_powertableselection ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_clearnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_dpac ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_selftest ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_reset ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_logwrite ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_mfgcommand ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_nvrambackup ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmd_extendedresponse ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static dissectorParser_t r3command_dissect [ ] =
{
{ CMD_RESPONSE , dissect_r3_cmd_response } ,
{ CMD_HANDSHAKE , dissect_r3_cmd_handshake } ,
{ CMD_KILLSESSION , dissect_r3_cmd_killsession } ,
{ CMD_QUERYSERIALNUMBER , dissect_r3_cmd_queryserialnumber } ,
{ CMD_QUERYVERSION , dissect_r3_cmd_queryversion } ,
{ CMD_SETDATETIME , dissect_r3_cmd_setdatetime } ,
{ CMD_QUERYDATETIME , dissect_r3_cmd_querydatetime } ,
{ CMD_SETCONFIG , dissect_r3_cmd_setconfig } ,
{ CMD_GETCONFIG , dissect_r3_cmd_getconfig } ,
{ CMD_MANAGEUSER , dissect_r3_cmd_manageuser } ,
{ CMD_DELETEUSERS , dissect_r3_cmd_deleteusers } ,
{ CMD_DEFINEEXCEPTION , dissect_r3_cmd_defineexception } ,
{ CMD_DEFINEEXCEPTIONGROUP , dissect_r3_cmd_defineexceptiongroup } ,
{ CMD_DEFINECALENDAR , dissect_r3_cmd_definecalendar } ,
{ CMD_DEFINETIMEZONE , dissect_r3_cmd_definetimezone } ,
{ CMD_RMTAUTHRETRY , dissect_r3_cmd_rmtauthretry } ,
{ CMD_FILTERS , dissect_r3_cmd_filters } ,
{ CMD_ALARMCONFIGURE , dissect_r3_cmd_alarmconfigure } ,
{ CMD_EVENTLOGDUMP , dissect_r3_cmd_eventlogdump } ,
{ CMD_DECLINEDLOGDUMP , dissect_r3_cmd_declinedlogdump } ,
{ CMD_ALARMLOGDUMP , dissect_r3_cmd_alarmlogdump } ,
{ CMD_DOWNLOADFIRMWARE , dissect_r3_cmd_downloadfirmware } ,
{ CMD_DOWNLOADFIRMWARETIMEOUT , dissect_r3_cmd_downloadfirmwaretimeout } ,
{ CMD_POWERTABLESELECTION , dissect_r3_cmd_powertableselection } ,
{ CMD_CLEARNVRAM , dissect_r3_cmd_clearnvram } ,
{ CMD_DPAC , dissect_r3_cmd_dpac } ,
{ CMD_SELFTEST , dissect_r3_cmd_selftest } ,
{ CMD_RESET , dissect_r3_cmd_reset } ,
{ CMD_LOGWRITE , dissect_r3_cmd_logwrite } ,
{ CMD_MFGCOMMAND , dissect_r3_cmd_mfgcommand } ,
{ CMD_NVRAMBACKUP , dissect_r3_cmd_nvrambackup } ,
{ CMD_EXTENDEDRESPONSE , dissect_r3_cmd_extendedresponse }
} ;
static void dissect_r3_cmdmfg_setserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_setcryptkey ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_dumpnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_terminal ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_remoteunlock ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_auxctlrversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_iopins ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_adcs ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_hardwareid ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_checkpointlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_checkpointlogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_readregisters ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_forceoptions ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_commuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_dumpkeypad ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_batterycheck ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_ramrefresh ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_taskflags ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_timerchain ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_peekpoke ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_lockstate ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_capabilities ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_dumpm41t81 ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_debuglogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_debuglogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_testwdt ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_querycksum ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_validatechecksums ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_rebuildlrucache ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_tzupdate ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_testpreserve ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_mortisestatelogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_mortisestatelogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_mortisepins ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_cmdmfg_haltandcatchfire ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static dissectorParser_t r3commandmfg_dissect [ ] =
{
{ CMDMFG_SETSERIALNUMBER , dissect_r3_cmdmfg_setserialnumber } ,
{ CMDMFG_SETCRYPTKEY , dissect_r3_cmdmfg_setcryptkey } ,
{ CMDMFG_DUMPNVRAM , dissect_r3_cmdmfg_dumpnvram } ,
{ CMDMFG_TERMINAL , dissect_r3_cmdmfg_terminal } ,
{ CMDMFG_REMOTEUNLOCK , dissect_r3_cmdmfg_remoteunlock } ,
{ CMDMFG_AUXCTLRVERSION , dissect_r3_cmdmfg_auxctlrversion } ,
{ CMDMFG_IOPINS , dissect_r3_cmdmfg_iopins } ,
{ CMDMFG_ADCS , dissect_r3_cmdmfg_adcs } ,
{ CMDMFG_HARDWAREID , dissect_r3_cmdmfg_hardwareid } ,
{ CMDMFG_CHECKPOINTLOGDUMP , dissect_r3_cmdmfg_checkpointlogdump } ,
{ CMDMFG_CHECKPOINTLOGCLEAR , dissect_r3_cmdmfg_checkpointlogclear } ,
{ CMDMFG_READREGISTERS , dissect_r3_cmdmfg_readregisters } ,
{ CMDMFG_FORCEOPTIONS , dissect_r3_cmdmfg_forceoptions } ,
{ CMDMFG_COMMUSER , dissect_r3_cmdmfg_commuser } ,
{ CMDMFG_DUMPKEYPAD , dissect_r3_cmdmfg_dumpkeypad } ,
{ CMDMFG_BATTERYCHECK , dissect_r3_cmdmfg_batterycheck } ,
{ CMDMFG_RAMREFRESH , dissect_r3_cmdmfg_ramrefresh } ,
{ CMDMFG_TASKFLAGS , dissect_r3_cmdmfg_taskflags } ,
{ CMDMFG_TIMERCHAIN , dissect_r3_cmdmfg_timerchain } ,
{ CMDMFG_PEEKPOKE , dissect_r3_cmdmfg_peekpoke } ,
{ CMDMFG_LOCKSTATE , dissect_r3_cmdmfg_lockstate } ,
{ CMDMFG_CAPABILITIES , dissect_r3_cmdmfg_capabilities } ,
{ CMDMFG_DUMPM41T81 , dissect_r3_cmdmfg_dumpm41t81 } ,
{ CMDMFG_DEBUGLOGDUMP , dissect_r3_cmdmfg_debuglogdump } ,
{ CMDMFG_DEBUGLOGCLEAR , dissect_r3_cmdmfg_debuglogclear } ,
{ CMDMFG_TESTWDT , dissect_r3_cmdmfg_testwdt } ,
{ CMDMFG_QUERYCKSUM , dissect_r3_cmdmfg_querycksum } ,
{ CMDMFG_VALIDATECHECKSUMS , dissect_r3_cmdmfg_validatechecksums } ,
{ CMDMFG_REBUILDLRUCACHE , dissect_r3_cmdmfg_rebuildlrucache } ,
{ CMDMFG_TZUPDATE , dissect_r3_cmdmfg_tzupdate } ,
{ CMDMFG_TESTPRESERVE , dissect_r3_cmdmfg_testpreserve } ,
{ CMDMFG_MORTISESTATELOGDUMP , dissect_r3_cmdmfg_mortisestatelogdump } ,
{ CMDMFG_MORTISESTATELOGCLEAR , dissect_r3_cmdmfg_mortisestatelogclear } ,
{ CMDMFG_MORTISEPINS , dissect_r3_cmdmfg_mortisepins } ,
{ CMDMFG_HALTANDCATCHFIRE , dissect_r3_cmdmfg_haltandcatchfire }
} ;
static void dissect_r3_response_singlebyte ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_response_hasdata ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static dissectorParser_t r3response_dissect [ ] =
{
{ RESPONSETYPE_OK , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_ERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_HASDATA , dissect_r3_response_hasdata } ,
{ RESPONSETYPE_NOHANDLER , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOSESSION , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_BADCOMMAND , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_BADPARAMETER , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_BADPARAMETERLEN , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_MISSINGPARAMETER , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_DUPLICATEPARAMETER , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PARAMETERCONFLICT , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_BADDEVICE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NVRAMERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NVRAMERRORNOACK , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NVRAMERRORNOACK32 , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOTI2CADDRESS , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_FIRMWAREERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_DUMPINPROGRESS , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_INTERNALERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOTIMPLEMENTED , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PINFORMATERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PINEXISTS , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PINNOTFOUND , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_USERACTIVE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_USERINACTIVE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PARENTNOTFOUND , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOCHAIN , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_CAUGHTINLOOP , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_EVENTFILTERED , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PAYLOADTOOLARGE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_ENDOFDATA , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_RMTAUTHREJECTED , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NVRAMVERSIONERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOHARDWARE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_SCHEDULERCONFLICT , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NVRAMWRITEERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_DECLINEDFILTERED , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NECONFIGPARM , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_FLASHERASEERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_FLASHWRITEERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_BADNVBACKUP , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_EARLYACK , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_ALARMFILTERED , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_ACVFAILURE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_USERCHECKSUMERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_CHECKSUMERROR , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_RTCSQWFAILURE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_PRIORITYSHUTDOWN , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_NOTMODIFIABLE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_CANTPRESERVE , dissect_r3_response_singlebyte } ,
{ RESPONSETYPE_INPASSAGEMODE , dissect_r3_response_singlebyte }
} ;
static void dissect_r3_upstreamcommand_reserved ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_debugmsg ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_queryversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_querydatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_queryserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpeventlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_rmtquthrequest ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_retrieveuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_queryconfig ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_rmteventlogrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dpac ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_notify ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_mfg ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_eventlogwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpnvramrle ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_rmtdeclinedrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_declinedwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpdeclinedlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_rmtalarmrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_alarmwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpalarmlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_connectscheduler ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_connectcommuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_commandalarm ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreamcommand_dumpdebuglog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static dissectorParser_t r3upstreamcommand_dissect [ ] =
{
{ UPSTREAMCOMMAND_RESERVED , dissect_r3_upstreamcommand_reserved } ,
{ UPSTREAMCOMMAND_DEBUGMSG , dissect_r3_upstreamcommand_debugmsg } ,
{ UPSTREAMCOMMAND_QUERYVERSION , dissect_r3_upstreamcommand_queryversion } ,
{ UPSTREAMCOMMAND_QUERYDATETIME , dissect_r3_upstreamcommand_querydatetime } ,
{ UPSTREAMCOMMAND_QUERYSERIALNUMBER , dissect_r3_upstreamcommand_queryserialnumber } ,
{ UPSTREAMCOMMAND_DUMPEVENTLOG , dissect_r3_upstreamcommand_dumpeventlog } ,
{ UPSTREAMCOMMAND_DUMPNVRAM , dissect_r3_upstreamcommand_dumpnvram } ,
{ UPSTREAMCOMMAND_RMTAUTHREQUEST , dissect_r3_upstreamcommand_rmtquthrequest } ,
{ UPSTREAMCOMMAND_RETRIEVEUSER , dissect_r3_upstreamcommand_retrieveuser } ,
{ UPSTREAMCOMMAND_QUERYCONFIG , dissect_r3_upstreamcommand_queryconfig } ,
{ UPSTREAMCOMMAND_RMTEVENTLOGRECORD , dissect_r3_upstreamcommand_rmteventlogrecord } ,
{ UPSTREAMCOMMAND_DPAC , dissect_r3_upstreamcommand_dpac } ,
{ UPSTREAMCOMMAND_NOTIFY , dissect_r3_upstreamcommand_notify } ,
{ UPSTREAMCOMMAND_MFG , dissect_r3_upstreamcommand_mfg } ,
{ UPSTREAMCOMMAND_EVENTLOGWARNING , dissect_r3_upstreamcommand_eventlogwarning } ,
{ UPSTREAMCOMMAND_DUMPNVRAMRLE , dissect_r3_upstreamcommand_dumpnvramrle } ,
{ UPSTREAMCOMMAND_RMTDECLINEDRECORD , dissect_r3_upstreamcommand_rmtdeclinedrecord } ,
{ UPSTREAMCOMMAND_DECLINEDWARNING , dissect_r3_upstreamcommand_declinedwarning } ,
{ UPSTREAMCOMMAND_DUMPDECLINEDLOG , dissect_r3_upstreamcommand_dumpdeclinedlog } ,
{ UPSTREAMCOMMAND_RMTALARMRECORD , dissect_r3_upstreamcommand_rmtalarmrecord } ,
{ UPSTREAMCOMMAND_ALARMWARNING , dissect_r3_upstreamcommand_alarmwarning } ,
{ UPSTREAMCOMMAND_DUMPALARMLOG , dissect_r3_upstreamcommand_dumpalarmlog } ,
{ UPSTREAMCOMMAND_CONNECTSCHEDULER , dissect_r3_upstreamcommand_connectscheduler } ,
{ UPSTREAMCOMMAND_CONNECTCOMMUSER , dissect_r3_upstreamcommand_connectcommuser } ,
{ UPSTREAMCOMMAND_CONNECTALARM , dissect_r3_upstreamcommand_commandalarm } ,
{ UPSTREAMCOMMAND_DUMPDEBUGLOG , dissect_r3_upstreamcommand_dumpdebuglog }
} ;
static void dissect_r3_upstreammfgfield_iopins ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_adcs ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_hardwareid ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_checkpointlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_cpuregisters ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_taskflags ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_timerchain ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_peekpoke ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_lockstate ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_capabilities ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_dumpm41t81 ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_nvramchecksumvalue ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_checksumresults ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_mortisestatelog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_mortisepins ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_keypadchar ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_magcard ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static void dissect_r3_upstreammfgfield_proxcard ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree ) ;
static dissectorParser_t r3upstreammfgfield_dissect [ ] =
{
{ MFGFIELD_IOPINS , dissect_r3_upstreammfgfield_iopins } ,
{ MFGFIELD_ADCS , dissect_r3_upstreammfgfield_adcs } ,
{ MFGFIELD_HARDWAREID , dissect_r3_upstreammfgfield_hardwareid } ,
{ MFGFIELD_CHECKPOINTLOG , dissect_r3_upstreammfgfield_checkpointlog } ,
{ MFGFIELD_CPUREGISTERS , dissect_r3_upstreammfgfield_cpuregisters } ,
{ MFGFIELD_TASKFLAGS , dissect_r3_upstreammfgfield_taskflags } ,
{ MFGFIELD_TIMERCHAIN , dissect_r3_upstreammfgfield_timerchain } ,
{ MFGFIELD_PEEKPOKE , dissect_r3_upstreammfgfield_peekpoke } ,
{ MFGFIELD_LOCKSTATE , dissect_r3_upstreammfgfield_lockstate } ,
{ MFGFIELD_CAPABILITIES , dissect_r3_upstreammfgfield_capabilities } ,
{ MFGFIELD_DUMPM41T81 , dissect_r3_upstreammfgfield_dumpm41t81 } ,
{ MFGFIELD_NVRAMCHECKSUMVALUE , dissect_r3_upstreammfgfield_nvramchecksumvalue } ,
{ MFGFIELD_CHECKSUMRESULTS , dissect_r3_upstreammfgfield_checksumresults } ,
{ MFGFIELD_MORTISESTATELOG , dissect_r3_upstreammfgfield_mortisestatelog } ,
{ MFGFIELD_MORTISEPINS , dissect_r3_upstreammfgfield_mortisepins } ,
{ MFGFIELD_KEYPADCHAR , dissect_r3_upstreammfgfield_keypadchar } ,
{ MFGFIELD_MAGCARD , dissect_r3_upstreammfgfield_magcard } ,
{ MFGFIELD_PROXCARD , dissect_r3_upstreammfgfield_proxcard }
} ;
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Cannot use epan / crc routines as ccitt - x25 uses a starting value of 0xffff
* and we use 0x0000 ( legacy compatibility ) . If an override method to set
* the starting value existed , these could be replaced .
*/
static const guint16 ccitt_16 [ 256 ] =
{
0x0000 , 0x1021 , 0x2042 , 0x3063 , 0x4084 , 0x50a5 , 0x60c6 , 0x70e7 ,
0x8108 , 0x9129 , 0xa14a , 0xb16b , 0xc18c , 0xd1ad , 0xe1ce , 0xf1ef ,
0x1231 , 0x0210 , 0x3273 , 0x2252 , 0x52b5 , 0x4294 , 0x72f7 , 0x62d6 ,
0x9339 , 0x8318 , 0xb37b , 0xa35a , 0xd3bd , 0xc39c , 0xf3ff , 0xe3de ,
0x2462 , 0x3443 , 0x0420 , 0x1401 , 0x64e6 , 0x74c7 , 0x44a4 , 0x5485 ,
0xa56a , 0xb54b , 0x8528 , 0x9509 , 0xe5ee , 0xf5cf , 0xc5ac , 0xd58d ,
0x3653 , 0x2672 , 0x1611 , 0x0630 , 0x76d7 , 0x66f6 , 0x5695 , 0x46b4 ,
0xb75b , 0xa77a , 0x9719 , 0x8738 , 0xf7df , 0xe7fe , 0xd79d , 0xc7bc ,
0x48c4 , 0x58e5 , 0x6886 , 0x78a7 , 0x0840 , 0x1861 , 0x2802 , 0x3823 ,
0xc9cc , 0xd9ed , 0xe98e , 0xf9af , 0x8948 , 0x9969 , 0xa90a , 0xb92b ,
0x5af5 , 0x4ad4 , 0x7ab7 , 0x6a96 , 0x1a71 , 0x0a50 , 0x3a33 , 0x2a12 ,
0xdbfd , 0xcbdc , 0xfbbf , 0xeb9e , 0x9b79 , 0x8b58 , 0xbb3b , 0xab1a ,
0x6ca6 , 0x7c87 , 0x4ce4 , 0x5cc5 , 0x2c22 , 0x3c03 , 0x0c60 , 0x1c41 ,
0xedae , 0xfd8f , 0xcdec , 0xddcd , 0xad2a , 0xbd0b , 0x8d68 , 0x9d49 ,
0x7e97 , 0x6eb6 , 0x5ed5 , 0x4ef4 , 0x3e13 , 0x2e32 , 0x1e51 , 0x0e70 ,
0xff9f , 0xefbe , 0xdfdd , 0xcffc , 0xbf1b , 0xaf3a , 0x9f59 , 0x8f78 ,
0x9188 , 0x81a9 , 0xb1ca , 0xa1eb , 0xd10c , 0xc12d , 0xf14e , 0xe16f ,
0x1080 , 0x00a1 , 0x30c2 , 0x20e3 , 0x5004 , 0x4025 , 0x7046 , 0x6067 ,
0x83b9 , 0x9398 , 0xa3fb , 0xb3da , 0xc33d , 0xd31c , 0xe37f , 0xf35e ,
0x02b1 , 0x1290 , 0x22f3 , 0x32d2 , 0x4235 , 0x5214 , 0x6277 , 0x7256 ,
0xb5ea , 0xa5cb , 0x95a8 , 0x8589 , 0xf56e , 0xe54f , 0xd52c , 0xc50d ,
0x34e2 , 0x24c3 , 0x14a0 , 0x0481 , 0x7466 , 0x6447 , 0x5424 , 0x4405 ,
0xa7db , 0xb7fa , 0x8799 , 0x97b8 , 0xe75f , 0xf77e , 0xc71d , 0xd73c ,
0x26d3 , 0x36f2 , 0x0691 , 0x16b0 , 0x6657 , 0x7676 , 0x4615 , 0x5634 ,
0xd94c , 0xc96d , 0xf90e , 0xe92f , 0x99c8 , 0x89e9 , 0xb98a , 0xa9ab ,
0x5844 , 0x4865 , 0x7806 , 0x6827 , 0x18c0 , 0x08e1 , 0x3882 , 0x28a3 ,
0xcb7d , 0xdb5c , 0xeb3f , 0xfb1e , 0x8bf9 , 0x9bd8 , 0xabbb , 0xbb9a ,
0x4a75 , 0x5a54 , 0x6a37 , 0x7a16 , 0x0af1 , 0x1ad0 , 0x2ab3 , 0x3a92 ,
0xfd2e , 0xed0f , 0xdd6c , 0xcd4d , 0xbdaa , 0xad8b , 0x9de8 , 0x8dc9 ,
0x7c26 , 0x6c07 , 0x5c64 , 0x4c45 , 0x3ca2 , 0x2c83 , 0x1ce0 , 0x0cc1 ,
0xef1f , 0xff3e , 0xcf5d , 0xdf7c , 0xaf9b , 0xbfba , 0x8fd9 , 0x9ff8 ,
0x6e17 , 0x7e36 , 0x4e55 , 0x5e74 , 0x2e93 , 0x3eb2 , 0x0ed1 , 0x1ef0
} ;
static guint16 utilCrcCalculate ( const void * ptr , guint16 len , guint16 crc )
{
guint8 * p = ( guint8 * ) ptr ;
while ( len - - )
crc = ( guint16 ) ( ( crc < < 8 ) ^ ccitt_16 [ ( crc > > 8 ) ^ * p + + ] ) ;
return crc ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
static void dissect_serialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree , int hf_index )
{
proto_item * sn_item = NULL ;
proto_tree * sn_tree = NULL ;
const gchar * s = NULL ;
tvb_ensure_bytes_exist ( tvb , start_offset , 16 ) ;
sn_item = proto_tree_add_item ( tree , hf_index , tvb , start_offset , 16 , TRUE ) ;
sn_tree = proto_item_add_subtree ( sn_item , ett_r3serialnumber ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 0 , 2 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 0 , 2 , " Manufacturer .. : %s (%s) " , s , str_to_str ( s , r3_snmanufacturernames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 2 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 2 , 1 , " Year .......... : %s (%s) " , s , str_to_str ( s , r3_snyearnames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 3 , 2 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 3 , 2 , " Week .......... : %s " , s ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 5 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 5 , 1 , " Model ......... : %s (%s) " , s , str_to_str ( s , r3_snmodelnames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 6 , 4 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 6 , 4 , " Sequence ...... : %s " , s ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 10 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 10 , 1 , " Group ......... : %s (%s) " , s , str_to_str ( s , r3_sngroupnames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 11 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 11 , 1 , " NID ........... : %s (%s) " , s , str_to_str ( s , r3_snnidnames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 12 , 2 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 12 , 2 , " HID ........... : %s (%s) " , s , str_to_str ( s , r3_snhidnames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 14 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 14 , 1 , " Power Supply .. : %s (%s) " , s , str_to_str ( s , r3_snpowersupplynames , " [Unknown] " ) ) ;
s = tvb_get_ephemeral_string ( tvb , start_offset + 15 , 1 ) ;
proto_tree_add_text ( sn_tree , tvb , start_offset + 15 , 1 , " Mortise ....... : %s (%s) " , s , str_to_str ( s , r3_snmortisenames , " [Unknown] " ) ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* We ' ve already ensured we have enough bytes in the table via tvb_ensure_bytes_exist ( )
*
*/
static void dissect_r3_upstreamfields ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length , packet_info * pinfo , proto_tree * tree )
{
guint32 offset = 0 ;
while ( offset < tvb_reported_length ( tvb ) )
{
guint32 fieldLength = tvb_get_guint8 ( tvb , offset + 0 ) ;
guint32 fieldType = tvb_get_guint8 ( tvb , offset + 1 ) ;
guint32 dataLength = fieldLength - 2 ;
proto_item * upstreamfield_item = NULL ;
proto_tree * upstreamfield_tree = NULL ;
const gchar * usfn = NULL ;
usfn = val_to_str_const ( fieldType , r3_upstreamfieldnames , " [Unknown Field] " ) ;
upstreamfield_item = proto_tree_add_none_format ( tree , hf_r3_upstreamfield , tvb , offset + 0 , fieldLength , " Upstream Field: %s (%u) " , usfn , fieldType ) ;
upstreamfield_tree = proto_item_add_subtree ( upstreamfield_item , ett_r3upstreamfield ) ;
proto_tree_add_item ( upstreamfield_tree , hf_r3_upstreamfieldlength , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( upstreamfield_tree , hf_r3_upstreamfieldtype , tvb , offset + 1 , 1 , TRUE ) ;
offset + = 2 ;
switch ( fieldType )
{
/*
* Strings , booleans , 8 & 16 bit values
*/
case UPSTREAMFIELD_NOTUSED :
case UPSTREAMFIELD_PIN :
case UPSTREAMFIELD_VERSION :
case UPSTREAMFIELD_PRIMARYPIN :
case UPSTREAMFIELD_AUXPIN :
case UPSTREAMFIELD_AUXCTLRVERSION :
case UPSTREAMFIELD_ACCESSALWAYS :
case UPSTREAMFIELD_CACHED :
case UPSTREAMFIELD_ENTRYDEVICE :
case UPSTREAMFIELD_PPMIFIELDTYPE :
case UPSTREAMFIELD_RESPONSEWINDOW :
case UPSTREAMFIELD_USERTYPE :
case UPSTREAMFIELD_PRIMARYFIELDTYPE :
case UPSTREAMFIELD_AUXFIELDTYPE :
case UPSTREAMFIELD_ACCESSMODE :
case UPSTREAMFIELD_USECOUNT :
case UPSTREAMFIELD_EXCEPTIONGROUP :
case UPSTREAMFIELD_NAR :
case UPSTREAMFIELD_SEQUENCENUMBER :
case UPSTREAMFIELD_USERNUMBER :
case UPSTREAMFIELD_EVENTLOGRECORDCOUNT :
case UPSTREAMFIELD_DECLINEDRECORDCOUNT :
case UPSTREAMFIELD_ALARMRECORDCOUNT :
proto_tree_add_item ( upstreamfield_tree , hf_r3_upstreamfieldarray [ fieldType ] , tvb , offset , dataLength , TRUE ) ;
break ;
/*
* Special types
*/
case UPSTREAMFIELD_SERIALNUMBER :
{
tvbuff_t * sn_tvb = tvb_new_subset ( tvb , offset , dataLength , dataLength ) ;
dissect_serialnumber ( sn_tvb , 0 , length , pinfo , upstreamfield_tree , hf_r3_upstreamfieldarray [ fieldType ] ) ;
}
break ;
case UPSTREAMFIELD_EVENTLOGRECORD :
{
proto_item * eventlog_item = NULL ;
proto_tree * eventlog_tree = NULL ;
if ( dataLength ! = 9 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed event log field -- expected 9 octets " ) ;
else
{
eventlog_item = proto_tree_add_text ( upstreamfield_tree , tvb , offset , 9 , " Event Log Record " ) ;
eventlog_tree = proto_item_add_subtree ( eventlog_item , ett_r3eventlogrecord ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_year , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_month , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_day , tvb , offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_hour , tvb , offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_minute , tvb , offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_second , tvb , offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_usernumber , tvb , offset + 6 , 2 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_event , tvb , offset + 8 , 1 , TRUE ) ;
}
}
break ;
case UPSTREAMFIELD_DATETIME :
{
proto_item * datetime_item = NULL ;
proto_tree * datetime_tree = NULL ;
if ( dataLength ! = 8 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed date/time field -- expected 8 octets " ) ;
else
{
datetime_item = proto_tree_add_text ( upstreamfield_tree , tvb , offset , 8 , " Date/Time: %02u/%02u/%02u-%u %02u:%02u:%02u %u " ,
tvb_get_guint8 ( tvb , offset + 0 ) , tvb_get_guint8 ( tvb , offset + 1 ) , tvb_get_guint8 ( tvb , offset + 2 ) , tvb_get_guint8 ( tvb , offset + 3 ) ,
tvb_get_guint8 ( tvb , offset + 4 ) , tvb_get_guint8 ( tvb , offset + 5 ) , tvb_get_guint8 ( tvb , offset + 6 ) , tvb_get_guint8 ( tvb , offset + 7 ) ) ;
datetime_tree = proto_item_add_subtree ( datetime_item , ett_r3datetime ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_year , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_month , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_day , tvb , offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_dow , tvb , offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_hours , tvb , offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_minutes , tvb , offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_seconds , tvb , offset + 6 , 1 , TRUE ) ;
proto_tree_add_item ( datetime_tree , hf_r3_datetime_dst , tvb , offset + 7 , 1 , TRUE ) ;
}
}
break ;
case UPSTREAMFIELD_DECLINEDRECORD :
{
proto_item * declinedlog_item = NULL ;
proto_tree * declinedlog_tree = NULL ;
guint8 cred1type = 0 ;
guint8 cred2type = 0 ;
if ( dataLength ! = 49 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed declined log field -- expected 49 octets " ) ;
else
{
declinedlog_item = proto_tree_add_text ( upstreamfield_tree , tvb , offset , 49 , " Declined Log Record " ) ;
declinedlog_tree = proto_item_add_subtree ( declinedlog_item , ett_r3declinedlogrecord ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_year , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_month , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_day , tvb , offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_hour , tvb , offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_minute , tvb , offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_second , tvb , offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_usernumber , tvb , offset + 6 , 2 , TRUE ) ;
cred1type = tvb_get_guint8 ( tvb , offset + 8 ) & 0x07 ;
cred2type = ( tvb_get_guint8 ( tvb , offset + 8 ) & 0x38 ) > > 3 ;
proto_tree_add_uint ( declinedlog_tree , hf_r3_declinedlog_cred1type , tvb , offset , 1 , cred1type ) ;
proto_tree_add_uint ( declinedlog_tree , hf_r3_declinedlog_cred2type , tvb , offset , 1 , cred2type ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_cred1 , tvb , offset + 9 , 19 , TRUE ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_cred2 , tvb , offset + 28 , 19 , TRUE ) ;
}
}
break ;
case UPSTREAMFIELD_EXPIREON :
{
proto_item * expireon_item = NULL ;
proto_tree * expireon_tree = NULL ;
if ( dataLength ! = 3 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed expiration field -- expected 3 octets " ) ;
else
{
expireon_item = proto_tree_add_text ( upstreamfield_tree , tvb , offset , 3 , " Expire YY/MM/DD: %02u/%02u/%02u " ,
tvb_get_guint8 ( tvb , offset + 2 ) , tvb_get_guint8 ( tvb , offset + 0 ) , tvb_get_guint8 ( tvb , offset + 1 ) ) ;
expireon_tree = proto_item_add_subtree ( expireon_item , ett_r3expireon ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_month , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_day , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_year , tvb , offset + 2 , 1 , TRUE ) ;
}
}
break ;
case UPSTREAMFIELD_TIMEZONE :
{
guint32 i ;
guint32 tz ;
proto_item * timezone_item = NULL ;
proto_tree * timezone_tree = NULL ;
if ( dataLength ! = 4 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed timezone field -- expected 4 octets " ) ;
else
{
tz = tvb_get_letohl ( tvb , offset ) ;
timezone_item = proto_tree_add_item ( upstreamfield_tree , hf_r3_upstreamfieldarray [ fieldType ] , tvb , offset , 4 , TRUE ) ;
timezone_tree = proto_item_add_subtree ( timezone_item , ett_r3timezone ) ;
for ( i = 0 ; i < 32 ; i + + )
proto_tree_add_boolean ( timezone_tree , hf_r3_timezonearray [ i ] , tvb , offset , 4 , tz ) ;
}
}
break ;
case UPSTREAMFIELD_ALARMRECORD :
{
proto_item * alarmlog_item = NULL ;
proto_tree * alarmlog_tree = NULL ;
alarmlog_item = proto_tree_add_text ( upstreamfield_tree , tvb , offset , 9 , " Alarm Record " ) ;
alarmlog_tree = proto_item_add_subtree ( alarmlog_item , ett_r3alarmlogrecord ) ;
if ( dataLength ! = 9 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed alarm log field -- expected 9 octets " ) ;
else
{
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_year , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_month , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_day , tvb , offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_hour , tvb , offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_minute , tvb , offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_second , tvb , offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_id , tvb , offset + 6 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_usernumber , tvb , offset + 7 , 2 , TRUE ) ;
}
}
break ;
default :
proto_tree_add_none_format ( upstreamfield_tree , hf_r3_upstreamfielderror , tvb , offset , dataLength , " Unknown Field Type " ) ;
break ;
}
offset + = dataLength ;
}
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* These are passed a tvb that contains whatever occurs after the [ UPSTREAMCOMMAND_ * ] byte
*/
static void dissect_r3_upstreamcommand_reserved ( tvbuff_t * tvb _U_ , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree _U_ )
{
DISSECTOR_ASSERT ( 0 ) ;
}
static void dissect_r3_upstreamcommand_debugmsg ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * debugmsg_item = NULL ;
proto_tree * debugmsg_tree = NULL ;
debugmsg_item = proto_tree_add_text ( tree , tvb , start_offset , - 1 , " Debug message " ) ;
debugmsg_tree = proto_item_add_subtree ( debugmsg_item , ett_r3debugmsg ) ;
proto_tree_add_item ( debugmsg_tree , hf_r3_debugmsg , tvb , start_offset + 1 , - 1 , TRUE ) ;
}
static void dissect_r3_upstreamcommand_queryversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_querydatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_queryserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dumpeventlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
proto_item * eventlog_item = NULL ;
proto_tree * eventlog_tree = NULL ;
const gchar * en = NULL ;
tvb_ensure_bytes_exist ( tvb , start_offset , 11 ) ;
if ( length ! = 11 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed event log record -- expected 10 octets " ) ;
else
{
en = val_to_str_const ( tvb_get_guint8 ( tvb , start_offset + 10 ) , r3_eventnames , " [Unknown Event] " ) ;
eventlog_item = proto_tree_add_text ( tree , tvb , start_offset , 10 , " Event Log Record %u (%s) " , tvb_get_letohs ( tvb , start_offset + 0 ) , en ) ;
eventlog_tree = proto_item_add_subtree ( eventlog_item , ett_r3eventlogrecord ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_recordnumber , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_year , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_month , tvb , start_offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_day , tvb , start_offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_hour , tvb , start_offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_minute , tvb , start_offset + 6 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_second , tvb , start_offset + 7 , 1 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_usernumber , tvb , start_offset + 8 , 2 , TRUE ) ;
proto_tree_add_item ( eventlog_tree , hf_r3_eventlog_event , tvb , start_offset + 10 , 1 , TRUE ) ;
}
}
static void dissect_r3_upstreamcommand_dumpnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
tvb_ensure_bytes_exist ( tvb , start_offset , 3 ) ;
proto_tree_add_item ( tree , hf_r3_nvramdump_record , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_nvramdump_length , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_nvramdump_data , tvb , start_offset + 3 , tvb_get_guint8 ( tvb , start_offset + 2 ) , TRUE ) ;
}
static void dissect_r3_upstreamcommand_rmtquthrequest ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_retrieveuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_queryconfig ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint32 offset = 0 ;
while ( offset < tvb_reported_length ( tvb ) )
{
proto_item * upstreamfield_item = NULL ;
proto_tree * upstreamfield_tree = NULL ;
const gchar * ci = NULL ;
ci = val_to_str_const ( tvb_get_guint8 ( tvb , offset + 1 ) , r3_configitemnames , " [Unknown Configuration Item] " ) ;
upstreamfield_item = proto_tree_add_text ( tree , tvb , offset + 0 , tvb_get_guint8 ( tvb , offset + 0 ) , " Config Field: %s (%u) " , ci , tvb_get_guint8 ( tvb , offset + 1 ) ) ;
upstreamfield_tree = proto_item_add_subtree ( upstreamfield_item , ett_r3upstreamfield ) ;
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemlength , tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitem , tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemtype , tvb , offset + 2 , 1 , TRUE ) ;
switch ( tvb_get_guint8 ( tvb , offset + 2 ) )
{
case CONFIGTYPE_NONE :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata , tvb , offset + 3 , tvb_get_guint8 ( tvb , offset + 0 ) - 3 , TRUE ) ;
break ;
case CONFIGTYPE_BOOL :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata_bool , tvb , offset + 3 , 1 , TRUE ) ;
break ;
case CONFIGTYPE_8 :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata_8 , tvb , offset + 3 , 1 , TRUE ) ;
break ;
case CONFIGTYPE_16 :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata_16 , tvb , offset + 3 , 2 , TRUE ) ;
break ;
case CONFIGTYPE_32 :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata_32 , tvb , offset + 3 , 4 , TRUE ) ;
break ;
case CONFIGTYPE_STRING :
proto_tree_add_item ( upstreamfield_tree , hf_r3_configitemdata_string , tvb , offset + 3 , tvb_get_guint8 ( tvb , offset + 0 ) - 3 , TRUE ) ;
break ;
default :
proto_tree_add_none_format ( upstreamfield_tree , hf_r3_upstreamfielderror , tvb , offset + 3 , tvb_get_guint8 ( tvb , offset + 0 ) - 3 , " Unknown Field Type " ) ;
break ;
}
offset + = tvb_get_guint8 ( tvb , offset + 0 ) ;
}
}
static void dissect_r3_upstreamcommand_rmteventlogrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dpac ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_dpacreply_stuff , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_dpacreply_length , tvb , start_offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_dpacreply_reply , tvb , start_offset + 4 , - 1 , TRUE ) ;
}
static void dissect_r3_upstreamcommand_notify ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_mfg ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length , packet_info * pinfo , proto_tree * tree )
{
proto_item * mfg_item = NULL ;
proto_tree * mfg_tree = NULL ;
tvbuff_t * mfg_tvb = NULL ;
const gchar * cn ;
mfg_tvb = tvb_new_subset ( tvb , 2 , tvb_reported_length ( tvb ) - 2 , tvb_reported_length ( tvb ) - 2 ) ;
cn = val_to_str_const ( tvb_get_guint8 ( tvb , 1 ) , r3_mfgfieldnames , " [Unknown Mfg Field] " ) ;
proto_tree_add_item ( tree , hf_r3_mfgfield_length , tvb , 0 , 1 , TRUE ) ;
mfg_item = proto_tree_add_text ( tree , tvb , 1 , - 1 , " Upstream Manufacturing Field: %s (%u) " , cn , tvb_get_guint8 ( tvb , 1 ) ) ;
mfg_tree = proto_item_add_subtree ( mfg_item , ett_r3commandmfg ) ;
proto_tree_add_item ( mfg_tree , hf_r3_mfgfield , tvb , 1 , 1 , TRUE ) ;
if ( tvb_get_guint8 ( tvb , 1 ) > = MFGFIELD_LAST )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Unknown manufacturing command value " ) ;
else if ( r3upstreammfgfield_dissect [ tvb_get_guint8 ( tvb , 1 ) ] . dissector )
( * r3upstreammfgfield_dissect [ tvb_get_guint8 ( tvb , 1 ) ] . dissector ) ( mfg_tvb , 0 , length , pinfo , mfg_tree ) ;
}
static void dissect_r3_upstreamcommand_eventlogwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dumpnvramrle ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_nvramdumprle_record , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_nvramdumprle_length , tvb , start_offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_nvramdumprle_data , tvb , start_offset + 4 , tvb_get_guint8 ( tvb , start_offset + 3 ) , TRUE ) ;
}
static void dissect_r3_upstreamcommand_rmtdeclinedrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_declinedwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dumpdeclinedlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * declinedlog_item = NULL ;
proto_tree * declinedlog_tree = NULL ;
guint8 cred1type = 0 ;
guint8 cred2type = 0 ;
declinedlog_item = proto_tree_add_text ( tree , tvb , start_offset , 49 , " Declined Log Record %u " , tvb_get_letohs ( tvb , start_offset + 0 ) ) ;
declinedlog_tree = proto_item_add_subtree ( declinedlog_item , ett_r3declinedlogrecord ) ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_recordnumber , tvb , start_offset , 2 , TRUE ) ; start_offset + = 2 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_year , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_month , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_day , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_hour , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_minute , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_second , tvb , start_offset , 1 , TRUE ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_usernumber , tvb , start_offset , 2 , TRUE ) ; start_offset + = 2 ;
cred1type = tvb_get_guint8 ( tvb , start_offset ) & 0x07 ;
cred2type = ( tvb_get_guint8 ( tvb , start_offset ) & 0x38 ) > > 3 ;
proto_tree_add_uint ( declinedlog_tree , hf_r3_declinedlog_cred1type , tvb , start_offset , 1 , cred1type ) ; start_offset + = 0 ;
proto_tree_add_uint ( declinedlog_tree , hf_r3_declinedlog_cred2type , tvb , start_offset , 1 , cred2type ) ; start_offset + = 1 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_cred1 , tvb , start_offset , 19 , TRUE ) ; start_offset + = 19 ;
proto_tree_add_item ( declinedlog_tree , hf_r3_declinedlog_cred2 , tvb , start_offset , 19 , TRUE ) ;
}
static void dissect_r3_upstreamcommand_rmtalarmrecord ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_alarmwarning ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dumpalarmlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * alarmlog_item = proto_tree_add_text ( tree , tvb , start_offset , 9 , " Alarm Log Record %u " , tvb_get_letohs ( tvb , start_offset + 0 ) ) ;
proto_tree * alarmlog_tree = proto_item_add_subtree ( alarmlog_item , ett_r3alarmlogrecord ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_recordnumber , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_year , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_month , tvb , start_offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_day , tvb , start_offset + 4 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_hour , tvb , start_offset + 5 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_minute , tvb , start_offset + 6 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_second , tvb , start_offset + 7 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_id , tvb , start_offset + 8 , 1 , TRUE ) ;
proto_tree_add_item ( alarmlog_tree , hf_r3_alarmlog_usernumber , tvb , start_offset + 9 , 2 , TRUE ) ;
}
static void dissect_r3_upstreamcommand_connectscheduler ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_connectcommuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_commandalarm ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
dissect_r3_upstreamfields ( tvb , start_offset , length , pinfo , tree ) ;
}
static void dissect_r3_upstreamcommand_dumpdebuglog ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * debuglog_item = proto_tree_add_text ( tree , tvb , start_offset , 8 , " Debug Log Record %u " , tvb_get_letohs ( tvb , start_offset + 0 ) ) ;
proto_tree * debuglog_tree = proto_item_add_subtree ( debuglog_item , ett_r3debuglogrecord ) ;
proto_tree_add_item ( debuglog_tree , hf_r3_debuglog_recordnumber , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( debuglog_tree , hf_r3_debuglog_flags , tvb , start_offset + 2 , 4 , TRUE ) ;
proto_tree_add_item ( debuglog_tree , hf_r3_debuglog_tick , tvb , start_offset + 6 , 2 , TRUE ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
static void dissect_r3_upstreammfgfield_iopins ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo , proto_tree * tree )
{
guint32 i ;
guint32 l = tvb_length_remaining ( tvb , start_offset ) ;
char portname = ' A ' ;
if ( l % 3 ! = 0 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " IOPINS data length not modulo 3 == 0 " ) ;
else
{
for ( i = 0 ; i < l ; i + = 3 , portname + + )
{
proto_item * port_item = proto_tree_add_text ( tree , tvb , start_offset + i , 3 , " Port %c Configuration " , ( portname = = ' I ' ) ? + + portname : portname ) ;
proto_tree * port_tree = proto_item_add_subtree ( port_item , ett_r3iopins ) ;
proto_tree_add_item ( port_tree , hf_r3_iopins_lat , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( port_tree , hf_r3_iopins_port , tvb , start_offset + i + 1 , 1 , TRUE ) ;
proto_tree_add_item ( port_tree , hf_r3_iopins_tris , tvb , start_offset + i + 2 , 1 , TRUE ) ;
}
}
}
static void dissect_r3_upstreammfgfield_adcs ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint32 i ;
for ( i = 0 ; i < tvb_reported_length ( tvb ) ; i + + )
{
proto_item * item = proto_tree_add_item ( tree , hf_r3_adc [ i ] , tvb , start_offset + i , 1 , TRUE ) ;
proto_item_append_text ( item , " (%.2f Volts) " , ( float ) tvb_get_guint8 ( tvb , start_offset + i ) * 0.04154 ) ;
}
}
static void dissect_r3_upstreammfgfield_hardwareid ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_hardwareid_board , tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_hardwareid_cpuid , tvb , 1 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_hardwareid_cpurev , tvb , 3 , 1 , TRUE ) ;
}
static void dissect_r3_upstreammfgfield_checkpointlog ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * cpl_item = NULL ;
proto_tree * cpl_tree = NULL ;
guint counter = 0 ;
guint l = tvb_length_remaining ( tvb , start_offset + 1 ) ;
guint i ;
proto_tree_add_item ( tree , hf_r3_checkpointlog_entryptr , tvb , start_offset , 1 , TRUE ) ;
cpl_item = proto_tree_add_text ( tree , tvb , start_offset + 1 , - 1 , " Checkpoint Log " ) ;
cpl_tree = proto_item_add_subtree ( cpl_item , ett_r3checkpointlog ) ;
for ( start_offset + + , i = 0 ; i < l ; i + = 2 , counter + + )
{
guint rcon = tvb_get_guint8 ( tvb , start_offset + i + 0 ) ;
guint cp = tvb_get_guint8 ( tvb , start_offset + i + 1 ) ;
guint resettype = 0 ;
proto_item * cpe_item = proto_tree_add_text ( cpl_tree , tvb , start_offset + i + 0 , 2 , " Checkpoint Log Entry %u " , counter ) ;
proto_tree * cpe_tree = proto_item_add_subtree ( cpe_item , ett_r3checkpointlogentry ) ;
const gchar * resets [ ] = { " Stack underflow " , " Stack overflow " , " Power-On " , " Software " , " Brown-out " , " MCLR in sleep " , " WDT " , " Normal " , " [Unknown Reset Type] " } ;
const gchar * desc ;
desc = val_to_str_const ( cp , r3_checkpointnames , " [Unknown Checkpoint] " ) ;
if ( rcon = = 0xff )
resettype = 8 ;
else
{
rcon & = 0x1f ;
if ( rcon = = 0x1c )
resettype = 2 ;
else if ( ( rcon & 0x10 ) = = 0x00 )
resettype = 3 ;
else if ( ( rcon & 0x1d ) = = 0x1c )
resettype = 4 ;
else if ( ( rcon & 0x0c ) = = 0x08 )
resettype = 5 ;
else if ( ( rcon & 0x0c ) = = 0x04 )
resettype = 6 ;
else
resettype = 7 ;
}
proto_item_append_text ( cpe_item , " (%s, %s) " , resets [ resettype ] , desc ) ;
proto_item_append_text ( proto_tree_add_item ( cpe_tree , hf_r3_checkpointlog_rcon , tvb , start_offset + i + 0 , 1 , TRUE ) , " (%s) " , resets [ resettype ] ) ;
proto_item_append_text ( proto_tree_add_item ( cpe_tree , hf_r3_checkpointlog_checkpoint , tvb , start_offset + i + 1 , 1 , TRUE ) , " (%s) " , desc ) ;
}
}
static void dissect_r3_upstreammfgfield_cpuregisters ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree * tmp_tree [ 19 ] ;
proto_item * cr_item = proto_tree_add_text ( tree , tvb , start_offset , - 1 , " CPU Registers " ) ;
proto_tree * cr_tree = proto_item_add_subtree ( cr_item , ett_r3cpuregisters ) ;
tmp_tree [ 0 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_intcon , tvb , start_offset + 0 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 1 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_intcon2 , tvb , start_offset + 1 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 2 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_intcon3 , tvb , start_offset + 2 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 3 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pir1 , tvb , start_offset + 3 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 4 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pir2 , tvb , start_offset + 4 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 5 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pir3 , tvb , start_offset + 5 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 6 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pie1 , tvb , start_offset + 6 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 7 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pie2 , tvb , start_offset + 7 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 8 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_pie3 , tvb , start_offset + 8 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 9 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_ipr1 , tvb , start_offset + 9 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 10 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_ipr2 , tvb , start_offset + 10 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 11 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_ipr3 , tvb , start_offset + 11 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 12 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_rcon , tvb , start_offset + 12 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 13 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_osccon , tvb , start_offset + 13 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 14 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_rcsta , tvb , start_offset + 14 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 15 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_txsta , tvb , start_offset + 15 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 16 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_rcsta2 , tvb , start_offset + 16 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 17 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_txsta2 , tvb , start_offset + 17 , 1 , TRUE ) , ett_r3cpuregister ) ;
tmp_tree [ 18 ] = proto_item_add_subtree ( proto_tree_add_item ( cr_tree , hf_r3_cpuregisters_wdtcon , tvb , start_offset + 18 , 1 , TRUE ) , ett_r3cpuregister ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_rbif , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_int0if , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_tmr0if , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_rbie , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_int0ie , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_tmr0ie , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_giel , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 0 ] , hf_r3_cpuregisters_intcon_gieh , tvb , start_offset + 0 , 1 , tvb_get_guint8 ( tvb , start_offset + 0 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_rbip , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_int3ip , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_tmr0ip , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_intedg3 , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_intedg2 , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_intedg1 , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_intedg0 , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 1 ] , hf_r3_cpuregisters_intcon2_rbpu , tvb , start_offset + 1 , 1 , tvb_get_guint8 ( tvb , start_offset + 1 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int1if , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int2if , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int3if , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int1ie , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int2ie , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int3ie , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int1ip , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 2 ] , hf_r3_cpuregisters_intcon3_int2ip , tvb , start_offset + 2 , 1 , tvb_get_guint8 ( tvb , start_offset + 2 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_tmr1if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_tmr2if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_ccp1if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_ssp1if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_tx1if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_rc1if , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_adif , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 3 ] , hf_r3_cpuregisters_pir1_pspif , tvb , start_offset + 3 , 1 , tvb_get_guint8 ( tvb , start_offset + 3 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_ccp2if , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_tmr3if , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_hlvdif , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_bcl1if , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_eeif , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_unused5 , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_cmif , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 4 ] , hf_r3_cpuregisters_pir2_oscfif , tvb , start_offset + 4 , 1 , tvb_get_guint8 ( tvb , start_offset + 4 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_ccp3if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_ccp4if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_ccp5if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_tmr4if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_tx2if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_rc2if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_bcl2if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 5 ] , hf_r3_cpuregisters_pir3_ssp2if , tvb , start_offset + 5 , 1 , tvb_get_guint8 ( tvb , start_offset + 5 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_tmr1ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_tmr2ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_ccp1ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_ssp1ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_tx1ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_rc1ie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_adie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 6 ] , hf_r3_cpuregisters_pie1_pspie , tvb , start_offset + 6 , 1 , tvb_get_guint8 ( tvb , start_offset + 6 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_oscfie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_cmie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_unused2 , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_eeie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_bcl1ie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_hlvdie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_tmr3ie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 7 ] , hf_r3_cpuregisters_pie2_ccp2ie , tvb , start_offset + 7 , 1 , tvb_get_guint8 ( tvb , start_offset + 7 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_ccp3ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_ccp4ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_ccp5ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_tmr4ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_tx2ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_rc2ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_bcl2ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 8 ] , hf_r3_cpuregisters_pie3_ssp2ie , tvb , start_offset + 8 , 1 , tvb_get_guint8 ( tvb , start_offset + 8 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_tmr1ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_tmr2ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_ccp1ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_ssp1ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_tx1ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_rc1ip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_adip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 9 ] , hf_r3_cpuregisters_ipr1_pspip , tvb , start_offset + 9 , 1 , tvb_get_guint8 ( tvb , start_offset + 9 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_ccp2ip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_tmr3ip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_hlvdip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_bcl1ip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_eeip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_unused5 , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_cmip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 10 ] , hf_r3_cpuregisters_ipr2_oscfip , tvb , start_offset + 10 , 1 , tvb_get_guint8 ( tvb , start_offset + 10 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_ccp2ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_ccp4ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_ccp5ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_tmr4ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_tx2ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_rc2ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_bcl2ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 11 ] , hf_r3_cpuregisters_ipr3_ssp2ip , tvb , start_offset + 11 , 1 , tvb_get_guint8 ( tvb , start_offset + 11 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_bor , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_por , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_pd , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_to , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_unused4 , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_ri , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_sboren , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 12 ] , hf_r3_cpuregisters_rcon_ipen , tvb , start_offset + 12 , 1 , tvb_get_guint8 ( tvb , start_offset + 12 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_scs0 , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_scs1 , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_iofs , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_osts , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_ircf0 , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_ircf1 , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_ircf2 , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 13 ] , hf_r3_cpuregisters_osccon_idlen , tvb , start_offset + 13 , 1 , tvb_get_guint8 ( tvb , start_offset + 13 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_rx9d , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_oerr , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_ferr , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_adden , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_cren , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_sren , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_rx9 , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 14 ] , hf_r3_cpuregisters_rcsta_spen , tvb , start_offset + 14 , 1 , tvb_get_guint8 ( tvb , start_offset + 14 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_tx9d , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_trmt , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_brgh , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_sendb , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_sync , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_txen , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_tx9 , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 15 ] , hf_r3_cpuregisters_txsta_csrc , tvb , start_offset + 15 , 1 , tvb_get_guint8 ( tvb , start_offset + 15 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_rx9d , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_oerr , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_ferr , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_adden , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_cren , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_sren , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_rx9 , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 16 ] , hf_r3_cpuregisters_rcsta2_spen , tvb , start_offset + 16 , 1 , tvb_get_guint8 ( tvb , start_offset + 16 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_tx9d , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_trmt , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_brgh , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_sendb , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_sync , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_txen , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_tx9 , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 17 ] , hf_r3_cpuregisters_txsta2_csrc , tvb , start_offset + 17 , 1 , tvb_get_guint8 ( tvb , start_offset + 17 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_swdten , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused1 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused2 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused3 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused4 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused5 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused6 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
proto_tree_add_boolean ( tmp_tree [ 18 ] , hf_r3_cpuregisters_wdtcon_unused7 , tvb , start_offset + 18 , 1 , tvb_get_guint8 ( tvb , start_offset + 18 ) ) ;
}
static void dissect_r3_upstreammfgfield_taskflags ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint l = tvb_length_remaining ( tvb , start_offset ) ;
guint i ;
proto_item * tfg_item = proto_tree_add_text ( tree , tvb , start_offset , - 1 , " Task Flags (%u tasks) " , l / 5 ) ;
proto_tree * tfg_tree = proto_item_add_subtree ( tfg_item , ett_r3taskflags ) ;
for ( i = 0 ; i < l ; i + = 5 )
{
proto_item * tf_item = proto_tree_add_text ( tfg_tree , tvb , start_offset + i , 5 , " Task Flags (%2d: 0x%06x) " , tvb_get_guint8 ( tvb , start_offset + i + 0 ) , tvb_get_letohl ( tvb , start_offset + i + 1 ) ) ;
proto_tree * tf_tree = proto_item_add_subtree ( tf_item , ett_r3taskflagsentry ) ;
proto_tree_add_item ( tf_tree , hf_r3_taskflags_taskid , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tf_tree , hf_r3_taskflags_flags , tvb , start_offset + i + 1 , 4 , TRUE ) ;
}
}
static void dissect_r3_upstreammfgfield_timerchain ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint l = tvb_length_remaining ( tvb , start_offset + 3 ) ;
guint i ;
proto_tree_add_item ( tree , hf_r3_timerchain_newtick , tvb , start_offset + 0 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_timerchain_currentboundary , tvb , start_offset + 2 , 1 , TRUE ) ;
for ( start_offset + = 3 , i = 0 ; i < l ; i + = 12 )
{
proto_item * tc_item = proto_tree_add_text ( tree , tvb , start_offset + i , 12 , " Timer Chain Entry " ) ;
proto_tree * tc_tree = proto_item_add_subtree ( tc_item , ett_r3timerchain ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_tasktag , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_address , tvb , start_offset + i + 1 , 2 , TRUE ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_reload , tvb , start_offset + i + 3 , 2 , TRUE ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_boundary , tvb , start_offset + i + 5 , 1 , TRUE ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_count , tvb , start_offset + i + 6 , 2 , TRUE ) ;
proto_tree_add_item ( tc_tree , hf_r3_timerchain_flags , tvb , start_offset + i + 8 , 4 , TRUE ) ;
}
}
static void dissect_r3_upstreammfgfield_peekpoke ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint i ;
guint l = tvb_length_remaining ( tvb , start_offset ) ;
for ( i = 0 ; i < l ; i + = 3 )
{
proto_item * peekpoke_item = proto_tree_add_text ( tree , tvb , start_offset + i , 3 , " %s " , " " ) ;
proto_tree * peekpoke_tree = proto_item_add_subtree ( peekpoke_item , ett_r3peekpoke ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_operation , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_address , tvb , start_offset + i + 1 , 2 , TRUE ) ;
switch ( tvb_get_guint8 ( tvb , start_offset + i + 0 ) )
{
case PEEKPOKE_READU8 :
proto_item_append_text ( peekpoke_item , " Read (8 Bits @ 0x%04x = 0x%02x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) , tvb_get_guint8 ( tvb , start_offset + i + 3 ) ) ;
proto_item_set_len ( peekpoke_item , 4 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke8 , tvb , start_offset + i + 3 , 1 , TRUE ) ;
i + = 1 ;
break ;
case PEEKPOKE_READU16 :
proto_item_append_text ( peekpoke_item , " Read (16 Bits @ 0x%04x = 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) , tvb_get_letohs ( tvb , start_offset + i + 3 ) ) ;
proto_item_set_len ( peekpoke_item , 5 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke16 , tvb , start_offset + i + 3 , 2 , TRUE ) ;
i + = 2 ;
break ;
case PEEKPOKE_READU24 :
proto_item_append_text ( peekpoke_item , " Read (24 Bits @ 0x%04x = 0x%06x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) , tvb_get_letoh24 ( tvb , start_offset + i + 3 ) ) ;
proto_item_set_len ( peekpoke_item , 6 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke24 , tvb , start_offset + i + 3 , 3 , TRUE ) ;
i + = 3 ;
break ;
case PEEKPOKE_READU32 :
proto_item_append_text ( peekpoke_item , " Read (32 Bits @ 0x%04x = 0x%08x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) , tvb_get_letohl ( tvb , start_offset + i + 3 ) ) ;
proto_item_set_len ( peekpoke_item , 7 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke32 , tvb , start_offset + i + 3 , 4 , TRUE ) ;
i + = 4 ;
break ;
case PEEKPOKE_READSTRING :
proto_item_append_text ( peekpoke_item , " Read (%u Bytes @ 0x%04x) " , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 3 + 1 + tvb_get_guint8 ( tvb , start_offset + i + 3 ) ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_length , tvb , start_offset + i + 3 , 1 , TRUE ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_pokestring , tvb , start_offset + i + 4 , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , TRUE ) ;
i + = tvb_get_guint8 ( tvb , start_offset + i + 3 ) + 1 ;
break ;
default :
DISSECTOR_ASSERT ( 0 ) ;
}
}
}
static void dissect_r3_upstreammfgfield_lockstate ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * ls_item = proto_tree_add_text ( tree , tvb , start_offset , tvb_length_remaining ( tvb , start_offset ) , " Lock State (0x%06x) " , tvb_get_letoh24 ( tvb , start_offset ) ) ;
proto_tree * ls_tree = proto_item_add_subtree ( ls_item , ett_r3lockstate ) ;
guint ls = tvb_get_letoh24 ( tvb , start_offset ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_passage , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_panic , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_lockout , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_relock , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_autoopen , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_nextauto , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_lockstate , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_wantstate , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_remote , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_update , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_exceptionspresent , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_exceptionsactive , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_timezonespresent , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_timezonesactive , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_autounlockspresent , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_autounlocksactive , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_uapmspresent , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_uapmsactive , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_uapmrelockspresent , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_uapmreslocksactive , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_nvramprotect , tvb , start_offset , 3 , ls ) ;
proto_tree_add_boolean ( ls_tree , hf_r3_lockstate_nvramchecksum , tvb , start_offset , 3 , ls ) ;
}
static void dissect_r3_upstreammfgfield_capabilities ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * cf_item = NULL ;
proto_tree * cf_tree = NULL ;
guint l = tvb_length_remaining ( tvb , start_offset ) ;
guint items = 0 ;
2010-01-10 14:00:49 +00:00
guint octets ;
2009-11-28 01:16:52 +00:00
guint i ;
2010-01-10 14:00:49 +00:00
i = start_offset ;
while ( i < l )
{
2009-11-28 01:16:52 +00:00
items + + ;
2010-01-10 14:00:49 +00:00
octets = tvb_get_guint8 ( tvb , start_offset + i ) ;
if ( ! octets )
{
cf_item = proto_tree_add_text ( tree , tvb , start_offset , l , " Capabilities (unknown items) " ) ;
expert_add_info_format ( pinfo , cf_item , PI_MALFORMED , PI_WARN , " Capabilities could not be decoded because length of 0 encountered " ) ;
return ;
}
i + = octets ;
}
2009-11-28 01:16:52 +00:00
cf_item = proto_tree_add_text ( tree , tvb , start_offset , l , " Capabilities (%u items) " , items ) ;
cf_tree = proto_item_add_subtree ( cf_item , ett_r3capabilities ) ;
for ( i = start_offset ; i < l ; i + = tvb_get_guint8 ( tvb , start_offset + i ) )
{
proto_item * tmp_item = proto_tree_add_item ( cf_tree , hf_r3_capabilities , tvb , start_offset + i , tvb_get_guint8 ( tvb , start_offset + i ) , TRUE ) ;
proto_tree * tmp_tree = proto_item_add_subtree ( tmp_item , ett_r3capabilities ) ;
const gchar * fn ;
fn = val_to_str_const ( tvb_get_guint8 ( tvb , start_offset + i + 1 ) , r3_capabilitiesnames , " [Unknown Field Name] " ) ;
proto_item_append_text ( tmp_item , " (%s, %u) " , fn , tvb_get_letohs ( tvb , start_offset + i + 2 ) ) ;
proto_tree_add_item ( tmp_tree , hf_r3_capabilities_length , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tmp_tree , hf_r3_capabilities_type , tvb , start_offset + i + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tmp_tree , hf_r3_capabilities_value , tvb , start_offset + i + 2 , 2 , TRUE ) ;
}
}
static void dissect_r3_upstreammfgfield_dumpm41t81 ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo , proto_tree * tree )
{
proto_item * rtc_item = proto_tree_add_text ( tree , tvb , start_offset , - 1 , " M41T81 RTC Registers " ) ;
proto_tree * rtc_tree = proto_item_add_subtree ( rtc_item , ett_r3m41t81registers ) ;
proto_tree * tmp_tree [ 20 ] ;
guint offset_in_bits = start_offset * 8 ;
if ( tvb_length_remaining ( tvb , start_offset ) ! = 20 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Length of M41T81 RTC register dump not 20 octets " ) ;
else
{
tmp_tree [ 0 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg00 , tvb , start_offset + 0 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 1 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg01 , tvb , start_offset + 1 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 2 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg02 , tvb , start_offset + 2 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 3 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg03 , tvb , start_offset + 3 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 4 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg04 , tvb , start_offset + 4 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 5 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg05 , tvb , start_offset + 5 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 6 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg06 , tvb , start_offset + 6 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 7 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg07 , tvb , start_offset + 7 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 8 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg08 , tvb , start_offset + 8 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 9 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg09 , tvb , start_offset + 9 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 10 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0a , tvb , start_offset + 10 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 11 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0b , tvb , start_offset + 11 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 12 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0c , tvb , start_offset + 12 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 13 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0d , tvb , start_offset + 13 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 14 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0e , tvb , start_offset + 14 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 15 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg0f , tvb , start_offset + 15 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 16 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg10 , tvb , start_offset + 16 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 17 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg11 , tvb , start_offset + 17 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 18 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg12 , tvb , start_offset + 18 , 1 , TRUE ) , ett_r3m41t81register ) ;
tmp_tree [ 19 ] = proto_item_add_subtree ( proto_tree_add_item ( rtc_tree , hf_r3_dumpm41t81_reg13 , tvb , start_offset + 19 , 1 , TRUE ) , ett_r3m41t81register ) ;
proto_tree_add_bits_item ( tmp_tree [ 0 ] , hf_r3_dumpm41t81_reg00_sec1 , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 0 ] , hf_r3_dumpm41t81_reg00_sec01 , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 1 ] , hf_r3_dumpm41t81_reg01_st , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 1 ] , hf_r3_dumpm41t81_reg01_10sec , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 1 ] , hf_r3_dumpm41t81_reg01_1sec , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 2 ] , hf_r3_dumpm41t81_reg02_notused , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 2 ] , hf_r3_dumpm41t81_reg02_10min , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 2 ] , hf_r3_dumpm41t81_reg02_1min , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 3 ] , hf_r3_dumpm41t81_reg03_cbe , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 3 ] , hf_r3_dumpm41t81_reg03_cb , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 3 ] , hf_r3_dumpm41t81_reg03_10hour , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 3 ] , hf_r3_dumpm41t81_reg03_1hour , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 4 ] , hf_r3_dumpm41t81_reg04_notused , tvb , offset_in_bits , 5 , TRUE ) ; offset_in_bits + = 5 ;
proto_tree_add_bits_item ( tmp_tree [ 4 ] , hf_r3_dumpm41t81_reg04_dow , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 5 ] , hf_r3_dumpm41t81_reg05_notused , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 5 ] , hf_r3_dumpm41t81_reg05_10day , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 5 ] , hf_r3_dumpm41t81_reg05_1day , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 6 ] , hf_r3_dumpm41t81_reg06_notused , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 6 ] , hf_r3_dumpm41t81_reg06_10month , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 6 ] , hf_r3_dumpm41t81_reg06_1month , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 7 ] , hf_r3_dumpm41t81_reg07_10year , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 7 ] , hf_r3_dumpm41t81_reg07_1year , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 8 ] , hf_r3_dumpm41t81_reg08_out , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 8 ] , hf_r3_dumpm41t81_reg08_ft , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 8 ] , hf_r3_dumpm41t81_reg08_s , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 8 ] , hf_r3_dumpm41t81_reg08_cal , tvb , offset_in_bits , 5 , TRUE ) ; offset_in_bits + = 5 ;
proto_tree_add_bits_item ( tmp_tree [ 9 ] , hf_r3_dumpm41t81_reg09_notused , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 9 ] , hf_r3_dumpm41t81_reg09_bmb , tvb , offset_in_bits , 5 , TRUE ) ; offset_in_bits + = 5 ;
proto_tree_add_bits_item ( tmp_tree [ 9 ] , hf_r3_dumpm41t81_reg09_rb , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 10 ] , hf_r3_dumpm41t81_reg0a_afe , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 10 ] , hf_r3_dumpm41t81_reg0a_sqwe , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 10 ] , hf_r3_dumpm41t81_reg0a_abe , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 10 ] , hf_r3_dumpm41t81_reg0a_10monthalm , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 10 ] , hf_r3_dumpm41t81_reg0a_1monthalm , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 11 ] , hf_r3_dumpm41t81_reg0b_rpt5 , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 11 ] , hf_r3_dumpm41t81_reg0b_rpt4 , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 11 ] , hf_r3_dumpm41t81_reg0b_10dayalm , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 11 ] , hf_r3_dumpm41t81_reg0b_1dayalm , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 12 ] , hf_r3_dumpm41t81_reg0c_rpt3 , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 12 ] , hf_r3_dumpm41t81_reg0c_ht , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 12 ] , hf_r3_dumpm41t81_reg0c_10houralm , tvb , offset_in_bits , 2 , TRUE ) ; offset_in_bits + = 2 ;
proto_tree_add_bits_item ( tmp_tree [ 12 ] , hf_r3_dumpm41t81_reg0c_1houralm , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 13 ] , hf_r3_dumpm41t81_reg0d_rpt2 , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 13 ] , hf_r3_dumpm41t81_reg0d_10minalm , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 13 ] , hf_r3_dumpm41t81_reg0d_1minalm , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 14 ] , hf_r3_dumpm41t81_reg0e_rpt1 , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 14 ] , hf_r3_dumpm41t81_reg0e_10secalm , tvb , offset_in_bits , 3 , TRUE ) ; offset_in_bits + = 3 ;
proto_tree_add_bits_item ( tmp_tree [ 14 ] , hf_r3_dumpm41t81_reg0e_1secalm , tvb , offset_in_bits , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 15 ] , hf_r3_dumpm41t81_reg0f_wdf , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 15 ] , hf_r3_dumpm41t81_reg0f_af , tvb , offset_in_bits , 1 , TRUE ) ; offset_in_bits + = 1 ;
proto_tree_add_bits_item ( tmp_tree [ 15 ] , hf_r3_dumpm41t81_reg0f_notused , tvb , offset_in_bits , 6 , TRUE ) ; offset_in_bits + = 6 ;
proto_tree_add_bits_item ( tmp_tree [ 16 ] , hf_r3_dumpm41t81_reg10_notused , tvb , offset_in_bits , 8 , TRUE ) ; offset_in_bits + = 8 ;
proto_tree_add_bits_item ( tmp_tree [ 17 ] , hf_r3_dumpm41t81_reg11_notused , tvb , offset_in_bits , 8 , TRUE ) ; offset_in_bits + = 8 ;
proto_tree_add_bits_item ( tmp_tree [ 18 ] , hf_r3_dumpm41t81_reg12_notused , tvb , offset_in_bits , 8 , TRUE ) ; offset_in_bits + = 8 ;
proto_tree_add_bits_item ( tmp_tree [ 19 ] , hf_r3_dumpm41t81_reg13_rs , tvb , offset_in_bits - 8 , 4 , TRUE ) ; offset_in_bits + = 4 ;
proto_tree_add_bits_item ( tmp_tree [ 19 ] , hf_r3_dumpm41t81_reg13_notused , tvb , offset_in_bits - 8 , 4 , TRUE ) ; offset_in_bits + = 4 ;
}
}
static void dissect_r3_upstreammfgfield_nvramchecksumvalue ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_nvramchecksumvalue , tvb , start_offset + 0 , 4 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_nvramchecksumvalue_fixup , tvb , start_offset + 4 , 4 , TRUE ) ;
}
static void dissect_r3_upstreammfgfield_checksumresults ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo , proto_tree * tree )
{
proto_item * cksum_item = NULL ;
proto_tree * cksum_tree = NULL ;
guint32 l = tvb_length_remaining ( tvb , start_offset ) ;
guint32 error = FALSE ;
guint32 i ;
if ( l % 3 ! = 0 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Checksum results data length not modulo 3 == 0 " ) ;
else
{
for ( i = start_offset ; i < l ; i + = tvb_get_guint8 ( tvb , start_offset + i ) )
error | = tvb_get_guint8 ( tvb , start_offset + i + 2 ) ;
cksum_item = proto_tree_add_text ( tree , tvb , start_offset , l , " Checksum Results (%s) " , error ? " Error " : " No Errors " ) ;
cksum_tree = proto_item_add_subtree ( cksum_item , ett_r3checksumresults ) ;
for ( i = 0 ; i < l ; i + = tvb_get_guint8 ( tvb , start_offset + i ) )
{
proto_item * res_item = proto_tree_add_item ( cksum_tree , hf_r3_checksumresults , tvb , start_offset + i , tvb_get_guint8 ( tvb , start_offset + i ) , TRUE ) ;
proto_tree * res_tree = proto_item_add_subtree ( res_item , ett_r3checksumresultsfield ) ;
const gchar * fn ;
fn = val_to_str_const ( tvb_get_guint8 ( tvb , start_offset + i + 1 ) , r3_checksumresultnames , " [Unknown Field Name] " ) ;
proto_item_append_text ( res_item , " %s (%s) " , fn , tvb_get_guint8 ( tvb , start_offset + i + 2 ) ? " Error " : " No Error " ) ;
proto_tree_add_item ( res_tree , hf_r3_checksumresults_length , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( res_tree , hf_r3_checksumresults_field , tvb , start_offset + i + 1 , 1 , TRUE ) ;
proto_tree_add_item ( res_tree , hf_r3_checksumresults_state , tvb , start_offset + i + 2 , 1 , TRUE ) ;
}
}
}
static void dissect_r3_upstreammfgfield_mortisestatelog ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint l = tvb_length_remaining ( tvb , start_offset + 3 ) ;
guint i = 0 ;
proto_tree_add_item ( tree , hf_r3_mortisestatelog_pointer , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mortisestatelog_mortisetype , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mortisestatelog_waiting , tvb , start_offset + 2 , 1 , TRUE ) ;
for ( start_offset + = 3 , i = 0 ; i < l ; i + = 3 )
{
guint state = tvb_get_guint8 ( tvb , start_offset + i + 0 ) ;
guint last = tvb_get_guint8 ( tvb , start_offset + i + 1 ) ;
guint event = tvb_get_guint8 ( tvb , start_offset + i + 2 ) ;
proto_item * ms_item = proto_tree_add_text ( tree , tvb , start_offset + i , 3 , " State Log Entry %2d (State=0x%02x, Last=0x%02x, Event=%s (0x%02x)) " , i / 3 , state , last , val_to_str_const ( event , r3_mortiseeventnames , " [Unknown] " ) , event ) ;
proto_tree * ms_tree = proto_item_add_subtree ( ms_item , ett_r3mortisestatelog ) ;
proto_tree_add_item ( ms_tree , hf_r3_mortisestatelog_state , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( ms_tree , hf_r3_mortisestatelog_last , tvb , start_offset + i + 1 , 1 , TRUE ) ;
proto_tree_add_item ( ms_tree , hf_r3_mortisestatelog_event , tvb , start_offset + i + 2 , 1 , TRUE ) ;
}
}
static void dissect_r3_upstreammfgfield_mortisepins ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * iopins_item = proto_tree_add_text ( tree , tvb , start_offset , 1 , " Mortise Pin States (0x%02x) " , tvb_get_guint8 ( tvb , start_offset ) ) ;
proto_tree * iopins_tree = proto_item_add_subtree ( iopins_item , ett_r3iopins ) ;
proto_tree_add_boolean ( iopins_tree , hf_r3_mortisepins_s1 , tvb , start_offset , 1 , tvb_get_guint8 ( tvb , start_offset ) ) ;
proto_tree_add_boolean ( iopins_tree , hf_r3_mortisepins_s2 , tvb , start_offset , 1 , tvb_get_guint8 ( tvb , start_offset ) ) ;
proto_tree_add_boolean ( iopins_tree , hf_r3_mortisepins_s3 , tvb , start_offset , 1 , tvb_get_guint8 ( tvb , start_offset ) ) ;
proto_tree_add_boolean ( iopins_tree , hf_r3_mortisepins_s4 , tvb , start_offset , 1 , tvb_get_guint8 ( tvb , start_offset ) ) ;
}
static void dissect_r3_upstreammfgfield_keypadchar ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item_append_text ( proto_tree_add_item ( tree , hf_r3_testkeypad , tvb , 0 , 1 , TRUE ) , " ('%c') " , tvb_get_guint8 ( tvb , 0 ) ) ;
}
static void dissect_r3_upstreammfgfield_magcard ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_testmagcard , tvb , 0 , - 1 , TRUE ) ;
}
static void dissect_r3_upstreammfgfield_proxcard ( tvbuff_t * tvb , guint32 start_offset _U_ , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_testproxcard , tvb , 0 , - 1 , TRUE ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* This is passed a tvb that contains [ length ] [ CMD_RESPONSE ] [ responseType_e ] [ cmdCommand_e ]
*/
static void dissect_r3_response_singlebyte ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_responsetype , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_responsetocommand , tvb , start_offset + 3 , 1 , TRUE ) ;
}
/*
* This is passed a tvb that contains [ length ] [ CMD_RESPONSE ] [ RESPONSETYPE_HASDATA ] [ UPSTREAMCOMMAND_ * ]
*/
static void dissect_r3_response_hasdata ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo , proto_tree * tree )
{
proto_item * upstreamcommand_item = NULL ;
proto_tree * upstreamcommand_tree = NULL ;
tvbuff_t * upstreamcommand_tvb ;
guint32 commandPacketLen ;
const gchar * ct = NULL ;
tvb_ensure_bytes_exist ( tvb , start_offset , 4 ) ;
commandPacketLen = tvb_get_guint8 ( tvb , 0 ) ;
upstreamcommand_tvb = tvb_new_subset ( tvb , 4 , commandPacketLen - 4 , commandPacketLen - 4 ) ;
if ( tvb_get_guint8 ( tvb , 1 ) ! = CMD_RESPONSE )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Octet 1 not CMD_RESPONSE " ) ;
else if ( tvb_get_guint8 ( tvb , 2 ) ! = RESPONSETYPE_HASDATA )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Octet 2 not RESPONSE_HASDATA " ) ;
else if ( tvb_get_guint8 ( tvb , 3 ) > = UPSTREAMCOMMAND_LAST )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Octet 3 >= UPSTREAMCOMMAND_LAST " ) ;
else
{
ct = val_to_str_const ( tvb_get_guint8 ( tvb , 3 ) , r3_upstreamcommandnames , " [Unknown Command Type] " ) ;
proto_tree_add_item ( tree , hf_r3_responsetype , tvb , 2 , 1 , TRUE ) ;
upstreamcommand_item = proto_tree_add_text ( tree , tvb , 3 , - 1 , " Upstream Command: %s (%u) " , ct , tvb_get_guint8 ( tvb , 3 ) ) ;
upstreamcommand_tree = proto_item_add_subtree ( upstreamcommand_item , ett_r3upstreamcommand ) ;
proto_tree_add_item ( upstreamcommand_tree , hf_r3_upstreamcommand , tvb , 3 , 1 , TRUE ) ;
tvb_ensure_bytes_exist ( tvb , start_offset , commandPacketLen - 4 ) ;
if ( r3upstreamcommand_dissect [ tvb_get_guint8 ( tvb , 3 ) ] . dissector )
( * r3upstreamcommand_dissect [ tvb_get_guint8 ( tvb , 3 ) ] . dissector ) ( upstreamcommand_tvb , 0 , commandPacketLen - 4 , pinfo , upstreamcommand_tree ) ;
}
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* These are passed a tvb that starts with [ length ] [ CMD_RESPONSE ] . . .
*/
static void dissect_r3_cmd_response ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * tree )
{
guint8 responseLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
responseType_e responseType = tvb_get_guint8 ( tvb , start_offset + 2 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset , responseLen , responseLen ) ;
const gchar * rt = NULL ;
rt = val_to_str_const ( responseType , r3_responsetypenames , " [Unknown Response Type] " ) ;
proto_item_set_text ( proto_tree_get_parent ( tree ) , " Response Packet: %s (%u) " , rt , responseType ) ;
proto_tree_add_item ( tree , hf_r3_responselength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_responsecommand , tvb , start_offset + 1 , 1 , TRUE ) ;
if ( tvb_get_guint8 ( tvb , start_offset + 2 ) > = RESPONSETYPE_LAST )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Octet 3 >= UPSTREAMCOMMAND_LAST " ) ;
else if ( r3response_dissect [ responseType ] . dissector )
( * r3response_dissect [ responseType ] . dissector ) ( payload_tvb , 0 , length , pinfo , tree ) ;
}
/*
* These are passed a tvb that contains [ length ] [ cmdCommand_e ] [ [ data ] ]
*/
static void dissect_r3_cmd_handshake ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_killsession ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_queryserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_queryversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_setdatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree * dt_tree = NULL ;
proto_item * dt_item = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
dt_item = proto_tree_add_text ( tree , payload_tvb , 0 , - 1 , " Set Date/Time (%02u/%02u/%02u-%u %02u:%02u:%02u) " , tvb_get_guint8 ( payload_tvb , 0 ) , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) , tvb_get_guint8 ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 6 ) ) ;
dt_tree = proto_item_add_subtree ( dt_item , ett_r3setdatetime ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_year , payload_tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_month , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_day , payload_tvb , 2 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_dow , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_hours , payload_tvb , 4 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_minutes , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( dt_tree , hf_r3_setdate_seconds , payload_tvb , 6 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_querydatetime ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_setconfig ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 offset = 0 ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
while ( offset < tvb_reported_length ( payload_tvb ) )
{
proto_item * sc_item = NULL ;
proto_tree * sc_tree = NULL ;
const gchar * ci = NULL ;
ci = val_to_str_const ( tvb_get_guint8 ( payload_tvb , offset + 1 ) , r3_configitemnames , " [Unknown Configuration Item] " ) ;
sc_item = proto_tree_add_text ( tree , payload_tvb , offset + 0 , tvb_get_guint8 ( payload_tvb , offset + 0 ) , " Config Field: %s (%u) " , ci , tvb_get_guint8 ( payload_tvb , offset + 1 ) ) ;
sc_tree = proto_item_add_subtree ( sc_item , ett_r3upstreamfield ) ;
proto_tree_add_item ( sc_tree , hf_r3_configitemlength , payload_tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( sc_tree , hf_r3_configitem , payload_tvb , offset + 1 , 1 , TRUE ) ;
if ( tvb_get_guint8 ( payload_tvb , offset + 1 ) < array_length ( configMap ) )
{
switch ( configMap [ tvb_get_guint8 ( payload_tvb , offset + 1 ) ] . configType )
{
case CONFIGTYPE_NONE :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata , payload_tvb , offset + 2 , tvb_get_guint8 ( payload_tvb , offset + 0 ) - 3 , TRUE ) ;
break ;
case CONFIGTYPE_BOOL :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata_bool , payload_tvb , offset + 2 , 1 , TRUE ) ;
break ;
case CONFIGTYPE_8 :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata_8 , payload_tvb , offset + 2 , 1 , TRUE ) ;
break ;
case CONFIGTYPE_16 :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata_16 , payload_tvb , offset + 2 , 2 , TRUE ) ;
break ;
case CONFIGTYPE_32 :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata_32 , payload_tvb , offset + 2 , 4 , TRUE ) ;
break ;
case CONFIGTYPE_STRING :
proto_tree_add_item ( sc_tree , hf_r3_configitemdata_string , payload_tvb , offset + 2 , tvb_get_guint8 ( payload_tvb , offset + 0 ) - 2 , TRUE ) ;
break ;
default :
proto_tree_add_none_format ( sc_tree , hf_r3_upstreamfielderror , payload_tvb , offset + 2 , tvb_get_guint8 ( payload_tvb , offset + 0 ) - 2 , " Unknown Field Type " ) ;
break ;
}
}
else
proto_tree_add_text ( sc_tree , payload_tvb , offset + 2 , tvb_get_guint8 ( payload_tvb , offset + 0 ) - 2 , " [Unknown Field Type] " ) ;
offset + = tvb_get_guint8 ( payload_tvb , offset + 0 ) ;
}
}
static void dissect_r3_cmd_getconfig ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * config_item = NULL ;
proto_tree * config_tree = NULL ;
guint32 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
guint32 i ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
config_item = proto_tree_add_item ( tree , hf_r3_configitems , tvb , start_offset + 2 , cmdLen - 2 , TRUE ) ;
config_tree = proto_item_add_subtree ( config_item , ett_r3configitem ) ;
for ( i = 2 ; i < cmdLen ; i + + )
proto_tree_add_item ( config_tree , hf_r3_configitem , tvb , start_offset + i , 1 , TRUE ) ;
}
static void dissect_r3_cmd_manageuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 offset = 0 ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
while ( offset < tvb_reported_length ( payload_tvb ) )
{
guint32 paramLength = tvb_get_guint8 ( payload_tvb , offset + 0 ) ;
guint32 paramType = tvb_get_guint8 ( payload_tvb , offset + 1 ) ;
guint32 dataLength = paramLength - 2 ;
proto_tree * mu_tree = NULL ;
const gchar * auptn = NULL ;
auptn = val_to_str_const ( paramType , r3_adduserparamtypenames , " [Unknown Field] " ) ;
mu_tree = proto_item_add_subtree ( proto_tree_add_none_format ( tree , hf_r3_adduserparamtype , payload_tvb , offset + 0 , paramLength , " Manage User Field: %s (%u) " , auptn , paramType ) , ett_r3manageuser ) ;
proto_tree_add_item ( mu_tree , hf_r3_adduserparamtypelength , payload_tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( mu_tree , hf_r3_adduserparamtypetype , payload_tvb , offset + 1 , 1 , TRUE ) ;
offset + = 2 ;
switch ( paramType )
{
case ADDUSERPARAMTYPE_DISPOSITION :
case ADDUSERPARAMTYPE_ACCESSALWAYS :
case ADDUSERPARAMTYPE_ACCESSMODE :
case ADDUSERPARAMTYPE_CACHED :
case ADDUSERPARAMTYPE_USERTYPE :
case ADDUSERPARAMTYPE_PRIMARYFIELDTYPE :
case ADDUSERPARAMTYPE_AUXFIELDTYPE :
case ADDUSERPARAMTYPE_USECOUNT :
case ADDUSERPARAMTYPE_EXCEPTIONGROUP :
2010-01-10 14:29:49 +00:00
if ( dataLength ! = 1 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed field -- expected 1 octet " ) ;
else
proto_tree_add_item ( mu_tree , hf_r3_adduserparamtypearray [ paramType ] , payload_tvb , offset , dataLength , TRUE ) ;
break ;
case ADDUSERPARAMTYPE_USERNO :
if ( dataLength ! = 2 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed field -- expected 2 octets " ) ;
else
proto_tree_add_item ( mu_tree , hf_r3_adduserparamtypearray [ paramType ] , payload_tvb , offset , dataLength , TRUE ) ;
break ;
case ADDUSERPARAMTYPE_PRIMARYFIELD :
case ADDUSERPARAMTYPE_AUXFIELD :
2009-11-28 01:16:52 +00:00
proto_tree_add_item ( mu_tree , hf_r3_adduserparamtypearray [ paramType ] , payload_tvb , offset , dataLength , TRUE ) ;
break ;
case ADDUSERPARAMTYPE_EXPIREON :
{
proto_item * expireon_item = NULL ;
proto_tree * expireon_tree = NULL ;
if ( dataLength ! = 3 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed expiration field -- expected 3 octets " ) ;
else
{
expireon_item = proto_tree_add_text ( mu_tree , payload_tvb , offset , 3 , " Expire YY/MM/DD: %02u/%02u/%02u " ,
tvb_get_guint8 ( payload_tvb , offset + 2 ) , tvb_get_guint8 ( payload_tvb , offset + 0 ) , tvb_get_guint8 ( payload_tvb , offset + 1 ) ) ;
expireon_tree = proto_item_add_subtree ( expireon_item , ett_r3expireon ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_month , payload_tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_day , payload_tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( expireon_tree , hf_r3_expireon_year , payload_tvb , offset + 2 , 1 , TRUE ) ;
}
}
break ;
case ADDUSERPARAMTYPE_TIMEZONE :
{
guint32 i ;
guint32 tz ;
proto_item * timezone_item = NULL ;
proto_tree * timezone_tree = NULL ;
if ( dataLength ! = 4 )
expert_add_info_format ( pinfo , tree , PI_UNDECODED , PI_WARN , " Malformed timezone field -- expected 4 octets " ) ;
else
{
tz = tvb_get_letohl ( payload_tvb , offset ) ;
timezone_item = proto_tree_add_item ( mu_tree , hf_r3_upstreamfieldarray [ paramType ] , payload_tvb , offset , 4 , TRUE ) ;
timezone_tree = proto_item_add_subtree ( timezone_item , ett_r3timezone ) ;
for ( i = 0 ; i < 32 ; i + + )
proto_tree_add_boolean ( timezone_tree , hf_r3_timezonearray [ i ] , payload_tvb , offset , 4 , tz ) ;
}
}
break ;
default :
2010-01-10 14:29:49 +00:00
proto_tree_add_string ( mu_tree , hf_r3_upstreamfielderror , payload_tvb , offset , dataLength , " Unknown Field Type " ) ;
2009-11-28 01:16:52 +00:00
break ;
}
offset + = dataLength ;
}
}
static void dissect_r3_cmd_deleteusers ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_deleteusers , payload_tvb , 0 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_defineexception ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * startdate_item = NULL ;
proto_tree * startdate_tree = NULL ;
proto_item * enddate_item = NULL ;
proto_tree * enddate_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_defineexception_number , payload_tvb , 0 , 1 , TRUE ) ;
startdate_item = proto_tree_add_text ( tree , payload_tvb , 1 , 4 , " Start MM/DD HH:MM (%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) ) ;
startdate_tree = proto_item_add_subtree ( startdate_item , ett_r3defineexceptionstartdate ) ;
proto_tree_add_item ( startdate_tree , hf_r3_defineexception_startdate_month , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( startdate_tree , hf_r3_defineexception_startdate_day , payload_tvb , 2 , 1 , TRUE ) ;
proto_tree_add_item ( startdate_tree , hf_r3_defineexception_startdate_hours , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( startdate_tree , hf_r3_defineexception_startdate_minutes , payload_tvb , 4 , 1 , TRUE ) ;
enddate_item = proto_tree_add_text ( tree , payload_tvb , 5 , 4 , " End MM/DD HH:MM (%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 6 ) , tvb_get_guint8 ( payload_tvb , 7 ) , tvb_get_guint8 ( payload_tvb , 8 ) ) ;
enddate_tree = proto_item_add_subtree ( enddate_item , ett_r3defineexceptionenddate ) ;
proto_tree_add_item ( enddate_tree , hf_r3_defineexception_enddate_month , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( enddate_tree , hf_r3_defineexception_enddate_day , payload_tvb , 6 , 1 , TRUE ) ;
proto_tree_add_item ( enddate_tree , hf_r3_defineexception_enddate_hours , payload_tvb , 7 , 1 , TRUE ) ;
proto_tree_add_item ( enddate_tree , hf_r3_defineexception_enddate_minutes , payload_tvb , 8 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_defineexceptiongroup ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * bits_item = NULL ;
proto_tree * bits_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 i = 0 ;
guint32 bit = 0 ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_defineexceptiongroup_number , payload_tvb , 0 , 1 , TRUE ) ;
bits_item = proto_tree_add_text ( tree , payload_tvb , 1 , - 1 , " Exception Group Bit Field " ) ;
bits_tree = proto_item_add_subtree ( bits_item , ett_r3defineexceptiongroupbits ) ;
for ( i = 1 ; i < tvb_reported_length ( payload_tvb ) ; i + + )
{
guint32 j ;
guint8 byte = tvb_get_guint8 ( payload_tvb , i ) ;
for ( j = 0 ; j < 8 ; j + + )
proto_tree_add_none_format ( bits_tree , hf_r3_defineexceptiongroup_bits , payload_tvb , i , 1 , " Exception Group %2d: %s " , bit + + , ( byte & ( 1 < < j ) ) ? " Enabled " : " Disabled " ) ;
}
}
static void dissect_r3_cmd_definecalendar ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
const gchar * mn ;
guint32 i ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_definecalendar_number , payload_tvb , 0 , 1 , TRUE ) ;
for ( i = 0 ; i < 12 ; i + + )
{
guint32 daymap = tvb_get_letohl ( payload_tvb , ( i * 4 ) + 1 ) ;
proto_item * calendar_item = proto_tree_add_text ( tree , payload_tvb , ( i * 4 ) + 1 , 4 , " Calendar Bit Field - %s (0x%08x) " , ( mn = val_to_str_const ( i + 1 , r3_monthnames , " [Unknown Month] " ) ) , daymap ) ;
proto_tree * calendar_tree = proto_item_add_subtree ( calendar_item , ett_r3definecalendarmonth [ i + 1 ] ) ;
guint32 j ;
for ( j = 0 ; j < 31 ; j + + )
proto_tree_add_none_format ( calendar_tree , hf_r3_definecalendar_bits , payload_tvb , ( i * 4 ) + 1 , 4 , " %s Of %s: %s " , val_to_str_const ( j + 1 , r3_monthdaynames , " [Unknown Day] " ) , mn , ( daymap & ( 1 < < j ) ) ? " Enabled " : " Disabled " ) ;
}
}
static void dissect_r3_cmd_definetimezone ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * starttime_item = NULL ;
proto_tree * starttime_tree = NULL ;
proto_item * endtime_item = NULL ;
proto_tree * endtime_tree = NULL ;
proto_item * daymap_item = NULL ;
proto_tree * daymap_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 i ;
guint8 tzmode ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_definetimezone_number , payload_tvb , 0 , 1 , TRUE ) ;
starttime_item = proto_tree_add_text ( tree , payload_tvb , 1 , 2 , " Start HH:MM (%02u:%02u) " , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) ) ;
starttime_tree = proto_item_add_subtree ( starttime_item , ett_r3definetimezonestarttime ) ;
proto_tree_add_item ( starttime_tree , hf_r3_definetimezone_starttime_hours , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_definetimezone_starttime_minutes , payload_tvb , 2 , 1 , TRUE ) ;
endtime_item = proto_tree_add_text ( tree , payload_tvb , 3 , 2 , " End HH:MM (%02u:%02u) " , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) ) ;
endtime_tree = proto_item_add_subtree ( endtime_item , ett_r3definetimezoneendtime ) ;
proto_tree_add_item ( endtime_tree , hf_r3_definetimezone_endtime_hours , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_definetimezone_endtime_minutes , payload_tvb , 4 , 1 , TRUE ) ;
daymap_item = proto_tree_add_text ( tree , payload_tvb , 5 , 1 , " Day Map (0x%02x) " , tvb_get_guint8 ( payload_tvb , 5 ) ) ;
daymap_tree = proto_item_add_subtree ( daymap_item , ett_r3definetimezonedaymap ) ;
for ( i = 0 ; i < 7 ; i + + )
proto_tree_add_boolean ( daymap_tree , hf_r3_definetimezone_daymap [ i ] , payload_tvb , 5 , 1 , tvb_get_guint8 ( payload_tvb , 5 ) ) ;
proto_tree_add_item ( tree , hf_r3_definetimezone_exceptiongroup , payload_tvb , 6 , 1 , TRUE ) ;
proto_tree_add_uint ( tree , hf_r3_definetimezone_mode , payload_tvb , 7 , 1 , ( tzmode = tvb_get_guint8 ( payload_tvb , 7 ) ) & 0x0f ) ;
proto_tree_add_none_format ( tree , hf_r3_definetimezone_calendar , payload_tvb , 7 , 1 , " Access Always: %s " , ( tzmode & 0x10 ) ? " True " : " False " ) ;
}
static void dissect_r3_cmd_rmtauthretry ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_rmtauthretry_sequence , payload_tvb , 0 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_rmtauthretry_retry , payload_tvb , 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_filters ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * filter_item = NULL ;
proto_tree * filter_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 i ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_filter_type , payload_tvb , 1 , 1 , TRUE ) ;
filter_item = proto_tree_add_text ( tree , payload_tvb , 2 , - 1 , " Filters (%u specified) " , tvb_get_guint8 ( payload_tvb , 0 ) ) ;
filter_tree = proto_item_add_subtree ( filter_item , ett_r3filters ) ;
for ( i = 0 ; i < tvb_get_guint8 ( payload_tvb , 0 ) ; i + + )
proto_tree_add_item ( filter_tree , hf_r3_filter_list , payload_tvb , i + 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_alarmconfigure ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * alarm_item = NULL ;
proto_tree * alarm_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 offset = 0 ;
guint32 alarms = 0 ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
alarm_item = proto_tree_add_text ( tree , payload_tvb , 0 , - 1 , " Alarm List (0 items) " ) ;
alarm_tree = proto_item_add_subtree ( alarm_item , ett_r3alarmlist ) ;
while ( offset < tvb_reported_length ( payload_tvb ) )
{
proto_item * alarmcfg_item = NULL ;
proto_tree * alarmcfg_tree = NULL ;
const gchar * ai ;
const gchar * as ;
if ( ! ( ai = match_strval ( tvb_get_guint8 ( payload_tvb , offset + 1 ) , r3_alarmidnames ) ) )
{
ai = " [Unknown Alarm ID] " ;
as = " N/A " ;
}
else
as = ( tvb_get_guint8 ( payload_tvb , offset + 2 ) & 0xfe ) ? " Error " : ( tvb_get_guint8 ( payload_tvb , offset + 2 ) & 0x01 ) ? " Enabled " : " Disabled " ;
alarmcfg_item = proto_tree_add_text ( alarm_tree , payload_tvb , offset , tvb_get_guint8 ( payload_tvb , offset ) , " Alarm Item (%s, %s) " , ai , as ) ;
alarmcfg_tree = proto_item_add_subtree ( alarmcfg_item , ett_r3alarmcfg ) ;
proto_tree_add_item ( alarmcfg_tree , hf_r3_alarm_length , payload_tvb , offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( alarmcfg_tree , hf_r3_alarm_id , payload_tvb , offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( alarmcfg_tree , hf_r3_alarm_state , payload_tvb , offset + 2 , 1 , TRUE ) ;
alarms + + ;
offset + = tvb_get_guint8 ( payload_tvb , offset ) ;
}
if ( alarms )
proto_item_set_text ( alarm_item , " Alarm List (%d items) " , alarms ) ;
}
static void dissect_r3_cmd_eventlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * starttime_item = NULL ;
proto_tree * starttime_tree = NULL ;
proto_item * endtime_item = NULL ;
proto_tree * endtime_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
starttime_item = proto_tree_add_text ( tree , payload_tvb , 0 , 5 , " Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 0 ) , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) ) ;
starttime_tree = proto_item_add_subtree ( starttime_item , ett_r3eventlogdumpstarttime ) ;
proto_tree_add_item ( starttime_tree , hf_r3_eventlogdump_starttime_year , payload_tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_eventlogdump_starttime_month , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_eventlogdump_starttime_day , payload_tvb , 2 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_eventlogdump_starttime_hours , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_eventlogdump_starttime_minutes , payload_tvb , 4 , 1 , TRUE ) ;
endtime_item = proto_tree_add_text ( tree , payload_tvb , 5 , 5 , " End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 6 ) , tvb_get_guint8 ( payload_tvb , 7 ) , tvb_get_guint8 ( payload_tvb , 8 ) , tvb_get_guint8 ( payload_tvb , 9 ) ) ;
endtime_tree = proto_item_add_subtree ( endtime_item , ett_r3eventlogdumpendtime ) ;
proto_tree_add_item ( endtime_tree , hf_r3_eventlogdump_endtime_year , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_eventlogdump_endtime_month , payload_tvb , 6 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_eventlogdump_endtime_day , payload_tvb , 7 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_eventlogdump_endtime_hours , payload_tvb , 8 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_eventlogdump_endtime_minutes , payload_tvb , 9 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_eventlogdump_user , payload_tvb , 10 , 2 , TRUE ) ;
}
static void dissect_r3_cmd_declinedlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * starttime_item = NULL ;
proto_tree * starttime_tree = NULL ;
proto_item * endtime_item = NULL ;
proto_tree * endtime_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
starttime_item = proto_tree_add_text ( tree , payload_tvb , 0 , 5 , " Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 0 ) , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) ) ;
starttime_tree = proto_item_add_subtree ( starttime_item , ett_r3declinedlogdumpstarttime ) ;
proto_tree_add_item ( starttime_tree , hf_r3_declinedlogdump_starttime_year , payload_tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_declinedlogdump_starttime_month , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_declinedlogdump_starttime_day , payload_tvb , 2 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_declinedlogdump_starttime_hours , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_declinedlogdump_starttime_minutes , payload_tvb , 4 , 1 , TRUE ) ;
endtime_item = proto_tree_add_text ( tree , payload_tvb , 5 , 5 , " End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 6 ) , tvb_get_guint8 ( payload_tvb , 7 ) , tvb_get_guint8 ( payload_tvb , 8 ) , tvb_get_guint8 ( payload_tvb , 9 ) ) ;
endtime_tree = proto_item_add_subtree ( endtime_item , ett_r3declinedlogdumpendtime ) ;
proto_tree_add_item ( endtime_tree , hf_r3_declinedlogdump_endtime_year , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_declinedlogdump_endtime_month , payload_tvb , 6 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_declinedlogdump_endtime_day , payload_tvb , 7 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_declinedlogdump_endtime_hours , payload_tvb , 8 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_declinedlogdump_endtime_minutes , payload_tvb , 9 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_alarmlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * starttime_item = NULL ;
proto_tree * starttime_tree = NULL ;
proto_item * endtime_item = NULL ;
proto_tree * endtime_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
starttime_item = proto_tree_add_text ( tree , payload_tvb , 0 , 5 , " Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 0 ) , tvb_get_guint8 ( payload_tvb , 1 ) , tvb_get_guint8 ( payload_tvb , 2 ) , tvb_get_guint8 ( payload_tvb , 3 ) , tvb_get_guint8 ( payload_tvb , 4 ) ) ;
starttime_tree = proto_item_add_subtree ( starttime_item , ett_r3alarmlogdumpstarttime ) ;
proto_tree_add_item ( starttime_tree , hf_r3_alarmlogdump_starttime_year , payload_tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_alarmlogdump_starttime_month , payload_tvb , 1 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_alarmlogdump_starttime_day , payload_tvb , 2 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_alarmlogdump_starttime_hours , payload_tvb , 3 , 1 , TRUE ) ;
proto_tree_add_item ( starttime_tree , hf_r3_alarmlogdump_starttime_minutes , payload_tvb , 4 , 1 , TRUE ) ;
endtime_item = proto_tree_add_text ( tree , payload_tvb , 5 , 5 , " End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u) " , tvb_get_guint8 ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 6 ) , tvb_get_guint8 ( payload_tvb , 7 ) , tvb_get_guint8 ( payload_tvb , 8 ) , tvb_get_guint8 ( payload_tvb , 9 ) ) ;
endtime_tree = proto_item_add_subtree ( endtime_item , ett_r3alarmlogdumpendtime ) ;
proto_tree_add_item ( endtime_tree , hf_r3_alarmlogdump_endtime_year , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_alarmlogdump_endtime_month , payload_tvb , 6 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_alarmlogdump_endtime_day , payload_tvb , 7 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_alarmlogdump_endtime_hours , payload_tvb , 8 , 1 , TRUE ) ;
proto_tree_add_item ( endtime_tree , hf_r3_alarmlogdump_endtime_minutes , payload_tvb , 9 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_downloadfirmware ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * dlfw_item = NULL ;
proto_tree * dlfw_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 packetCRC = 0 ;
guint32 calculatedCRC = 0 ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
dlfw_item = proto_tree_add_text ( tree , payload_tvb , 0 , - 1 , " Download Record (Record #%u, " , tvb_get_letohs ( payload_tvb , 2 ) ) ;
dlfw_tree = proto_item_add_subtree ( dlfw_item , ett_r3downloadfirmware ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_length , payload_tvb , 0 , 2 , TRUE ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_record , payload_tvb , 2 , 2 , TRUE ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_action , payload_tvb , 4 , 1 , TRUE ) ;
switch ( tvb_get_guint8 ( payload_tvb , 4 ) )
{
case DOWNLOADFIRMWARE_START :
proto_item_append_text ( dlfw_item , " DOWNLOADFIRMWARE_START) " ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_timeout , payload_tvb , 5 , 1 , TRUE ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_nvram , payload_tvb , 6 , 1 , TRUE ) ;
break ;
case DOWNLOADFIRMWARE_DATA :
proto_item_append_text ( dlfw_item , " DOWNLOADFIRMWARE_DATA, Address 0x%08x, %u Bytes) " , tvb_get_letohl ( payload_tvb , 5 ) , tvb_get_guint8 ( payload_tvb , 9 ) ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_address , payload_tvb , 5 , 4 , TRUE ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_bytes , payload_tvb , 9 , 1 , TRUE ) ;
proto_tree_add_item ( dlfw_tree , hf_r3_firmwaredownload_data , payload_tvb , 10 , tvb_get_guint8 ( payload_tvb , 9 ) , TRUE ) ;
break ;
case DOWNLOADFIRMWARE_COMPLETE :
proto_item_append_text ( dlfw_item , " DOWNLOADFIRMWARE_COMPLETE) " ) ;
break ;
case DOWNLOADFIRMWARE_ABORT :
proto_item_append_text ( dlfw_item , " DOWNLOADFIRMWARE_ABORT) " ) ;
break ;
case DOWNLOADFIRMWARE_RESET :
proto_item_append_text ( dlfw_item , " DOWNLOADFIRMWARE_RESET) " ) ;
break ;
default :
DISSECTOR_ASSERT ( 0 ) ;
}
packetCRC = tvb_get_letohs ( payload_tvb , tvb_reported_length ( payload_tvb ) - 2 ) ;
if ( ( calculatedCRC = utilCrcCalculate ( tvb_get_ptr ( payload_tvb , 0 , tvb_reported_length ( payload_tvb ) - 2 ) , tvb_reported_length ( payload_tvb ) - 2 , 0x0000 ) ) = = packetCRC )
proto_tree_add_uint_format ( dlfw_tree , hf_r3_firmwaredownload_crc , payload_tvb , tvb_reported_length ( payload_tvb ) - 2 , 2 , packetCRC , " CRC: 0x%04x (correct) " , packetCRC ) ;
else
{
proto_item * tmp_item ;
proto_tree_add_uint_format ( dlfw_tree , hf_r3_firmwaredownload_crc , payload_tvb , tvb_reported_length ( payload_tvb ) - 2 , 2 , packetCRC , " CRC: 0x%04x (incorrect, should be 0x%04x) " , calculatedCRC , packetCRC ) ;
tmp_item = proto_tree_add_boolean ( dlfw_tree , hf_r3_firmwaredownload_crc_bad , payload_tvb , tvb_reported_length ( payload_tvb ) - 2 , 2 , TRUE ) ;
PROTO_ITEM_SET_GENERATED ( tmp_item ) ;
}
}
static void dissect_r3_cmd_downloadfirmwaretimeout ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commanddata , payload_tvb , 0 , - 1 , TRUE ) ;
DISSECTOR_ASSERT ( 0 ) ; /* ### Need nice warning here */
}
static void dissect_r3_cmd_powertableselection ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_powertableselection , payload_tvb , 0 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_clearnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_item * nvram_item = NULL ;
proto_tree * nvram_tree = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
guint32 nvramclearoptions = tvb_get_letohs ( payload_tvb , 0 ) ;
guint32 i ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
nvram_item = proto_tree_add_text ( tree , payload_tvb , 0 , 2 , " NVRAM Clean Options (0x%04x) " , nvramclearoptions ) ;
nvram_tree = proto_item_add_subtree ( nvram_item , ett_r3clearnvram ) ;
for ( i = 0 ; i < 16 ; i + + )
proto_tree_add_boolean ( nvram_tree , hf_r3_nvramclearoptions [ i ] , payload_tvb , 0 , 2 , nvramclearoptions ) ;
}
static void dissect_r3_cmd_dpac ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_dpac_action , payload_tvb , 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_dpac_waittime , payload_tvb , 1 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_dpac_command , payload_tvb , 3 , - 1 , TRUE ) ;
}
static void dissect_r3_cmd_selftest ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_reset ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_logwrite ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 2 , cmdLen - 2 , cmdLen - 2 ) ;
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_writeeventlog_user , payload_tvb , 0 , 2 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_writeeventlog_event , payload_tvb , 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_mfgcommand ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
mfgCommandFlag = TRUE ;
}
static void dissect_r3_cmd_nvrambackup ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmd_extendedresponse ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandlength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_command , tvb , start_offset + 1 , 1 , TRUE ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
static void dissect_r3_cmdmfg_setserialnumber ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
tvbuff_t * sn_tvb = tvb_new_subset ( tvb , start_offset + 2 , 16 , 16 ) ;
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
dissect_serialnumber ( sn_tvb , 0 , length , pinfo , tree , hf_r3_mfgsetserialnumber ) ;
}
static void dissect_r3_cmdmfg_setcryptkey ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mfgsetcryptkey , tvb , start_offset + 2 , - 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_dumpnvram ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mfgdumpnvram , tvb , start_offset + 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_terminal ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_remoteunlock ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mfgremoteunlock , tvb , start_offset + 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_auxctlrversion ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_iopins ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_adcs ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_hardwareid ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_checkpointlogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_checkpointlogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_readregisters ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_forceoptions ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint i = 0 ;
guint l = 0 ;
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
start_offset + = 2 ;
l = tvb_length_remaining ( tvb , start_offset ) ;
for ( i = 0 ; i < l ; i + = tvb_get_guint8 ( tvb , start_offset + i ) )
{
proto_item * force_item = proto_tree_add_text ( tree , tvb , start_offset + i , tvb_get_guint8 ( tvb , start_offset + i ) , " Force Option %s (%u) " , val_to_str_const ( tvb_get_guint8 ( tvb , start_offset + i + 1 ) , r3_forceitemnames , " [Unknown] " ) , tvb_get_guint8 ( tvb , start_offset + i + 1 ) ) ;
proto_tree * force_tree = proto_item_add_subtree ( force_item , ett_r3forceoptions ) ;
proto_tree_add_item ( force_tree , hf_r3_forceoptions_length , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( force_tree , hf_r3_forceoptions_item , tvb , start_offset + i + 1 , 1 , TRUE ) ;
switch ( tvb_get_guint8 ( tvb , start_offset + i ) - 2 )
{
case 1 : proto_tree_add_item ( force_tree , hf_r3_forceoptions_state_8 , tvb , start_offset + i + 2 , 1 , TRUE ) ; break ;
case 2 : proto_tree_add_item ( force_tree , hf_r3_forceoptions_state_16 , tvb , start_offset + i + 2 , 2 , TRUE ) ; break ;
case 3 : proto_tree_add_item ( force_tree , hf_r3_forceoptions_state_24 , tvb , start_offset + i + 2 , 3 , TRUE ) ; break ;
case 4 : proto_tree_add_item ( force_tree , hf_r3_forceoptions_state_32 , tvb , start_offset + i + 2 , 4 , TRUE ) ; break ;
default : DISSECTOR_ASSERT ( 0 ) ;
}
}
}
static void dissect_r3_cmdmfg_commuser ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_dumpkeypad ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_batterycheck ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_ramrefresh ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_taskflags ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_timerchain ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_peekpoke ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
guint i = 0 ;
guint l = 0 ;
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
start_offset + = 2 ;
l = tvb_length_remaining ( tvb , start_offset ) ;
for ( i = 0 ; i < l ; i + = 3 )
{
proto_item * peekpoke_item = proto_tree_add_text ( tree , tvb , start_offset + i , 3 , " %s " , " " ) ;
proto_tree * peekpoke_tree = proto_item_add_subtree ( peekpoke_item , ett_r3peekpoke ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_operation , tvb , start_offset + i + 0 , 1 , TRUE ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_address , tvb , start_offset + i + 1 , 2 , TRUE ) ;
switch ( tvb_get_guint8 ( tvb , start_offset + i + 0 ) )
{
case PEEKPOKE_READU8 :
proto_item_append_text ( peekpoke_item , " Read (8 Bits @ 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
break ;
case PEEKPOKE_READU16 :
proto_item_append_text ( peekpoke_item , " Read (16 Bits @ 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
break ;
case PEEKPOKE_READU24 :
proto_item_append_text ( peekpoke_item , " Read (24 Bits @ 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
break ;
case PEEKPOKE_READU32 :
proto_item_append_text ( peekpoke_item , " Read (32 Bits @ 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
break ;
case PEEKPOKE_READSTRING :
proto_item_append_text ( peekpoke_item , " Read (%d Bytes @ 0x%04x) " , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 4 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_length , tvb , start_offset + i + 3 , 1 , TRUE ) ;
i + = 1 ;
break ;
case PEEKPOKE_WRITEU8 :
proto_item_append_text ( peekpoke_item , " Write (8 Bits: 0x%02x @ 0x%04x) " , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 4 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke8 , tvb , start_offset + i + 3 , 1 , TRUE ) ;
i + = 1 ;
break ;
case PEEKPOKE_WRITEU16 :
proto_item_append_text ( peekpoke_item , " Write (16 Bits: 0x%04x @ 0x%04x) " , tvb_get_letohs ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 5 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke16 , tvb , start_offset + i + 3 , 2 , TRUE ) ;
i + = 2 ;
break ;
case PEEKPOKE_WRITEU24 :
proto_item_append_text ( peekpoke_item , " Write (24 Bits: 0x%06x @ 0x%04x) " , tvb_get_letoh24 ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 6 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke24 , tvb , start_offset + i + 3 , 3 , TRUE ) ;
i + = 3 ;
break ;
case PEEKPOKE_WRITEU32 :
proto_item_append_text ( peekpoke_item , " Write (32 Bits: 0x%08x @ 0x%04x) " , tvb_get_letohl ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 7 ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_poke32 , tvb , start_offset + i + 3 , 4 , TRUE ) ;
i + = 4 ;
break ;
case PEEKPOKE_WRITESTRING :
proto_item_append_text ( peekpoke_item , " Write (%d Bytes @ 0x%04x) " , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , tvb_get_letohs ( tvb , start_offset + i + 1 ) ) ;
proto_item_set_len ( peekpoke_item , 3 + 1 + tvb_get_guint8 ( tvb , start_offset + i + 3 ) ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_length , tvb , start_offset + i + 3 , 1 , TRUE ) ;
proto_tree_add_item ( peekpoke_tree , hf_r3_peekpoke_pokestring , tvb , start_offset + i + 4 , tvb_get_guint8 ( tvb , start_offset + i + 3 ) , TRUE ) ;
i + = tvb_get_guint8 ( tvb , start_offset + i + 3 ) + 1 ;
break ;
default :
DISSECTOR_ASSERT ( 0 ) ;
}
}
}
static void dissect_r3_cmdmfg_lockstate ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_capabilities ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_dumpm41t81 ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_debuglogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_debuglogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_testwdt ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_querycksum ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_validatechecksums ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_rebuildlrucache ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_tzupdate ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_testpreserve ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_mfgtestpreserve , tvb , start_offset + 2 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_mortisestatelogdump ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_mortisestatelogclear ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_mortisepins ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
static void dissect_r3_cmdmfg_haltandcatchfire ( tvbuff_t * tvb , guint32 start_offset , guint32 length _U_ , packet_info * pinfo _U_ , proto_tree * tree )
{
proto_tree_add_item ( tree , hf_r3_commandmfglength , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( tree , hf_r3_commandmfg , tvb , start_offset + 1 , 1 , TRUE ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* If no tree , don ' t bother parsing anything else since it doesn ' t affect return results
*/
static gint dissect_r3_command ( tvbuff_t * tvb , guint32 start_offset , guint32 length , packet_info * pinfo , proto_tree * r3_tree )
{
if ( r3_tree )
{
proto_item * cmd_item = NULL ;
proto_tree * cmd_tree = NULL ;
const gchar * cn = NULL ;
guint8 cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
guint8 cmd = tvb_get_guint8 ( tvb , start_offset + 1 ) ;
tvb_ensure_bytes_exist ( tvb , start_offset , 2 ) ;
cmdLen = tvb_get_guint8 ( tvb , start_offset + 0 ) ;
cmd = tvb_get_guint8 ( tvb , start_offset + 1 ) ;
if ( ! mfgCommandFlag )
cn = val_to_str_const ( cmd , r3_cmdnames , " [Unknown Command] " ) ;
else
cn = val_to_str_const ( cmd , r3_cmdmfgnames , " [Unknown Mfg Command] " ) ;
cmd_item = proto_tree_add_text ( r3_tree , tvb , start_offset , cmdLen , " Command Packet: %s (%d) " , cn , cmd ) ;
cmd_tree = proto_item_add_subtree ( cmd_item , ett_r3cmd ) ;
if ( cmd_tree )
{
if ( ! mfgCommandFlag )
{
if ( cmd > = CMD_LAST )
expert_add_info_format ( pinfo , cmd_tree , PI_UNDECODED , PI_WARN , " Unknown command value " ) ;
else if ( r3command_dissect [ cmd ] . dissector )
( * r3command_dissect [ cmd ] . dissector ) ( tvb , start_offset , length , pinfo , cmd_tree ) ;
}
else
{
mfgCommandFlag = FALSE ;
if ( cmd > = CMDMFG_LAST )
expert_add_info_format ( pinfo , cmd_tree , PI_UNDECODED , PI_WARN , " Unknown manufacturing command value " ) ;
else if ( r3commandmfg_dissect [ cmd ] . dissector )
( * r3commandmfg_dissect [ cmd ] . dissector ) ( tvb , start_offset , length , pinfo , cmd_tree ) ;
}
}
}
return tvb_get_guint8 ( tvb , start_offset ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Dissect a single packet , return bytes consumed
*
* Return either :
* > 0 = number of bytes consumed
* 0 = packet is just the right length
* < 0 = need more bytes
*/
static gint dissect_r3_packet ( tvbuff_t * tvb , guint start_offset , packet_info * pinfo , proto_tree * r3_tree )
{
guint offset = 0 ;
2010-01-07 22:03:29 +00:00
guint octConsumed ;
2009-11-28 01:16:52 +00:00
gint available = tvb_length_remaining ( tvb , start_offset ) ;
if ( ! ( tvb_strneql ( tvb , start_offset , " ~~~ds " , 5 ) ) )
{
if ( r3_tree )
proto_tree_add_item ( r3_tree , hf_r3_tildex3ds , tvb , start_offset + 0 , - 1 , TRUE ) ;
offset = start_offset + 5 ;
}
else
{
gint packetLen = 0 ;
if ( available < 4 )
return available - 4 ;
else
{
packetLen = tvb_get_guint8 ( tvb , start_offset + 3 ) + 1 ;
if ( packetLen > available )
return available - packetLen ;
}
- - packetLen ;
/*
* Show basic header stuff
*/
if ( r3_tree )
{
proto_item * header_item = proto_tree_add_item ( r3_tree , hf_r3_header , tvb , start_offset + 0 , 5 , TRUE ) ;
proto_tree * header_tree = proto_item_add_subtree ( header_item , ett_r3header ) ;
proto_tree_add_item ( header_tree , hf_r3_sigil , tvb , start_offset + 0 , 1 , TRUE ) ;
proto_tree_add_item ( header_tree , hf_r3_address , tvb , start_offset + 1 , 1 , TRUE ) ;
proto_tree_add_item ( header_tree , hf_r3_packetnumber , tvb , start_offset + 2 , 1 , TRUE ) ;
proto_tree_add_item ( header_tree , hf_r3_packetlength , tvb , start_offset + 3 , 1 , TRUE ) ;
proto_tree_add_item ( header_tree , hf_r3_encryption , tvb , start_offset + 4 , 1 , TRUE ) ;
}
/*
* If the packet has enough data , try to decode it
*/
if ( available > 8 )
{
proto_item * payload_item = NULL ;
proto_tree * payload_tree = NULL ;
tvbuff_t * payload_tvb = tvb_new_subset ( tvb , start_offset + 5 , packetLen - 7 , packetLen - 7 ) ;
if ( r3_tree )
{
payload_item = proto_tree_add_item ( r3_tree , hf_r3_payload , payload_tvb , 0 , - 1 , TRUE ) ;
payload_tree = proto_item_add_subtree ( payload_item , ett_r3payload ) ;
}
2010-01-07 22:03:29 +00:00
while ( offset < tvb_reported_length ( payload_tvb ) )
{
octConsumed = dissect_r3_command ( payload_tvb , offset , 0 , pinfo , payload_tree ) ;
if ( ! octConsumed )
{
expert_add_info_format ( pinfo , payload_tree , PI_MALFORMED , PI_WARN , " Command length equal to 0; payload could be partially decoded " ) ;
offset = tvb_reported_length ( payload_tvb ) ;
break ;
}
offset + = octConsumed ;
}
2009-11-28 01:16:52 +00:00
}
offset + = start_offset ;
/*
* Show the CRC and XOR status
*/
if ( r3_tree )
{
proto_item * tail_item = proto_tree_add_item ( r3_tree , hf_r3_tail , tvb , offset + 5 , 3 , TRUE ) ;
proto_tree * tail_tree = proto_item_add_subtree ( tail_item , ett_r3tail ) ;
guint32 packetCRC = tvb_get_letohs ( tvb , offset + 5 ) ;
guint32 packetXor = tvb_get_guint8 ( tvb , offset + 7 ) ;
guint32 calculatedCRC = 0 ;
guint32 calculatedXor = 0 ;
if ( ( calculatedCRC = utilCrcCalculate ( tvb_get_ptr ( tvb , start_offset + 1 , packetLen - 3 ) , packetLen - 3 , 0x0000 ) ) = = packetCRC )
proto_tree_add_uint_format ( tail_tree , hf_r3_crc , tvb , offset + 5 , 2 , packetCRC , " CRC: 0x%04x (correct) " , packetCRC ) ;
else
{
proto_item * tmp_item ;
proto_tree_add_uint_format ( tail_tree , hf_r3_crc , tvb , offset + 5 , 2 , packetCRC , " CRC: 0x%04x (incorrect, should be 0x%04x) " , calculatedCRC , packetCRC ) ;
tmp_item = proto_tree_add_boolean ( tail_tree , hf_r3_crc_bad , tvb , offset + 5 , 2 , TRUE ) ;
PROTO_ITEM_SET_GENERATED ( tmp_item ) ;
}
if ( ( calculatedXor = ( packetLen ^ 0xff ) ) = = packetXor )
proto_tree_add_uint_format ( tail_tree , hf_r3_xor , tvb , offset + 7 , 1 , packetXor , " XOR: 0x%02x (correct) " , packetXor ) ;
else
{
proto_item * tmp_item ;
proto_tree_add_uint_format ( tail_tree , hf_r3_xor , tvb , offset + 7 , 1 , packetXor , " XOR: 0x%02x (incorrect, should be 0x%02x) " , packetXor , packetLen ^ 0xff ) ;
tmp_item = proto_tree_add_boolean ( tail_tree , hf_r3_xor_bad , tvb , offset + 7 , 1 , TRUE ) ;
PROTO_ITEM_SET_GENERATED ( tmp_item ) ;
}
}
offset + = 8 ;
}
return offset - start_offset ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Main dissector entry points
*/
static void dissect_r3_message ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree )
{
proto_item * r3_item = NULL ;
proto_tree * r3_tree = NULL ;
guint offset = 0 ;
col_set_str ( pinfo - > cinfo , COL_PROTOCOL , " R3 " ) ;
col_clear ( pinfo - > cinfo , COL_INFO ) ;
if ( tree )
{
r3_item = proto_tree_add_item ( tree , proto_r3 , tvb , 0 , - 1 , TRUE ) ;
r3_tree = proto_item_add_subtree ( r3_item , ett_r3 ) ;
}
while ( offset < tvb_reported_length ( tvb ) )
{
gint res = dissect_r3_packet ( tvb , offset , pinfo , r3_tree ) ;
if ( res < = 0 )
{
if ( r3_item )
proto_item_set_len ( r3_item , offset ) ;
return ;
}
offset + = res ;
}
return ;
}
static guint get_r3_message_len ( packet_info * pinfo _U_ , tvbuff_t * tvb , int offset )
{
return ( guint ) tvb_get_guint8 ( tvb , offset + 3 ) + 1 ;
}
static void dissect_r3 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree )
{
tcp_dissect_pdus ( tvb , pinfo , tree , TRUE , 4 , get_r3_message_len , dissect_r3_message ) ;
}
/*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
void proto_register_r3 ( void )
{
proto_r3 = proto_register_protocol ( " Assa Abloy R3 " , " R3 " , " r3 " ) ;
register_dissector ( " r3 " , dissect_r3 , proto_r3 ) ;
proto_register_field_array ( proto_r3 , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
}
void proto_reg_handoff_r3 ( void )
{
2009-11-28 14:47:12 +00:00
dissector_handle_t r3_handle = find_dissector ( " r3 " ) ;
dissector_add ( " tcp.port " , 2571 , r3_handle ) ;
dissector_add ( " tcp.port " , 8023 , r3_handle ) ;
2009-11-28 01:16:52 +00:00
}
2009-11-28 14:47:12 +00:00
/*
* Editor modelines
*
* Local variables :
* c - basic - offset : 2
* tab - width : 8
* indent - tabs - mode : nil
* End :
*
* vim : set tabstop = 2 softtabstop = 2 shiftwidth = 2 expandtab :
*/