add a dissector table for class specific control input/output pdus
[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 typedef struct _usb_conv_info_t usb_conv_info_t;
28
29 /* there is one such structure for each request/response */
30 typedef struct _usb_trans_info_t {
31     guint32 request_in;
32     guint32 response_in;
33     guint8 requesttype;
34     guint8 request;
35     union {
36         struct {
37             guint8 type;
38             guint8 index;
39         } get_descriptor;
40     };
41
42
43     /* used to pass the interface class from the
44      * interface descriptor onto the endpoint
45      * descriptors so that we can create a
46      * conversation with the appropriate class
47      * once we know the endpoint.
48      */
49     usb_conv_info_t *interface_info;
50 } usb_trans_info_t;
51
52 /* there is one such structure for each device/endpoint conversation */
53 struct _usb_conv_info_t {
54     guint16 class;              /* class for this conversation */
55     emem_tree_t *transactions;
56     void *masstorage;           /* mass storage data */
57     usb_trans_info_t *usb_trans_info; /* pointer to the current transaction */
58 };
59
60
61 /* This is the endpoint number user for "no endpoint" or the fake endpoint 
62  * for the host side since we need two endpoints to manage conversations
63  * properly.
64  */
65 #define NO_ENDPOINT 0xffff
66
67
68 #define IF_CLASS_UNKNOWN                0xffff
69 #define IF_CLASS_MASSTORAGE             0x08
70
71 #endif