1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>struct usb_composite_dev</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="USB Gadget API for Linux"><link rel="up" href="composite.html" title="Composite Device Framework"><link rel="prev" href="API-module-usb-composite-driver.html" title="module_usb_composite_driver"><link rel="next" href="API-config-ep-by-speed.html" title="config_ep_by_speed"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">struct usb_composite_dev</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-module-usb-composite-driver.html">Prev</a>&#160;</td><th width="60%" align="center">Composite Device Framework</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-config-ep-by-speed.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-struct-usb-composite-dev"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>struct usb_composite_dev &#8212; 
2     represents one composite usb gadget
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="programlisting">
4struct usb_composite_dev {
5  struct usb_gadget * gadget;
6  struct usb_request * req;
7  struct usb_request * os_desc_req;
8  struct usb_configuration * config;
9  u8 qw_sign[OS_STRING_QW_SIGN_LEN];
10  u8 b_vendor_code;
11  struct usb_configuration * os_desc_config;
12  unsigned int use_os_string:1;
13};  </pre></div><div class="refsect1"><a name="idp1124380124"></a><h2>Members</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term">gadget</span></dt><dd><p>
14   read-only, abstracts the gadget's usb peripheral controller
15      </p></dd><dt><span class="term">req</span></dt><dd><p>
16   used for control responses; buffer is pre-allocated
17      </p></dd><dt><span class="term">os_desc_req</span></dt><dd><p>
18   used for OS descriptors responses; buffer is pre-allocated
19      </p></dd><dt><span class="term">config</span></dt><dd><p>
20   the currently active configuration
21      </p></dd><dt><span class="term">qw_sign[OS_STRING_QW_SIGN_LEN]</span></dt><dd><p>
22   qwSignature part of the OS string
23      </p></dd><dt><span class="term">b_vendor_code</span></dt><dd><p>
24   bMS_VendorCode part of the OS string
25      </p></dd><dt><span class="term">os_desc_config</span></dt><dd><p>
26   the configuration to be used with OS descriptors
27      </p></dd><dt><span class="term">use_os_string</span></dt><dd><p>
28   false by default, interested gadgets set it
29      </p></dd></dl></div></div><div class="refsect1"><a name="idp1124386348"></a><h2>Description</h2><p>
30   One of these devices is allocated and initialized before the
31   associated device driver's <code class="function">bind</code> is called.
32</p></div><div class="refsect1"><a name="idp1124387340"></a><h2>OPEN ISSUE</h2><p>
33   it appears that some WUSB devices will need to be
34   built by combining a normal (wired) gadget with a wireless one.
35   This revision of the gadget framework should probably try to make
36   sure doing that won't hurt too much.
37</p></div><div class="refsect1"><a name="idp1124388156"></a><h2>One notion for how to handle Wireless USB devices involves</h2><p>
38   (a) a second gadget here, discovery mechanism TBD, but likely
39   needing separate <span class="quote">&#8220;<span class="quote">register/unregister WUSB gadget</span>&#8221;</span> calls;
40   (b) updates to usb_gadget to include flags <span class="quote">&#8220;<span class="quote">is it wireless</span>&#8221;</span>,
41   <span class="quote">&#8220;<span class="quote">is it wired</span>&#8221;</span>, plus (presumably in a wrapper structure)
42   bandgroup and PHY info;
43   (c) presumably a wireless_ep wrapping a usb_ep, and reporting
44   wireless-specific parameters like maxburst and maxsequence;
45   (d) configurations that are specific to wireless links;
46   (e) function drivers that understand wireless configs and will
47   support wireless for (additional) function instances;
48   (f) a function to support association setup (like CBAF), not
49   necessarily requiring a wireless adapter;
50   (g) composite device setup that can create one or more wireless
51   configs, including appropriate association setup support;
52   (h) more, TBD.
53</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-module-usb-composite-driver.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="composite.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-config-ep-by-speed.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">module_usb_composite_driver</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">config_ep_by_speed</span></td></tr></table></div></body></html>
54