972a1fcb95408d3d6e9b83998b56fdabffb6ed19
[obnox/wireshark/wip.git] / epan / dissectors / packet-usb.h
1 /* packet-usb.h
2  *
3  * $Id$
4  *
5  * Wireshark - Network traffic analyzer
6  * By Gerald Combs <gerald@wireshark.org>
7  * Copyright 1998 Gerald Combs
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * as published by the Free Software Foundation; either version 2
12  * of the License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  */
23
24 #ifndef __PACKET_USB_H__
25 #define __PACKET_USB_H__
26
27 /* there is one such structure for each device/endpoint conversation */
28 typedef struct _usb_conv_info_t {
29     guint16 class;              /* class for this conversation */
30     emem_tree_t *transactions;
31     void *masstorage;           /* mass storage data */
32 } usb_conv_info_t;
33
34 /* there is one such structure for each request/response */
35 typedef struct _usb_trans_info_t {
36     guint32 request_in;
37     guint32 response_in;
38     guint8 requesttype;
39     guint8 request;
40     union {
41         struct {
42             guint8 type;
43             guint8 index;
44         } get_descriptor;
45     };
46
47
48     /* used to pass the interface class from the
49      * interface descriptor onto the endpoint
50      * descriptors so that we can create a
51      * conversation with the appropriate class
52      * once we know the endpoint.
53      */
54     usb_conv_info_t *interface_info;
55 } usb_trans_info_t;
56
57
58 /* This is the endpoint number user for "no endpoint" or the fake endpoint 
59  * for the host side since we need two endpoints to manage conversations
60  * properly.
61  */
62 #define NO_ENDPOINT 0xffff
63
64
65 #define IF_CLASS_UNKNOWN                0xffff
66 #define IF_CLASS_MASSTORAGE             0x08
67
68 #endif