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> </td><th width="60%" align="center">Composite Device Framework</th><td width="20%" align="right"> <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 — 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">“<span class="quote">register/unregister WUSB gadget</span>”</span> calls; 40 (b) updates to usb_gadget to include flags <span class="quote">“<span class="quote">is it wireless</span>”</span>, 41 <span class="quote">“<span class="quote">is it wired</span>”</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> </td><td width="20%" align="center"><a accesskey="u" href="composite.html">Up</a></td><td width="40%" align="right"> <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> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">config_ep_by_speed</span></td></tr></table></div></body></html> 54