/* packet-gryphon.h * Definitions for Gryphon packet disassembly structures and routines * By Steve Limkemann * Copyright 1998 Steve Limkemann * * Wireshark - Network traffic analyzer * By Gerald Combs * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define MSG_HDR_SZ 8 #define CMD_HDR_SZ 4 /* source/destinations: */ #define SD_CARD 0x01 /* (vehicle) network interface */ #define SD_SERVER 0x02 #define SD_CLIENT 0x03 #define SD_KNOWN 0x10 /* Client ID >= are well known */ #define SD_SCHED 0x10 /* scheduler */ #define SD_SCRIPT 0x20 /* script processor */ #define SD_PGM 0x21 /* Program loader */ #define SD_USDT 0x22 /* USDT (Unacknowledged Segmented Data Transfer) */ #define SD_BLM 0x23 /* Bus Load Monitoring */ #define SD_FLIGHT 0x25 /* Flight Recorder */ #define SD_RESP 0x26 /* Message Response */ #define SD_IOPWR 0x27 /* VNG / Compact Gryphon I/O & power */ #define SD_UTIL 0x28 /* Miscellaneous utility commands */ /* frame types: */ #define GY_FT_CMD 0x01 /* command to initiate some action */ #define GY_FT_RESP 0x02 /* response to a command */ #define GY_FT_DATA 0x03 /* (vehicle) network data */ #define GY_FT_EVENT 0x04 /* notification of an event */ #define GY_FT_MISC 0x05 /* misc data */ #define GY_FT_TEXT 0x06 /* null-terminated ASCII strings */ /* generic (all SD type) commands: values 0x00 to 0x3f */ #define CMD_INIT 0x01 /* initialize target */ #define CMD_GET_STAT 0x02 /* request status */ #define CMD_GET_CONFIG 0x03 /* request configuration info */ #define CMD_EVENT_ENABLE 0x04 /* Enable event type */ #define CMD_EVENT_DISABLE 0x05 /* Disable event type */ #define CMD_GET_TIME 0x06 /* Get current value of timestamp */ #define CMD_GET_RXDROP 0x07 /* Get count of Rx msgs dropped */ #define CMD_RESET_RXDROP 0x08 /* Set count of Rx msgs dropped to zero */ #define CMD_BCAST_ON 0x09 /* broadcasts on */ #define CMD_BCAST_OFF 0x0a /* broadcasts off */ #define CMD_SET_TIME 0x0b /* set time */ /* SD-type specific commands: should start at 0x40, global uniqueness */ /* is prefered, but not mandatory. */ /* SD_CARD command types: */ #define CMD_CARD_SET_SPEED (SD_CARD * 256 + 0x40) /* set peripheral speed */ #define CMD_CARD_GET_SPEED (SD_CARD * 256 + 0x41) /* get peripheral speed */ #define CMD_CARD_SET_FILTER (SD_CARD * 256 + 0x42) /* set filter to pass or block all */ #define CMD_CARD_GET_FILTER (SD_CARD * 256 + 0x43) /* get a pass/block filter */ #define CMD_CARD_TX (SD_CARD * 256 + 0x44) /* transmit message */ #define CMD_CARD_TX_LOOP_ON (SD_CARD * 256 + 0x45) /* set transmit loopback on */ #define CMD_CARD_TX_LOOP_OFF (SD_CARD * 256 + 0x46) /* set transmit loopback off */ #define CMD_CARD_IOCTL (SD_CARD * 256 + 0x47) /* device driver ioctl pass-through */ #define CMD_CARD_ADD_FILTER (SD_CARD * 256 + 0x48) /* add a pass/block filter */ #define CMD_CARD_MODIFY_FILTER (SD_CARD * 256 + 0x49) /* modify a pass/block filter */ #define CMD_CARD_GET_FILTER_HANDLES (SD_CARD * 256 + 0x4A)/* get a list of filters */ #define CMD_CARD_SET_DEFAULT_FILTER (SD_CARD * 256 + 0x4B)/* set the default action */ #define CMD_CARD_GET_DEFAULT_FILTER (SD_CARD * 256 + 0x4C)/* get the defautl action */ #define CMD_CARD_SET_FILTER_MODE (SD_CARD * 256 + 0x4D) /* set the client data mode */ #define CMD_CARD_GET_FILTER_MODE (SD_CARD * 256 + 0x4E) /* get the client data mode */ #define CMD_CARD_GET_EVNAMES (SD_CARD * 256 + 0x4f) /* get event names */ #define CMD_CARD_GET_SPEEDS (SD_CARD * 256 + 0x50) /* get speed definitions */ /* SD_SERVER command types: */ #define CMD_SERVER_REG (SD_SERVER * 256 + 0x50) /* register connection */ #define CMD_SERVER_SET_SORT (SD_SERVER * 256 + 0x51) /* set sorting behavior */ #define CMD_SERVER_SET_OPT (SD_SERVER * 256 + 0x52) /* set type of optimization */ /* SD_CLIENT command types: */ #define CMD_CLIENT_GET_ID (SD_CLIENT * 256 + 0x60) /* get the ID (channel field) of this client? */ #define CMD_CLIENT_SET_ID (SD_CLIENT * 256 + 0x61) /* set the ID (channel field) of this client? */ #define CMD_CLIENT_SHUTDOWN (SD_CLIENT * 256 + 0x62) /* tell client to die ? */ /* Bus load monitor (SD_BLM) commands: */ #define CMD_BLM_SET_MODE (SD_BLM * 256 + 0xA0) #define CMD_BLM_GET_MODE (SD_BLM * 256 + 0xA1) #define CMD_BLM_GET_DATA (SD_BLM * 256 + 0xA2) #define CMD_BLM_GET_STATS (SD_BLM * 256 + 0xA3) /* Flight recorder (SD_FLIGHT) commands */ #define CMD_FLIGHT_GET_CONFIG (SD_FLIGHT * 256 + 0x50) /* get flight recorder channel info */ #define CMD_FLIGHT_START_MON (SD_FLIGHT * 256 + 0x51) /* start flight recorder monitoring */ #define CMD_FLIGHT_STOP_MON (SD_FLIGHT * 256 + 0x52) /* stop flight recorder monitoring */ /* Message responder (SD_RESP) commands: */ #define CMD_MSGRESP_ADD (SD_RESP * 256 + 0xB0) #define CMD_MSGRESP_GET (SD_RESP * 256 + 0xB1) #define CMD_MSGRESP_MODIFY (SD_RESP * 256 + 0xB2) #define CMD_MSGRESP_GET_HANDLES (SD_RESP * 256 + 0xB3) /* Program loader (SD_PGM) commands: */ #define CMD_PGM_DESC (SD_PGM * 256 + 0x90) /* Describe a program to to uploaded */ #define CMD_PGM_UPLOAD (SD_PGM * 256 + 0x91) /* Upload a program to the Gryphon */ #define CMD_PGM_DELETE (SD_PGM * 256 + 0x92) /* Delete an uploaded program */ #define CMD_PGM_LIST (SD_PGM * 256 + 0x93) /* Get a list of uploaded programs */ #define CMD_PGM_START (SD_PGM * 256 + 0x94) /* Start an uploaded program */ #define CMD_PGM_START2 (SD_CLIENT * 256 + 0x94)/* Start an uploaded program */ #define CMD_PGM_STOP (SD_PGM * 256 + 0x95) /* Stop an uploaded program */ #define CMD_PGM_STATUS (SD_PGM * 256 + 0x96) /* Get the status of an uploaded program */ #define CMD_PGM_OPTIONS (SD_PGM * 256 + 0x97) /* Set the upload options */ #define CMD_PGM_FILES (SD_PGM * 256 + 0x98) /* Get a list of files & directories */ /* Scheduler (SD_SCHED) target commands: */ #define CMD_SCHED_TX (SD_SCHED * 256 + 0x70) /* schedule transmission list */ #define CMD_SCHED_KILL_TX (SD_SCHED * 256 + 0x71) /* stop and destroy job */ #define CMD_SCHED_STOP_TX (SD_SCHED * 256 + 0x71) /* deprecated */ #define CMD_SCHED_MSG_REPLACE (SD_SCHED * 256 + 0x72) /* replace a scheduled message */ /* USDT (SD_USDT) target commands: */ #define CMD_USDT_IOCTL (SD_USDT * 256 + 0x47) /* Register/Unregister with USDT */ #define CMD_USDT_REGISTER (SD_USDT * 256 + 0xB0) /* Register/Unregister with USDT */ #define CMD_USDT_SET_FUNCTIONAL (SD_USDT * 256 + 0xB1) /* Set to use extended addressing*/ /* USDT (SD_IOPWR) target commands: */ #define CMD_IOPWR_GETINP (SD_IOPWR * 256 + 0x40) /* Read current digital inputs */ #define CMD_IOPWR_GETLATCH (SD_IOPWR * 256 + 0x41) /* Read latched digital inputs */ #define CMD_IOPWR_CLRLATCH (SD_IOPWR * 256 + 0x42) /* Read & clear latched inputs */ #define CMD_IOPWR_GETOUT (SD_IOPWR * 256 + 0x43) /* Read digital outputs */ #define CMD_IOPWR_SETOUT (SD_IOPWR * 256 + 0x44) /* Write digital outputs */ #define CMD_IOPWR_SETBIT (SD_IOPWR * 256 + 0x45) /* Set indicated output bit(s) */ #define CMD_IOPWR_CLRBIT (SD_IOPWR * 256 + 0x46) /* Clear indicated output bit(s)*/ #define CMD_IOPWR_GETPOWER (SD_IOPWR * 256 + 0x47) /* Read inputs at power on time */ /* Miscellaneous (SD_UTIL) target commands: */ #define CMD_UTIL_SET_INIT_STRATEGY (SD_UTIL * 256 + 0x90) /* set the initialization strategy */ #define CMD_UTIL_GET_INIT_STRATEGY (SD_UTIL * 256 + 0x91) /* get the initialization strategy */ /* response frame (FT_RESP) response field definitions: */ #define RESP_OK 0x00 /* no error */ #define RESP_UNKNOWN_ERR 0x01 /* unknown error */ #define RESP_UNKNOWN_CMD 0x02 /* unrecognised command */ #define RESP_UNSUPPORTED 0x03 /* unsupported command */ #define RESP_INVAL_CHAN 0x04 /* invalid channel specified */ #define RESP_INVAL_DST 0x05 /* invalid destination */ #define RESP_INVAL_PARAM 0x06 /* invalid parameters */ #define RESP_INVAL_MSG 0x07 /* invalid message */ #define RESP_INVAL_LEN 0x08 /* invalid length field */ #define RESP_TX_FAIL 0x09 /* transmit failed */ #define RESP_RX_FAIL 0x0a /* receive failed */ #define RESP_AUTH_FAIL 0x0b #define RESP_MEM_ALLOC_ERR 0x0c /* memory allocation error */ #define RESP_TIMEOUT 0x0d /* command timed out */ #define RESP_UNAVAILABLE 0x0e #define RESP_BUF_FULL 0x0f /* buffer full */ #define RESP_NO_SUCH_JOB 0x10 /* Flight recorder (SD_FLIGHT) target definitions */ #define FR_RESP_AFTER_EVENT 0 #define FR_RESP_AFTER_PERIOD 1 #define FR_IGNORE_DURING_PER 2 #define FR_DEACT_AFTER_PER 0x80 #define FR_DEACT_ON_EVENT 0x40 #define FR_DELETE 0x20 #define FR_PERIOD_MSGS 0x10 /* Filter data types */ #define FILTER_DATA_TYPE_HEADER_FRAME 0x00 #define FILTER_DATA_TYPE_HEADER 0x01 #define FILTER_DATA_TYPE_DATA 0x02 #define FILTER_DATA_TYPE_EXTRA_DATA 0x03 #define FILTER_EVENT_TYPE_HEADER 0x04 #define FILTER_EVENT_TYPE_DATA 0x05 /* filter flags */ #define FILTER_PASS_FLAG 0x01 #define FILTER_ACTIVE_FLAG 0x02 /* Filter and Frame Responder Condition operators */ #define BIT_FIELD_CHECK 0 #define SVALUE_GT 1 #define SVALUE_GE 2 #define SVALUE_LT 3 #define SVALUE_LE 4 #define VALUE_EQ 5 #define VALUE_NE 6 #define UVALUE_GT 7 #define UVALUE_GE 8 #define UVALUE_LT 9 #define UVALUE_LE 10 #define DIG_LOW_TO_HIGH 11 #define DIG_HIGH_TO_LOW 12 #define DIG_TRANSITION 13 /* Modes available via CMD_CARD_SET_FILTERING_MODE */ #define FILTER_OFF_PASS_ALL 3 #define FILTER_OFF_BLOCK_ALL 4 #define FILTER_ON 5 /* Modes available via CMD_CARD_SET_DEFAULT_FILTER */ #define DEFAULT_FILTER_BLOCK 0 #define DEFAULT_FILTER_PASS 1 /* Actions available via CMD_CARD_MODIFY_FILTER */ #define DELETE_FILTER 0 #define ACTIVATE_FILTER 1 #define DEACTIVATE_FILTER 2 /* Flags to modify how FT_CMD (command) messages are handled */ /* These values are ORed with FT_CMD and stored in the Frame Header's */ /* Frame Type field for each response. */ #define DONT_WAIT_FOR_RESP 0x80 #define WAIT_FOR_PREV_RESP 0x40 #define RESPONSE_FLAGS (DONT_WAIT_FOR_RESP | WAIT_FOR_PREV_RESP) /* Program loader options */ #define PGM_CONV 1 /* Type of data conversion to perform */ #define PGM_TYPE 2 /* Type of file */ #define PGM_BIN 11 /* Binary, no conversion */ #define PGM_ASCII 12 /* ASCII, convert CR LF to LF */ #define PGM_PGM 21 /* Executable */ #define PGM_DATA 22 /* Data */ /* IOCTL definitions - comments indicate data size */ #define GINIT 0x11100001 #define GLOOPON 0x11100002 #define GLOOPOFF 0x11100003 #define GGETHWTYPE 0x11100004 #define GGETREG 0x11100005 #define GSETREG 0x11100006 #define GGETRXCOUNT 0x11100007 #define GSETRXCOUNT 0x11100008 #define GGETTXCOUNT 0x11100009 #define GSETTXCOUNT 0x1110000a #define GGETRXDROP 0x1110000b #define GSETRXDROP 0x1110000c #define GGETTXDROP 0x1110000d #define GSETTXDROP 0x1110000e #define GGETRXBAD 0x1110000f #define GGETTXBAD 0x11100011 #define GGETCOUNTS 0x11100013 #define GGETBLMON 0x11100014 #define GSETBLMON 0x11100015 #define GGETERRLEV 0x11100016 #define GSETERRLEV 0x11100017 #define GGETBITRATE 0x11100018 #define GGETRAM 0x11100019 #define GSETRAM 0x1110001a #define GCANGETBTRS 0x11200001 #define GCANSETBTRS 0x11200002 #define GCANGETBC 0x11200003 #define GCANSETBC 0x11200004 #define GCANGETMODE 0x11200005 #define GCANSETMODE 0x11200006 #define GCANGETTRANS 0x11200009 #define GCANSETTRANS 0x1120000a #define GCANSENDERR 0x1120000b #define GCANRGETOBJ 0x11210001 #define GCANRSETSTDID 0x11210002 #define GCANRSETEXTID 0x11210003 #define GCANRSETDATA 0x11210004 #define GCANRENABLE 0x11210005 #define GCANRDISABLE 0x11210006 #define GCANRGETMASKS 0x11210007 #define GCANRSETMASKS 0x11210008 #define GCANSWGETMODE 0x11220001 #define GCANSWSETMODE 0x11220002 #define GDLCGETFOURX 0x11400001 #define GDLCSETFOURX 0x11400002 #define GDLCGETLOAD 0x11400003 #define GDLCSETLOAD 0x11400004 #define GDLCSENDBREAK 0x11400005 #define GDLCABORTTX 0x11400006 #define GDLCGETHDRMODE 0x11400007 #define GDLCSETHDRMODE 0x11400008 #define GHONSLEEP 0x11600001 #define GHONSILENCE 0x11600002 #define GKWPSETPTIMES 0x11700011 #define GKWPSETWTIMES 0x11700010 #define GKWPDOWAKEUP 0x11700008 #define GKWPGETBITTIME 0x11700101 #define GKWPSETBITTIME 0x11700102 #define GKWPSETNODEADDR 0x11700104 #define GKWPGETNODETYPE 0x11700105 #define GKWPSETNODETYPE 0x11700106 #define GKWPSETWAKETYPE 0x11700108 #define GKWPSETTARGADDR 0x1170010a #define GKWPSETKEYBYTES 0x1170010c #define GKWPSETSTARTREQ 0x1170010e #define GKWPSETSTARTRESP 0x11700110 #define GKWPSETPROTOCOL 0x11700112 #define GKWPGETLASTKEYBYTES 0x11700201 #define GKWPSETLASTKEYBYTES 0x11700202 #define GSCPGETBBR 0x11300001 #define GSCPSETBBR 0x11300002 #define GSCPGETID 0x11300003 #define GSCPSETID 0x11300004 #define GSCPADDFUNCID 0x11300005 #define GSCPCLRFUNCID 0x11300006 #define GUBPGETBITRATE 0x11800001 #define GUBPSETBITRATE 0x11800002 #define GUBPGETINTERBYTE 0x11800003 #define GUBPSETINTERBYTE 0x11800004 #define GUBPGETNACKMODE 0x11800005 #define GUBPSETNACKMODE 0x11800006 #define GUBPGETRETRYDELAY 0x11800007 #define GUBPSETRETRYDELAY 0x11800008 #define GRESETHC08 0x11800009 #define GTESTHC08COP 0x1180000A #define GSJAGETLISTEN 0x11250001 #define GSJASETLISTEN 0x11250002 #define GSJAGETSELFTEST 0x11250003 #define GSJASETSELFTEST 0x11250004 #define GSJAGETXMITONCE 0x11250005 #define GSJASETXMITONCE 0x11250006 #define GSJAGETTRIGSTATE 0x11250007 #define GSJASETTRIGCTRL 0x11250008 #define GSJAGETTRIGCTRL 0x11250009 #define GSJAGETOUTSTATE 0x1125000A #define GSJASETOUTSTATE 0x1125000B #define GSJAGETFILTER 0x1125000C #define GSJASETFILTER 0x1125000D #define GSJAGETMASK 0x1125000E #define GSJASETMASK 0x1125000F #define GSJAGETINTTERM 0x11250010 #define GSJASETINTTERM 0x11250011 #define GSJAGETFTTRANS 0x11250012 #define GSJASETFTTRANS 0x11250013 #define GSJAGETFTERROR 0x11250014 #define GLINGETBITRATE 0x11C00001 #define GLINSETBITRATE 0x11C00002 #define GLINGETBRKSPACE 0x11C00003 #define GLINSETBRKSPACE 0x11C00004 #define GLINGETBRKMARK 0x11C00005 #define GLINSETBRKMARK 0x11C00006 #define GLINGETIDDELAY 0x11C00007 #define GLINSETIDDELAY 0x11C00008 #define GLINGETRESPDELAY 0x11C00009 #define GLINSETRESPDELAY 0x11C0000A #define GLINGETINTERBYTE 0x11C0000B #define GLINSETINTERBYTE 0x11C0000C #define GLINGETWAKEUPDELAY 0x11C0000D #define GLINSETWAKEUPDELAY 0x11C0000E #define GLINGETWAKEUPTIMEOUT 0x11C0000F #define GLINSETWAKEUPTIMEOUT 0x11C00010 #define GLINGETWUTIMOUT3BR 0x11C00011 #define GLINSETWUTIMOUT3BR 0x11C00012 #define GLINSENDWAKEUP 0x11C00013 #define GLINGETMODE 0x11C00014 #define GLINSETMODE 0x11C00015 #define GINPGETINP 0x11500001 #define GINPGETLATCH 0x11500002 #define GINPCLRLATCH 0x11500003 #define GOUTGET 0x11510001 #define GOUTSET 0x11510002 #define GOUTSETBIT 0x11510003 #define GOUTCLEARBIT 0x11510004 #define GPWRGETWHICH 0x11520001 #define GPWROFF 0x11520002 #define GPWROFFRESET 0x11520003 #define GPWRRESET 0x11520004 /* Hardware / driver TYPE and SUBTYPE definitions */ #define GDUMMY 0x01 /* Dummy device driver TYPE */ #define GDGDMARKONE 0x01 /* Dummy device driver SUBTYPE */ #define GCAN 0x02 /* CAN TYPE */ #define G82527 0x01 /* 82527 SUBTYPE */ #define GSJA1000 0x02 /* SJA1000 SUBTYPE */ #define G82527SW 0x03 /* 82527 single wire subtype */ #define G82527ISO11992 0x04 /* 82527 ISO11992 subtype */ #define G82527_SINGLECHAN 0x05 /* 82527 single channel */ #define G82527SW_SINGLECHAN 0x06 /* 82527 single wire single channel */ #define G82527ISO11992_SINGLECHAN 0x07 /* 82527 ISO11992 single channel */ #define GSJA1000FT 0x10 /* SJA1000 Fault Tolerant subtype */ #define GSJA1000C 0x11 /* SJA1000 Compact subtype */ #define GSJA1000FT_FO 0x12 /* SJA1000 single chsnnel Fault Tolerant subtype */ #define GJ1850 0x03 /* 1850 TYPE */ #define GHBCCPAIR 0x01 /* HBCC SUBTYPE */ #define GDLC 0x02 /* GM DLC SUBTYPE */ #define GCHRYSLER 0x03 /* Chrysler SUBTYPE */ #define GDEHC12 0x04 /* DE HC12 KWP/BDLC SUBTYPE */ #define GKWP2000 0x04 /* Keyword protocol 2000 TYPE */ #define GDEHC12KWP 0x01 /* DE HC12 KWP/BDLC card SUBTYPE */ #define GHONDA 0x05 /* Honda UART TYPE */ #define GDGHC08 0x01 /* DG HC08 SUBTYPE */ #define GFORDUBP 0x06 /* FORD UBP TYPE */ #define GDGUBP08 0x01 /* DG HC08 SUBTYPE */ #define GSCI 0x09 /* Chrysler SCI TYPE */ #define G16550SCI 0x01 /* 16550 type UART based card SUBTYPE */ #define GCCD 0x0a /* Chrysler C2D TYPE */ #define G16550CDP68HC68 0x01 /* 16550 / CDP68HC68S1 card SUBTYPE */ #define GLIN 0x0b /* LIN TYPE */ #define GDGLIN08 0x01 /* DG HC08 SUBTYPE */ #define SIZEOF(x) (sizeof(x)/sizeof(x[0])) #define MEMCPY(dest, src, size) \ memcpy (dest, src, size); \ *((dest)+size) = 0; typedef struct val_str_dsp { int value; const char *strptr; int (*cmd_fnct)(tvbuff_t *, int, proto_tree*); int (*rsp_fnct)(tvbuff_t *, int, proto_tree*); } val_str_dsp;