\hypertarget{usb__device_8h_source}{}\doxysection{usb\+\_\+device.\+h}
\label{usb__device_8h_source}\index{dev/usb/usb\_device.h@{dev/usb/usb\_device.h}}
\mbox{\hyperlink{usb__device_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00001}\mbox{\hyperlink{usb__device_8h_a69a281cc95fec110b50b61a63ca4b8a0}{00001}} \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00002}\mbox{\hyperlink{usb__device_8h_a81fb55d15dac57213939e87c27ee34fa}{00002}} \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00003}\mbox{\hyperlink{usb__device_8h_af181a7a596da8f86845dc2616c22f347}{00003}} \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00004}\mbox{\hyperlink{usb__device_8h_a03635a4e4f64c25e2bf0be70f7e4c423}{00004}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00005}\mbox{\hyperlink{usb__device_8h_ae5343702cbc3007b3c8f25a39d9be329}{00005}} \textcolor{comment}{ * Copyright (c) 2008-\/2019 Hans Petter Selasky. All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00006}\mbox{\hyperlink{usb__device_8h_aca7ecde8ef7dbc8ccfbb82fc672ab168}{00006}} \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00017}00017 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00018}00018 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00019}00019 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00020}00020 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00021}00021 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00022}00022 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00023}00023 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00024}00024 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00025}00025 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00026}00026 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00027}00027 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00028}00028 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00029}00029 \textcolor{preprocessor}{\#ifndef \_USB\_DEVICE\_H\_}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00030}00030 \textcolor{preprocessor}{\#define \_USB\_DEVICE\_H\_}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00031}00031 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00033}00033 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__core_8h}{dev/usb/usb\_core.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00034}00034 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__busdma_8h}{dev/usb/usb\_busdma.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00035}00035 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__transfer_8h}{dev/usb/usb\_transfer.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00036}00036 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00038}00038 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__bus__methods}{usb\_bus\_methods}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00039}00039 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00040}00040 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}};            \textcolor{comment}{/* linux compat */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00041}00041 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00042}00042 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__profile}{usb\_hw\_ep\_profile}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00043}00043 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__symlink}{usb\_symlink}};          \textcolor{comment}{/* UGEN */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00045}\mbox{\hyperlink{usb__device_8h_a205fb6bc48d9d1b40b378031de6850ea}{00045}} \textcolor{preprocessor}{\#define USB\_CTRL\_XFER\_MAX 2}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00047}00047 \textcolor{comment}{/* "{}usb\_config\_parse()"{} commands */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00048}00048 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00049}\mbox{\hyperlink{usb__device_8h_afeb04872f3ac38ea559102f143515166}{00049}} \textcolor{preprocessor}{\#define USB\_CFG\_ALLOC 0}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00050}\mbox{\hyperlink{usb__device_8h_a602dcf2e700818b6130a2afad1abec30}{00050}} \textcolor{preprocessor}{\#define USB\_CFG\_FREE 1}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00051}\mbox{\hyperlink{usb__device_8h_a8af996c8d0f6baae14c15d3605f44d82}{00051}} \textcolor{preprocessor}{\#define USB\_CFG\_INIT 2}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00052}00052 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00053}00053 \textcolor{comment}{/* "{}usb\_unconfigure()"{} flags */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00054}00054 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00055}\mbox{\hyperlink{usb__device_8h_afde6f50140845313fd21f008b1f33e01}{00055}} \textcolor{preprocessor}{\#define USB\_UNCFG\_FLAG\_NONE 0x00}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00056}\mbox{\hyperlink{usb__device_8h_ae45a494edb9e427383e76cbb0876d619}{00056}} \textcolor{preprocessor}{\#define USB\_UNCFG\_FLAG\_FREE\_EP0 0x02            }\textcolor{comment}{/* endpoint zero is freed */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00058}\mbox{\hyperlink{structusb__udev__msg}{00058}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__udev__msg}{usb\_udev\_msg}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00059}\mbox{\hyperlink{structusb__udev__msg_a72c432c5c827ea6ef69a1a8789e46635}{00059}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__proc__msg}{usb\_proc\_msg}} \mbox{\hyperlink{structusb__udev__msg_a72c432c5c827ea6ef69a1a8789e46635}{hdr}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00060}\mbox{\hyperlink{structusb__udev__msg_a8cedec69572e72b5da01779671952361}{00060}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structusb__udev__msg_a8cedec69572e72b5da01779671952361}{udev}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00061}00061 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00063}00063 \textcolor{comment}{/* The following four structures makes up a tree, where we have the}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00064}00064 \textcolor{comment}{ * leaf structure, "{}usb\_host\_endpoint"{}, first, and the root structure,}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00065}00065 \textcolor{comment}{ * "{}usb\_device"{}, last. The four structures below mirror the structure}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00066}00066 \textcolor{comment}{ * of the USB descriptors belonging to an USB configuration. Please}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00067}00067 \textcolor{comment}{ * refer to the USB specification for a definition of "{}endpoints"{} and}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00068}00068 \textcolor{comment}{ * "{}interfaces"{}.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00069}00069 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00070}\mbox{\hyperlink{structusb__host__endpoint}{00070}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__endpoint}{usb\_host\_endpoint}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00071}\mbox{\hyperlink{structusb__host__endpoint_ad8bc01a58d793910c501ab7ed52c3968}{00071}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint__descriptor}{usb\_endpoint\_descriptor}} \mbox{\hyperlink{structusb__host__endpoint_ad8bc01a58d793910c501ab7ed52c3968}{desc}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00072}\mbox{\hyperlink{structusb__host__endpoint_a6912657db247ce543efc4aeb373a91e3}{00072}}         \mbox{\hyperlink{structusb__host__endpoint_a6912657db247ce543efc4aeb373a91e3}{TAILQ\_HEAD}}(, urb) bsd\_urb\_list;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00073}\mbox{\hyperlink{structusb__host__endpoint_a6f5748b57f5194bedf03dacf7672ca1f}{00073}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *\mbox{\hyperlink{structusb__host__endpoint_a6f5748b57f5194bedf03dacf7672ca1f}{bsd\_xfer}}[2];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00074}\mbox{\hyperlink{structusb__host__endpoint_aec4a314d1b369cde0d120142cb44d120}{00074}}         uint8\_t *\mbox{\hyperlink{structusb__host__endpoint_aec4a314d1b369cde0d120142cb44d120}{extra}};                    \textcolor{comment}{/* Extra descriptors */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00075}\mbox{\hyperlink{structusb__host__endpoint_a8ce43ec5102cb3b7382e9c2c21cdd10f}{00075}}         \mbox{\hyperlink{usb__freebsd_8h_a66bb6b1869e5e89aff3b693720b39cfb}{usb\_frlength\_t}} \mbox{\hyperlink{structusb__host__endpoint_a8ce43ec5102cb3b7382e9c2c21cdd10f}{fbsd\_buf\_size}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00076}\mbox{\hyperlink{structusb__host__endpoint_a315787f285a5e52e2accfb7b5547a2de}{00076}}         uint16\_t \mbox{\hyperlink{structusb__host__endpoint_a315787f285a5e52e2accfb7b5547a2de}{extralen}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00077}\mbox{\hyperlink{structusb__host__endpoint_aac36b395e39152d516a73fb6b297644c}{00077}}         uint8\_t \mbox{\hyperlink{structusb__host__endpoint_aac36b395e39152d516a73fb6b297644c}{bsd\_iface\_index}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00078}00078 \} \mbox{\hyperlink{usb__device_8h_af70f48794aaccb4bdacd13674c9bba33}{\_\_aligned}}(\mbox{\hyperlink{usb__freebsd_8h_a0d41cb59a7c8f7a0d52857d77d54f392}{USB\_HOST\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00080}\mbox{\hyperlink{structusb__host__interface}{00080}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__interface}{usb\_host\_interface}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00081}\mbox{\hyperlink{structusb__host__interface_af47f23ec78c889634a1e61320f37bc92}{00081}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} \mbox{\hyperlink{structusb__host__interface_af47f23ec78c889634a1e61320f37bc92}{desc}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00082}00082         \textcolor{comment}{/* the following array has size "{}desc.bNumEndpoint"{} */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00083}\mbox{\hyperlink{structusb__host__interface_a302c997834fb0c1a742b799cf4ab9f93}{00083}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__endpoint}{usb\_host\_endpoint}} *\mbox{\hyperlink{structusb__host__interface_a302c997834fb0c1a742b799cf4ab9f93}{endpoint}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00084}\mbox{\hyperlink{structusb__host__interface_a3fd946255306ada7283fc6ed8cdf1316}{00084}}         \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{structusb__host__interface_a3fd946255306ada7283fc6ed8cdf1316}{string}};               \textcolor{comment}{/* iInterface string, if present */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00085}\mbox{\hyperlink{structusb__host__interface_a21673adf7f03e4f9c40ab3e66e92721b}{00085}}         uint8\_t *\mbox{\hyperlink{structusb__host__interface_a21673adf7f03e4f9c40ab3e66e92721b}{extra}};                    \textcolor{comment}{/* Extra descriptors */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00086}\mbox{\hyperlink{structusb__host__interface_a9eb6008ca194fae9f8052b8d625825f6}{00086}}         uint16\_t \mbox{\hyperlink{structusb__host__interface_a9eb6008ca194fae9f8052b8d625825f6}{extralen}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00087}\mbox{\hyperlink{structusb__host__interface_ad2ddc1dff48b2757576bd7e8a6fadad7}{00087}}         uint8\_t \mbox{\hyperlink{structusb__host__interface_ad2ddc1dff48b2757576bd7e8a6fadad7}{bsd\_iface\_index}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00088}00088 \} \mbox{\hyperlink{usb__device_8h_af70f48794aaccb4bdacd13674c9bba33}{\_\_aligned}}(\mbox{\hyperlink{usb__freebsd_8h_a0d41cb59a7c8f7a0d52857d77d54f392}{USB\_HOST\_ALIGN}});}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00089}00089 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00090}00090 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00091}00091 \textcolor{comment}{ * The following structure defines the USB device flags.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00092}00092 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00093}\mbox{\hyperlink{structusb__device__flags}{00093}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__flags}{usb\_device\_flags}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00094}\mbox{\hyperlink{structusb__device__flags_ad686103f845c7d070e25fa7a26c34694}{00094}}         \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806b}{usb\_hc\_mode}} \mbox{\hyperlink{structusb__device__flags_ad686103f845c7d070e25fa7a26c34694}{usb\_mode}};   \textcolor{comment}{/* host or device mode */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00095}\mbox{\hyperlink{structusb__device__flags_a41252dd27c1f941416917504610e0257}{00095}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_a41252dd27c1f941416917504610e0257}{self\_powered}}:1;             \textcolor{comment}{/* set if USB device is self powered */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00096}\mbox{\hyperlink{structusb__device__flags_a3e8a1720f530f8d6cab54f292d00cf12}{00096}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_a3e8a1720f530f8d6cab54f292d00cf12}{no\_strings}}:1;         \textcolor{comment}{/* set if USB device does not support}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00097}00097 \textcolor{comment}{                                         * strings */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00098}\mbox{\hyperlink{structusb__device__flags_a63e95a66d1ec8e9a3a5968954f64ed78}{00098}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_a63e95a66d1ec8e9a3a5968954f64ed78}{remote\_wakeup}}:1;   \textcolor{comment}{/* set if remote wakeup is enabled */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00099}\mbox{\hyperlink{structusb__device__flags_a122f17c6cbe994988d4aed4dd5bd1b5e}{00099}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_a122f17c6cbe994988d4aed4dd5bd1b5e}{uq\_bus\_powered}}:1; \textcolor{comment}{/* set if BUS powered quirk is present */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00101}00101         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00102}00102 \textcolor{comment}{         * NOTE: Although the flags below will reach the same value}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00103}00103 \textcolor{comment}{         * over time, but the instant values may differ, and}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00104}00104 \textcolor{comment}{         * consequently the flags cannot be merged into one!}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00105}00105 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00106}\mbox{\hyperlink{structusb__device__flags_ac6bb1ecb98920dcf4b6e8b73e49b0701}{00106}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_ac6bb1ecb98920dcf4b6e8b73e49b0701}{peer\_suspended}}:1; \textcolor{comment}{/* set if peer is suspended */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00107}\mbox{\hyperlink{structusb__device__flags_a9d1323e73bf72fdb6a0e60b36401faae}{00107}}         uint8\_t \mbox{\hyperlink{structusb__device__flags_a9d1323e73bf72fdb6a0e60b36401faae}{self\_suspended}}:1; \textcolor{comment}{/* set if self is suspended */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00108}\mbox{\hyperlink{usb__device_8h_af70f48794aaccb4bdacd13674c9bba33}{00108}} \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00110}00110 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00111}00111 \textcolor{comment}{ * The following structure is used for power-\/save purposes. The data}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00112}00112 \textcolor{comment}{ * in this structure is protected by the USB BUS lock.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00113}00113 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00114}\mbox{\hyperlink{structusb__power__save}{00114}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__power__save}{usb\_power\_save}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00115}\mbox{\hyperlink{structusb__power__save_a07a7eaec1abcb60f44a05d39c5246525}{00115}}         \mbox{\hyperlink{usb__freebsd_8h_a7c98df1d57db543e15395474ae9b50e2}{usb\_ticks\_t}} \mbox{\hyperlink{structusb__power__save_a07a7eaec1abcb60f44a05d39c5246525}{last\_xfer\_time}};    \textcolor{comment}{/* copy of "{}ticks"{} */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00116}\mbox{\hyperlink{structusb__power__save_a82f869c7f4825eafa5e157097370762d}{00116}}         \mbox{\hyperlink{usb__freebsd_8h_aef76bd5158b84c44681a07bc5f22aff1}{usb\_size\_t}} \mbox{\hyperlink{structusb__power__save_a82f869c7f4825eafa5e157097370762d}{type\_refs}}[4];     \textcolor{comment}{/* transfer reference count */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00117}\mbox{\hyperlink{structusb__power__save_a43891a479019f2fbd3dc9947cc50468c}{00117}}         \mbox{\hyperlink{usb__freebsd_8h_aef76bd5158b84c44681a07bc5f22aff1}{usb\_size\_t}} \mbox{\hyperlink{structusb__power__save_a43891a479019f2fbd3dc9947cc50468c}{read\_refs}};                \textcolor{comment}{/* data read references */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00118}\mbox{\hyperlink{structusb__power__save_ad77d356bddc879e20ff741ebf099bb61}{00118}}         \mbox{\hyperlink{usb__freebsd_8h_aef76bd5158b84c44681a07bc5f22aff1}{usb\_size\_t}} \mbox{\hyperlink{structusb__power__save_ad77d356bddc879e20ff741ebf099bb61}{write\_refs}};              \textcolor{comment}{/* data write references */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00119}00119 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00121}00121 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00122}00122 \textcolor{comment}{ * The following structure is used when trying to allocate hardware}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00123}00123 \textcolor{comment}{ * endpoints for an USB configuration in USB device side mode.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00124}00124 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00125}\mbox{\hyperlink{structusb__hw__ep__scratch__sub}{00125}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__scratch__sub}{usb\_hw\_ep\_scratch\_sub}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00126}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a7f17523d7b0363f70a5da2ef94cda5b6}{00126}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__profile}{usb\_hw\_ep\_profile}} *\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a7f17523d7b0363f70a5da2ef94cda5b6}{pf}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00127}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_af442b4a183bafa4eea2c2f393329a661}{00127}}         uint16\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_af442b4a183bafa4eea2c2f393329a661}{max\_frame\_size}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00128}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a87924fc2ceded5a43a6a21c90a5e1edc}{00128}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_a87924fc2ceded5a43a6a21c90a5e1edc}{hw\_endpoint\_out}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00129}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a470c1b7d315d69429f1fb281dc703b55}{00129}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_a470c1b7d315d69429f1fb281dc703b55}{hw\_endpoint\_in}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00130}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a00081a9b784d43d7eddd7794d0835824}{00130}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_a00081a9b784d43d7eddd7794d0835824}{needs\_ep\_type}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00131}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_adf7c7c92f9317bd8de774b3de34b2771}{00131}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_adf7c7c92f9317bd8de774b3de34b2771}{needs\_in}}:1;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00132}\mbox{\hyperlink{structusb__hw__ep__scratch__sub_a9d0c688b5b94fc962ecc10d68876d1e9}{00132}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch__sub_a9d0c688b5b94fc962ecc10d68876d1e9}{needs\_out}}:1;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00133}00133 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00135}00135 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00136}00136 \textcolor{comment}{ * The following structure is used when trying to allocate hardware}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00137}00137 \textcolor{comment}{ * endpoints for an USB configuration in USB device side mode.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00138}00138 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00139}\mbox{\hyperlink{structusb__hw__ep__scratch}{00139}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__scratch}{usb\_hw\_ep\_scratch}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00140}\mbox{\hyperlink{structusb__hw__ep__scratch_a561f71de6746f927fa609a32f21d2e84}{00140}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__scratch__sub}{usb\_hw\_ep\_scratch\_sub}} \mbox{\hyperlink{structusb__hw__ep__scratch_a561f71de6746f927fa609a32f21d2e84}{ep}}[\mbox{\hyperlink{usb_8h_afd710e58326d00f8a42410b824479f09}{USB\_EP\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00141}\mbox{\hyperlink{structusb__hw__ep__scratch_ae2d3155b07694aa0db4fd235c3b4a71a}{00141}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__scratch__sub}{usb\_hw\_ep\_scratch\_sub}} *\mbox{\hyperlink{structusb__hw__ep__scratch_ae2d3155b07694aa0db4fd235c3b4a71a}{ep\_max}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00142}\mbox{\hyperlink{structusb__hw__ep__scratch_a794a10ca6e1bd5aa6d150551ca34d002}{00142}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}} *\mbox{\hyperlink{structusb__hw__ep__scratch_a794a10ca6e1bd5aa6d150551ca34d002}{cd}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00143}\mbox{\hyperlink{structusb__hw__ep__scratch_a400a22b6550d688c60dce4080aa00a9b}{00143}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structusb__hw__ep__scratch_a400a22b6550d688c60dce4080aa00a9b}{udev}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00144}\mbox{\hyperlink{structusb__hw__ep__scratch_a795d062814a848df0275cff43b55edb2}{00144}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__bus__methods}{usb\_bus\_methods}} *\mbox{\hyperlink{structusb__hw__ep__scratch_a795d062814a848df0275cff43b55edb2}{methods}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00145}\mbox{\hyperlink{structusb__hw__ep__scratch_aac58657a3e63861c1b9fd4cc01fa4214}{00145}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch_aac58657a3e63861c1b9fd4cc01fa4214}{bmOutAlloc}}[(\mbox{\hyperlink{usb_8h_afd710e58326d00f8a42410b824479f09}{USB\_EP\_MAX}} + 15) / 16];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00146}\mbox{\hyperlink{structusb__hw__ep__scratch_a993be8c01d8cb02eb8bef462ad7f2f41}{00146}}         uint8\_t \mbox{\hyperlink{structusb__hw__ep__scratch_a993be8c01d8cb02eb8bef462ad7f2f41}{bmInAlloc}}[(\mbox{\hyperlink{usb_8h_afd710e58326d00f8a42410b824479f09}{USB\_EP\_MAX}} + 15) / 16];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00147}00147 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00148}00148 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00149}00149 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00150}00150 \textcolor{comment}{ * The following structure is used when generating USB descriptors}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00151}00151 \textcolor{comment}{ * from USB templates.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00152}00152 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00153}\mbox{\hyperlink{structusb__temp__setup}{00153}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__setup}{usb\_temp\_setup}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00154}\mbox{\hyperlink{structusb__temp__setup_a547792d8b8bd6bdf7e4f3c6e3d0a4270}{00154}}         \textcolor{keywordtype}{void}   *\mbox{\hyperlink{structusb__temp__setup_a547792d8b8bd6bdf7e4f3c6e3d0a4270}{buf}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00155}\mbox{\hyperlink{structusb__temp__setup_a215d4bbe7f1e126a40cb16fed66d20f5}{00155}}         \mbox{\hyperlink{usb__freebsd_8h_aef76bd5158b84c44681a07bc5f22aff1}{usb\_size\_t}} \mbox{\hyperlink{structusb__temp__setup_a215d4bbe7f1e126a40cb16fed66d20f5}{size}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00156}\mbox{\hyperlink{structusb__temp__setup_a809b7e5d093f93c991daf27e3f3729ee}{00156}}         \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ff}{usb\_dev\_speed}} \mbox{\hyperlink{structusb__temp__setup_a809b7e5d093f93c991daf27e3f3729ee}{usb\_speed}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00157}\mbox{\hyperlink{structusb__temp__setup_a24d4c658c26041557919fe5f65aaf12f}{00157}}         uint8\_t \mbox{\hyperlink{structusb__temp__setup_a24d4c658c26041557919fe5f65aaf12f}{self\_powered}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00158}\mbox{\hyperlink{structusb__temp__setup_aa723e96fb8e52a5c3c401f4857a68be9}{00158}}         uint8\_t \mbox{\hyperlink{structusb__temp__setup_aa723e96fb8e52a5c3c401f4857a68be9}{bNumEndpoints}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00159}\mbox{\hyperlink{structusb__temp__setup_a8e85d7b4f267807388cef1afaa7902cf}{00159}}         uint8\_t \mbox{\hyperlink{structusb__temp__setup_a8e85d7b4f267807388cef1afaa7902cf}{bInterfaceNumber}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00160}\mbox{\hyperlink{structusb__temp__setup_a449eac7945093aca019cf61063e61708}{00160}}         uint8\_t \mbox{\hyperlink{structusb__temp__setup_a449eac7945093aca019cf61063e61708}{bAlternateSetting}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00161}\mbox{\hyperlink{structusb__temp__setup_a9547ebdfe968932f216eec64dfc2e21d}{00161}}         uint8\_t \mbox{\hyperlink{structusb__temp__setup_a9547ebdfe968932f216eec64dfc2e21d}{bConfigurationValue}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00162}\mbox{\hyperlink{structusb__temp__setup_ad46d4e049fa42505264525c543f71c0b}{00162}}         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{structusb__temp__setup_ad46d4e049fa42505264525c543f71c0b}{err}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00163}00163 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00164}00164 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00165}00165 \textcolor{comment}{/* }}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00166}00166 \textcolor{comment}{ * The scratch area for USB devices. Access to this structure is}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00167}00167 \textcolor{comment}{ * protected by the control SX lock.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00168}00168 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00169}\mbox{\hyperlink{unionusb__device__scratch}{00169}} \textcolor{keyword}{union }\mbox{\hyperlink{unionusb__device__scratch}{usb\_device\_scratch}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00170}\mbox{\hyperlink{unionusb__device__scratch_aeca8edd9d204db3258ac607c71baca1d}{00170}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hw__ep__scratch}{usb\_hw\_ep\_scratch}} \mbox{\hyperlink{unionusb__device__scratch_aeca8edd9d204db3258ac607c71baca1d}{hw\_ep\_scratch}}[1];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00171}\mbox{\hyperlink{unionusb__device__scratch_abe4261a6004eda99fff3cbf38d8760a8}{00171}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__setup}{usb\_temp\_setup}} \mbox{\hyperlink{unionusb__device__scratch_abe4261a6004eda99fff3cbf38d8760a8}{temp\_setup}}[1];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00172}00172         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00173}\mbox{\hyperlink{unionusb__device__scratch_a616a07ea5149a3db6da0de1ee715bc44}{00173}}                 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} \mbox{\hyperlink{unionusb__device__scratch_a616a07ea5149a3db6da0de1ee715bc44}{dummy}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00174}\mbox{\hyperlink{unionusb__device__scratch_ab67883b4886d4d5cd4a13472f5b4d908}{00174}}                 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__setup__params}{usb\_setup\_params}} \mbox{\hyperlink{unionusb__device__scratch_ab67883b4886d4d5cd4a13472f5b4d908}{parm}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00175}\mbox{\hyperlink{unionusb__device__scratch_ada5e8416ae6d67e4e7f8726f65cc99e5}{00175}}         \} \mbox{\hyperlink{unionusb__device__scratch_ada5e8416ae6d67e4e7f8726f65cc99e5}{xfer\_setup}}[1];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00176}\mbox{\hyperlink{unionusb__device__scratch_a75e58a628a13e210cf402c16985f8e03}{00176}}         uint8\_t \mbox{\hyperlink{unionusb__device__scratch_a75e58a628a13e210cf402c16985f8e03}{data}}[255];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00177}00177 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00178}00178 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00179}00179 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00180}00180 \textcolor{comment}{ * Helper structure to keep track of USB device statistics.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00181}00181 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00182}\mbox{\hyperlink{structusb__device__statistics}{00182}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__statistics}{usb\_device\_statistics}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00183}\mbox{\hyperlink{structusb__device__statistics_a4a6945edb9e1f2def4475405e156ea15}{00183}}         uint32\_t \mbox{\hyperlink{structusb__device__statistics_a4a6945edb9e1f2def4475405e156ea15}{uds\_requests}}[4];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00184}00184 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00185}00185 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00186}00186 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00187}00187 \textcolor{comment}{ * The following structure defines an USB device. There exists one of}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00188}00188 \textcolor{comment}{ * these structures for every USB device.}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00189}00189 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00190}\mbox{\hyperlink{structusb__device}{00190}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} \{}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00191}00191         \textcolor{comment}{/* statistics */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00192}\mbox{\hyperlink{structusb__device_a4c3407aff19ea3bcf1c7736bf19cedf2}{00192}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__statistics}{usb\_device\_statistics}} \mbox{\hyperlink{structusb__device_a4c3407aff19ea3bcf1c7736bf19cedf2}{stats\_err}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00193}\mbox{\hyperlink{structusb__device_a6d8411888315a90b294606bf66114910}{00193}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__statistics}{usb\_device\_statistics}} \mbox{\hyperlink{structusb__device_a6d8411888315a90b294606bf66114910}{stats\_ok}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00194}\mbox{\hyperlink{structusb__device_acdb321ed9e06e1e74050df0816daba89}{00194}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__statistics}{usb\_device\_statistics}} \mbox{\hyperlink{structusb__device_acdb321ed9e06e1e74050df0816daba89}{stats\_cancelled}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00195}00195 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00196}00196         \textcolor{comment}{/* generic clear stall message */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00197}\mbox{\hyperlink{structusb__device_ae3022ef9f65f9b4bf6284d37b56bfd78}{00197}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__udev__msg}{usb\_udev\_msg}} \mbox{\hyperlink{structusb__device_ae3022ef9f65f9b4bf6284d37b56bfd78}{cs\_msg}}[2];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00198}\mbox{\hyperlink{structusb__device_aadd62f2121fbfc1912dda46f7f7d9765}{00198}}         \textcolor{keyword}{struct }sx \mbox{\hyperlink{structusb__device_aadd62f2121fbfc1912dda46f7f7d9765}{enum\_sx}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00199}\mbox{\hyperlink{structusb__device_a44ad871b35adc00fa72bc517d09a14ec}{00199}}         \textcolor{keyword}{struct }sx \mbox{\hyperlink{structusb__device_a44ad871b35adc00fa72bc517d09a14ec}{sr\_sx}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00200}\mbox{\hyperlink{structusb__device_a71691648bd8e345430fb99d7f7617ee1}{00200}}         \textcolor{keyword}{struct }sx \mbox{\hyperlink{structusb__device_a71691648bd8e345430fb99d7f7617ee1}{ctrl\_sx}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00201}\mbox{\hyperlink{structusb__device_a99c95abaa4f62381f92b56c6445d24ec}{00201}}         \textcolor{keyword}{struct }mtx \mbox{\hyperlink{structusb__device_a99c95abaa4f62381f92b56c6445d24ec}{device\_mtx}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00202}\mbox{\hyperlink{structusb__device_a920af3f925453af7f0b2a14a87bd42a3}{00202}}         \textcolor{keyword}{struct }cv \mbox{\hyperlink{structusb__device_a920af3f925453af7f0b2a14a87bd42a3}{ctrlreq\_cv}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00203}\mbox{\hyperlink{structusb__device_a3a4f1ea5cefea6fba4ce3bbf97b1f22c}{00203}}         \textcolor{keyword}{struct }cv \mbox{\hyperlink{structusb__device_a3a4f1ea5cefea6fba4ce3bbf97b1f22c}{ref\_cv}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00204}00204 \textcolor{preprocessor}{\#if (USB\_HAVE\_FIXED\_IFACE == 0)}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00205}\mbox{\hyperlink{structusb__device_a5a56bd9beaee8f554d205a643b7d2c9f}{00205}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *\mbox{\hyperlink{structusb__device_a5a56bd9beaee8f554d205a643b7d2c9f}{ifaces}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00206}00206 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00207}00207         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} \mbox{\hyperlink{structusb__device_a5a56bd9beaee8f554d205a643b7d2c9f}{ifaces}}[\mbox{\hyperlink{usb__freebsd_8h_af142c9a36c3f6c71637e422d3737515a}{USB\_IFACE\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00208}00208 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00209}\mbox{\hyperlink{structusb__device_a11b8381ff1f44f60dc26319a9c366393}{00209}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} \mbox{\hyperlink{structusb__device_a11b8381ff1f44f60dc26319a9c366393}{ctrl\_ep}}; \textcolor{comment}{/* Control Endpoint 0 */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00210}00210 \textcolor{preprocessor}{\#if (USB\_HAVE\_FIXED\_ENDPOINT == 0)}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00211}\mbox{\hyperlink{structusb__device_ad0a32c6dbec7aa6e83d417ddf03977f0}{00211}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *\mbox{\hyperlink{structusb__device_ad0a32c6dbec7aa6e83d417ddf03977f0}{endpoints}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00212}00212 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00213}00213         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} \mbox{\hyperlink{structusb__device_ad0a32c6dbec7aa6e83d417ddf03977f0}{endpoints}}[\mbox{\hyperlink{usb__freebsd_8h_a7c677a10fd6bcca2540b2fa9651e060d}{USB\_MAX\_EP\_UNITS}}];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00214}00214 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00215}\mbox{\hyperlink{structusb__device_a692b67c34189b2795722455544596214}{00215}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__power__save}{usb\_power\_save}} \mbox{\hyperlink{structusb__device_a692b67c34189b2795722455544596214}{pwr\_save}};\textcolor{comment}{/* power save data */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00216}\mbox{\hyperlink{structusb__device_a532e474ebc2a6bfa9512e6fa1aaedf3c}{00216}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__bus}{usb\_bus}} *\mbox{\hyperlink{structusb__device_a532e474ebc2a6bfa9512e6fa1aaedf3c}{bus}};          \textcolor{comment}{/* our USB BUS */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00217}\mbox{\hyperlink{structusb__device_a60c4ce23d0bdb9afe11b3fc09b5aba8b}{00217}}         device\_t \mbox{\hyperlink{structusb__device_a60c4ce23d0bdb9afe11b3fc09b5aba8b}{parent\_dev}};          \textcolor{comment}{/* parent device */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00218}\mbox{\hyperlink{structusb__device_aa35d4d1b88f22abb34d30e9762153e0b}{00218}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structusb__device_aa35d4d1b88f22abb34d30e9762153e0b}{parent\_hub}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00219}\mbox{\hyperlink{structusb__device_a1d9147ffd9af6572cbfff03475f5a5e9}{00219}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structusb__device_a1d9147ffd9af6572cbfff03475f5a5e9}{parent\_hs\_hub}};        \textcolor{comment}{/* high-\/speed parent HUB */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00220}\mbox{\hyperlink{structusb__device_a01f45bba85920b182662484ab096f81a}{00220}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}} *\mbox{\hyperlink{structusb__device_a01f45bba85920b182662484ab096f81a}{cdesc}};  \textcolor{comment}{/* full config descr */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00221}\mbox{\hyperlink{structusb__device_a4fff6a478d5f92f73df9d6f2b34760a3}{00221}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__hub}{usb\_hub}} *\mbox{\hyperlink{structusb__device_a4fff6a478d5f92f73df9d6f2b34760a3}{hub}};          \textcolor{comment}{/* only if this is a hub */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00222}\mbox{\hyperlink{structusb__device_a36e095b2bb6c6c268025c6f4bc03500b}{00222}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *\mbox{\hyperlink{structusb__device_a36e095b2bb6c6c268025c6f4bc03500b}{ctrl\_xfer}}[\mbox{\hyperlink{usb__device_8h_a205fb6bc48d9d1b40b378031de6850ea}{USB\_CTRL\_XFER\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00223}\mbox{\hyperlink{structusb__device_a9a74f8ecdca157a157ff5ddb6dc5eb17}{00223}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__data}{usb\_temp\_data}} *\mbox{\hyperlink{structusb__device_a9a74f8ecdca157a157ff5ddb6dc5eb17}{usb\_template\_ptr}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00224}\mbox{\hyperlink{structusb__device_aa3dd5f37c1f6743a74430f8bf331edb2}{00224}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *\mbox{\hyperlink{structusb__device_aa3dd5f37c1f6743a74430f8bf331edb2}{ep\_curr}};        \textcolor{comment}{/* current clear stall endpoint */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00225}00225 \textcolor{preprocessor}{\#if USB\_HAVE\_UGEN}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00226}00226         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__fifo}{usb\_fifo}} *fifo[\mbox{\hyperlink{usb__freebsd_8h_a01b47e2cfe7534010faf22cddd4c9f9c}{USB\_FIFO\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00227}00227         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__symlink}{usb\_symlink}} *ugen\_symlink;    \textcolor{comment}{/* our generic symlink */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00228}00228         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}} *ctrl\_dev;        \textcolor{comment}{/* Control Endpoint 0 device node */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00229}00229         LIST\_HEAD(,\mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}}) pd\_list;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00230}00230         \textcolor{keywordtype}{char}    ugen\_name[20];          \textcolor{comment}{/* name of ugenX.X device */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00231}00231 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00232}\mbox{\hyperlink{structusb__device_af5d73485bb5843ec120c01a7235fba56}{00232}}         \mbox{\hyperlink{usb__freebsd_8h_a7c98df1d57db543e15395474ae9b50e2}{usb\_ticks\_t}} \mbox{\hyperlink{structusb__device_af5d73485bb5843ec120c01a7235fba56}{plugtime}};                \textcolor{comment}{/* copy of "{}ticks"{} */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00233}00233 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00234}\mbox{\hyperlink{structusb__device_a81fcb58d710319b9d1f97fb1537c0257}{00234}}         \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a46de2594e26ca8923b051993c88ccf21}{usb\_dev\_state}} \mbox{\hyperlink{structusb__device_a81fcb58d710319b9d1f97fb1537c0257}{state}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00235}\mbox{\hyperlink{structusb__device_a1fc02abd43bd33f295493ed23debd852}{00235}}         \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ff}{usb\_dev\_speed}} \mbox{\hyperlink{structusb__device_a1fc02abd43bd33f295493ed23debd852}{speed}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00236}\mbox{\hyperlink{structusb__device_a7238d3ea61c6f4f44d7e2949b238c4d2}{00236}}         uint16\_t \mbox{\hyperlink{structusb__device_a7238d3ea61c6f4f44d7e2949b238c4d2}{refcount}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00237}\mbox{\hyperlink{usb__device_8h_ad954fb4c31e612bc31976cd12407e22a}{00237}} \textcolor{preprocessor}{\#define USB\_DEV\_REF\_MAX 0xffff}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00238}00238 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00239}\mbox{\hyperlink{structusb__device_a928111b85e657beadd61437d701b2843}{00239}}         uint16\_t \mbox{\hyperlink{structusb__device_a928111b85e657beadd61437d701b2843}{power}};                    \textcolor{comment}{/* mA the device uses */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00240}\mbox{\hyperlink{structusb__device_acf755fea1cd352ed92c617145115afcd}{00240}}         uint16\_t \mbox{\hyperlink{structusb__device_acf755fea1cd352ed92c617145115afcd}{langid}};          \textcolor{comment}{/* language for strings */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00241}\mbox{\hyperlink{structusb__device_a9b6b3c63076e0f804a2c986ff375d0eb}{00241}}         uint16\_t \mbox{\hyperlink{structusb__device_a9b6b3c63076e0f804a2c986ff375d0eb}{autoQuirk}}[\mbox{\hyperlink{usb__freebsd_8h_a5da202d5c49aa38693f0e1602c94bfe0}{USB\_MAX\_AUTO\_QUIRK}}];              \textcolor{comment}{/* dynamic quirks */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00243}\mbox{\hyperlink{structusb__device_ab9873df4422a53f4fa2d7c17460b11a1}{00243}}         uint8\_t \mbox{\hyperlink{structusb__device_ab9873df4422a53f4fa2d7c17460b11a1}{address}};         \textcolor{comment}{/* device addess */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00244}\mbox{\hyperlink{structusb__device_a5671e9a7365d48bd470879e2b95ea2e5}{00244}}         uint8\_t \mbox{\hyperlink{structusb__device_a5671e9a7365d48bd470879e2b95ea2e5}{device\_index}};               \textcolor{comment}{/* device index in "{}bus-\/>devices"{} */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00245}\mbox{\hyperlink{structusb__device_a9f275ef5fb35734f8174c9b01a855973}{00245}}         uint8\_t \mbox{\hyperlink{structusb__device_a9f275ef5fb35734f8174c9b01a855973}{controller\_slot\_id}};   \textcolor{comment}{/* controller specific value */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00246}\mbox{\hyperlink{structusb__device_aa889b594842bc0095ab307df2a81fdd9}{00246}}         uint8\_t \mbox{\hyperlink{structusb__device_aa889b594842bc0095ab307df2a81fdd9}{next\_config\_index}};     \textcolor{comment}{/* used by USB\_RE\_ENUM\_SET\_CONFIG */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00247}\mbox{\hyperlink{structusb__device_a7e42ccaea5ac77b155be2a49aa4d2105}{00247}}         uint8\_t \mbox{\hyperlink{structusb__device_a7e42ccaea5ac77b155be2a49aa4d2105}{curr\_config\_index}};     \textcolor{comment}{/* current configuration index */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00248}\mbox{\hyperlink{structusb__device_a2ee59cfa6a9fe9463edb0eb1533f8757}{00248}}         uint8\_t \mbox{\hyperlink{structusb__device_a2ee59cfa6a9fe9463edb0eb1533f8757}{curr\_config\_no}};           \textcolor{comment}{/* current configuration number */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00249}\mbox{\hyperlink{structusb__device_a4235127b6b2a4b50982007e31280a9c4}{00249}}         uint8\_t \mbox{\hyperlink{structusb__device_a4235127b6b2a4b50982007e31280a9c4}{depth}};                     \textcolor{comment}{/* distance from root HUB */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00250}\mbox{\hyperlink{structusb__device_a260e4b4f7f69833bcb8267f4a80b5a5f}{00250}}         uint8\_t \mbox{\hyperlink{structusb__device_a260e4b4f7f69833bcb8267f4a80b5a5f}{port\_index}};           \textcolor{comment}{/* parent HUB port index */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00251}\mbox{\hyperlink{structusb__device_aad1b7bf74888da46b818db23b4f6adfb}{00251}}         uint8\_t \mbox{\hyperlink{structusb__device_aad1b7bf74888da46b818db23b4f6adfb}{port\_no}};         \textcolor{comment}{/* parent HUB port number */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00252}\mbox{\hyperlink{structusb__device_ae4eded55423bee40ef6eefb381b62409}{00252}}         uint8\_t \mbox{\hyperlink{structusb__device_ae4eded55423bee40ef6eefb381b62409}{hs\_hub\_addr}};         \textcolor{comment}{/* high-\/speed HUB address */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00253}\mbox{\hyperlink{structusb__device_a3820f24eaa233e432b724fd1914f34a0}{00253}}         uint8\_t \mbox{\hyperlink{structusb__device_a3820f24eaa233e432b724fd1914f34a0}{hs\_port\_no}};           \textcolor{comment}{/* high-\/speed HUB port number */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00254}\mbox{\hyperlink{structusb__device_ae316b1fd17133dccbba040a61f914c59}{00254}}         uint8\_t \mbox{\hyperlink{structusb__device_ae316b1fd17133dccbba040a61f914c59}{driver\_added\_refcount}};     \textcolor{comment}{/* our driver added generation count */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00255}\mbox{\hyperlink{structusb__device_a1127e006fe407ceb1f80c3599740c2e8}{00255}}         uint8\_t \mbox{\hyperlink{structusb__device_a1127e006fe407ceb1f80c3599740c2e8}{power\_mode}};           \textcolor{comment}{/* see USB\_POWER\_XXX */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00256}\mbox{\hyperlink{structusb__device_abaeb07090fa5f4d4a0f6658198251704}{00256}}         uint8\_t \mbox{\hyperlink{structusb__device_abaeb07090fa5f4d4a0f6658198251704}{re\_enumerate\_wait}};     \textcolor{comment}{/* set if re-\/enum. is in progress */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00257}\mbox{\hyperlink{usb__device_8h_a2e06c9c4bbcce750a03429fd4d9577b2}{00257}} \textcolor{preprocessor}{\#define USB\_RE\_ENUM\_DONE        0}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00258}\mbox{\hyperlink{usb__device_8h_a03ba15943cfbf3b3da678a1945b520d9}{00258}} \textcolor{preprocessor}{\#define USB\_RE\_ENUM\_START       1}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00259}\mbox{\hyperlink{usb__device_8h_a943c663e17ebed96409c89550deeeb5a}{00259}} \textcolor{preprocessor}{\#define USB\_RE\_ENUM\_PWR\_OFF     2}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00260}\mbox{\hyperlink{usb__device_8h_a128f027460ce10fd3e1adced6dc08336}{00260}} \textcolor{preprocessor}{\#define USB\_RE\_ENUM\_SET\_CONFIG  3}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00261}\mbox{\hyperlink{structusb__device_afdadea4311506ae8d5f3378d036b6f0b}{00261}}         uint8\_t \mbox{\hyperlink{structusb__device_afdadea4311506ae8d5f3378d036b6f0b}{ifaces\_max}};           \textcolor{comment}{/* number of interfaces present */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00262}\mbox{\hyperlink{structusb__device_ad19f7dcb7d7a3c2e1932938538a78132}{00262}}         uint8\_t \mbox{\hyperlink{structusb__device_ad19f7dcb7d7a3c2e1932938538a78132}{endpoints\_max}};             \textcolor{comment}{/* number of endpoints present */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00264}00264         \textcolor{comment}{/* the "{}flags"{} field is write-\/protected by "{}bus-\/>mtx"{} */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00265}00265 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00266}\mbox{\hyperlink{structusb__device_ae7b27fdcae02d49bee5c2f0a9130b633}{00266}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__flags}{usb\_device\_flags}} \mbox{\hyperlink{structusb__device_ae7b27fdcae02d49bee5c2f0a9130b633}{flags}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00267}00267 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00268}\mbox{\hyperlink{structusb__device_aee47847d32fc0bba304429c98097304e}{00268}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint__descriptor}{usb\_endpoint\_descriptor}} \mbox{\hyperlink{structusb__device_aee47847d32fc0bba304429c98097304e}{ctrl\_ep\_desc}}; \textcolor{comment}{/* for endpoint 0 */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00269}\mbox{\hyperlink{structusb__device_ac9aa9943282caddd067646a01f679357}{00269}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint__ss__comp__descriptor}{usb\_endpoint\_ss\_comp\_descriptor}} \mbox{\hyperlink{structusb__device_ac9aa9943282caddd067646a01f679357}{ctrl\_ep\_comp\_desc}};       \textcolor{comment}{/* for endpoint 0 */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00270}\mbox{\hyperlink{structusb__device_a6fa6ffff7bff082394d16b2b05d66cdf}{00270}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__descriptor}{usb\_device\_descriptor}} \mbox{\hyperlink{structusb__device_a6fa6ffff7bff082394d16b2b05d66cdf}{ddesc}};   \textcolor{comment}{/* device descriptor */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00271}00271 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00272}\mbox{\hyperlink{structusb__device_a94b892413786bbdacc6afdaccb30bb1e}{00272}}         \textcolor{keywordtype}{char}    *\mbox{\hyperlink{structusb__device_a94b892413786bbdacc6afdaccb30bb1e}{serial}};          \textcolor{comment}{/* serial number, can be NULL */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00273}\mbox{\hyperlink{structusb__device_ade707da1f255a977a254f6c2bdb60a0d}{00273}}         \textcolor{keywordtype}{char}    *\mbox{\hyperlink{structusb__device_ade707da1f255a977a254f6c2bdb60a0d}{manufacturer}};              \textcolor{comment}{/* manufacturer string, can be NULL */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00274}\mbox{\hyperlink{structusb__device_ae4a9cabadab5578dee7b103965072bb3}{00274}}         \textcolor{keywordtype}{char}    *\mbox{\hyperlink{structusb__device_ae4a9cabadab5578dee7b103965072bb3}{product}};                \textcolor{comment}{/* product string, can be NULL */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00275}00275 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00276}00276 \textcolor{preprocessor}{\#if USB\_HAVE\_COMPAT\_LINUX}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00277}00277         \textcolor{comment}{/* Linux compat */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00278}00278         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__descriptor}{usb\_device\_descriptor}} descriptor;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00279}00279         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__endpoint}{usb\_host\_endpoint}} ep0;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00280}00280         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *linux\_iface\_start;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00281}00281         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *linux\_iface\_end;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00282}00282         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__endpoint}{usb\_host\_endpoint}} *linux\_endpoint\_start;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00283}00283         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__host__endpoint}{usb\_host\_endpoint}} *linux\_endpoint\_end;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00284}00284         uint16\_t devnum;}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00285}00285 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00286}00286 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00287}\mbox{\hyperlink{structusb__device_a875faaddd26389202ff6f5df448ed838}{00287}}         uint32\_t \mbox{\hyperlink{structusb__device_a875faaddd26389202ff6f5df448ed838}{clear\_stall\_errors}};  \textcolor{comment}{/* number of clear-\/stall failures */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00288}00288 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00289}\mbox{\hyperlink{structusb__device_a2650f60cd06dcbafa53b19d48edbad36}{00289}}         \textcolor{keyword}{union }\mbox{\hyperlink{unionusb__device__scratch}{usb\_device\_scratch}} \mbox{\hyperlink{structusb__device_a2650f60cd06dcbafa53b19d48edbad36}{scratch}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00290}00290 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00291}00291 \textcolor{preprocessor}{\#if (USB\_HAVE\_FIXED\_CONFIG != 0)}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00292}00292         uint32\_t config\_data[(\mbox{\hyperlink{usb__freebsd_8h_adfa471013f1e16ac13596f7a715cf3cb}{USB\_CONFIG\_MAX}} + 3) / 4];}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00293}00293 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00294}00294 \};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00295}00295 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00296}00296 \textcolor{comment}{/* globals */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00297}00297 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00298}00298 \textcolor{keyword}{extern} \textcolor{keywordtype}{int} \mbox{\hyperlink{usb__device_8h_abad125eb80e79a30fa0facf0999ee45b}{usb\_template}};}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00299}00299 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00300}00300 \textcolor{comment}{/* function prototypes */}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00301}00301 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00302}00302 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{usb__device_8h_ab31a6cee6f600b6edac34cb082a30ba0}{usb\_statestr}}(\textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a46de2594e26ca8923b051993c88ccf21}{usb\_dev\_state}} state);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00303}00303 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{usb__device_8h_ac16e9870c027fc3a70c74164929768dd}{usb\_alloc\_device}}(device\_t \mbox{\hyperlink{structusb__device_a60c4ce23d0bdb9afe11b3fc09b5aba8b}{parent\_dev}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__bus}{usb\_bus}} *\mbox{\hyperlink{structusb__device_a532e474ebc2a6bfa9512e6fa1aaedf3c}{bus}},}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00304}00304                     \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structusb__device_aa35d4d1b88f22abb34d30e9762153e0b}{parent\_hub}}, uint8\_t \mbox{\hyperlink{structusb__device_a4235127b6b2a4b50982007e31280a9c4}{depth}},}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00305}00305                     uint8\_t \mbox{\hyperlink{structusb__device_a260e4b4f7f69833bcb8267f4a80b5a5f}{port\_index}}, uint8\_t \mbox{\hyperlink{structusb__device_aad1b7bf74888da46b818db23b4f6adfb}{port\_no}},}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00306}00306                     \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ff}{usb\_dev\_speed}} \mbox{\hyperlink{structusb__device_a1fc02abd43bd33f295493ed23debd852}{speed}}, \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806b}{usb\_hc\_mode}} mode);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00307}00307 \textcolor{preprocessor}{\#if USB\_HAVE\_UGEN}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00308}00308 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}} *usb\_make\_dev(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *,}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00309}00309                     \textcolor{keywordtype}{int}, \textcolor{keywordtype}{int}, \textcolor{keywordtype}{int}, uid\_t, gid\_t, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00310}00310 \textcolor{keywordtype}{void}    usb\_destroy\_dev(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00311}00311 \textcolor{keywordtype}{void}    usb\_destroy\_dev\_sync(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__fs__privdata}{usb\_fs\_privdata}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00312}00312 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00313}00313 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__device_8h_a5374feec38ebe0044bc1569bba22a8ab}{usb\_probe\_and\_attach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev,}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00314}00314                     uint8\_t iface\_index);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00315}00315 \textcolor{keywordtype}{void}            \mbox{\hyperlink{usb__device_8h_a0e4e7c346e383b71b0988dcf28c06f5e}{usb\_detach\_device}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, uint8\_t, uint8\_t);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00316}00316 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__device_8h_a76e3bc76d25eee08beff6f2a63d35f0a}{usb\_reset\_iface\_endpoints}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev,}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00317}00317                     uint8\_t iface\_index);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00318}00318 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__device_8h_a7f9c5039f20de3969212befeafd07e62}{usbd\_set\_config\_index}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, uint8\_t index);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00319}00319 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__device_8h_a40b3bab65753f776071e827d5f738505}{usbd\_set\_endpoint\_stall}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev,}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00320}00320                     \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *ep, uint8\_t do\_stall);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00321}00321 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__device_8h_a9a4ffc0724826b77d0a6ba1efe817b82}{usb\_suspend\_resume}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev,}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00322}00322                     uint8\_t do\_suspend);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00323}00323 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a5ffc706d6fb97fe235a10a464ee3806b}{usb\_devinfo}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, \textcolor{keywordtype}{char} *dst\_ptr, uint16\_t dst\_len);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00324}00324 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a1c30e7c4da6ae481a3f5c1fb8d0df462}{usb\_free\_device}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00325}\mbox{\hyperlink{usb__device_8h_a86573621a94eb7011c1c7b97c8972385}{00325}} \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a86573621a94eb7011c1c7b97c8972385}{usb\_linux\_free\_device}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *dev);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00326}00326 uint8\_t \mbox{\hyperlink{usb__device_8h_a8fd118504307f27c7c99cbcc6e516b01}{usb\_peer\_can\_wakeup}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00327}00327 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *\mbox{\hyperlink{usb__device_8h_a7a6be1633e9122c53cc879ba5e0e3093}{usb\_endpoint\_foreach}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *ep);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00328}00328 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a4933f9c1b7cde2c4453b8c3312d882de}{usb\_set\_device\_state}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a46de2594e26ca8923b051993c88ccf21}{usb\_dev\_state}});}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00329}00329 \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a46de2594e26ca8923b051993c88ccf21}{usb\_dev\_state}} \mbox{\hyperlink{usb__device_8h_aba39bd19fb734ba5cb7f3a5e9b1a351b}{usb\_get\_device\_state}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00330}00330 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00331}00331 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a3a8e98f65ee039e48bbd2e4bcd30c723}{usb\_set\_device\_strings}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00332}00332 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a74401f5c7cb14745ce0a734e53cd9ae9}{usb\_get\_langid}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00333}00333 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00334}00334 uint8\_t \mbox{\hyperlink{usb__device_8h_ac1dbf35cb06aff306a6cbc55bf142129}{usbd\_enum\_lock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00335}00335 \textcolor{preprocessor}{\#if USB\_HAVE\_UGEN}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00336}00336 uint8\_t usbd\_enum\_lock\_sig(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00337}00337 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00338}00338 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a362cf2256580f26e3573aeda45ba09da}{usbd\_enum\_unlock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00339}00339 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a421e7a0ae34db19d4f472352621f1c1a}{usbd\_sr\_lock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00340}00340 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_ab66d1883e46339b494a64264ef613a78}{usbd\_sr\_unlock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00341}00341 uint8\_t \mbox{\hyperlink{usb__device_8h_a1e6dd0a0fac9d5bb1cf7fb1c611280b6}{usbd\_ctrl\_lock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00342}00342 \textcolor{keywordtype}{void}    \mbox{\hyperlink{usb__device_8h_a2483bf9307dc318ff2fb253645c8ae32}{usbd\_ctrl\_unlock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00343}00343 uint8\_t \mbox{\hyperlink{usb__device_8h_af500649496c510db6978a80e52b6f359}{usbd\_enum\_is\_locked}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00344}00344 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00345}00345 \textcolor{preprocessor}{\#if USB\_HAVE\_TT\_SUPPORT}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00346}00346 \textcolor{keywordtype}{void}    uhub\_tt\_buffer\_reset\_async\_locked(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__endpoint}{usb\_endpoint}} *);}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00347}00347 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00349}00349 uint8\_t \mbox{\hyperlink{usb__device_8h_a1c2435626820f3fb7bf92cf38a60962b}{uhub\_count\_active\_host\_ports}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keyword}{enum} \mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ff}{usb\_dev\_speed}});}
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00350}00350 }
\DoxyCodeLine{\Hypertarget{usb__device_8h_source_l00351}00351 \textcolor{preprocessor}{\#endif                                  }\textcolor{comment}{/* \_USB\_DEVICE\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
