\hypertarget{uhso_8c_source}{}\doxysection{uhso.\+c}
\label{uhso_8c_source}\index{dev/usb/net/uhso.c@{dev/usb/net/uhso.c}}
\mbox{\hyperlink{uhso_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2010 Fredrik Lindberg <fli@shapeshifter.se>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00005}00005 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00017}00017 \textcolor{comment}{ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00018}00018 \textcolor{comment}{ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00019}00019 \textcolor{comment}{ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00020}00020 \textcolor{comment}{ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00021}00021 \textcolor{comment}{ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00022}00022 \textcolor{comment}{ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00023}00023 \textcolor{comment}{ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00024}00024 \textcolor{comment}{ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00025}00025 \textcolor{comment}{ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00026}00026 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00027}00027 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00028}00028 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00029}\mbox{\hyperlink{uhso_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00029}} \mbox{\hyperlink{uhso_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00031}00031 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00032}00032 \textcolor{preprocessor}{\#include <sys/eventhandler.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00033}00033 \textcolor{preprocessor}{\#include <sys/sockio.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00034}00034 \textcolor{preprocessor}{\#include <sys/mbuf.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/socket.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/tty.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/proc.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/conf.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/limits.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00048}00048 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <machine/bus.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <net/if.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <net/if\_var.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <net/if\_types.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <net/netisr.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <net/bpf.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <netinet/in.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <netinet/ip.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <netinet/ip6.h>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi__util_8h}{dev/usb/usbdi\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__cdc_8h}{dev/usb/usb\_cdc.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00064}00064 \textcolor{preprocessor}{\#include "{}usbdevs.h"{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00065}\mbox{\hyperlink{uhso_8c_a927dd6f59caf10a2991dfb564bcbb1e1}{00065}} \textcolor{preprocessor}{\#define USB\_DEBUG\_VAR uhso\_debug}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00066}00066 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__debug_8h}{dev/usb/usb\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__process_8h}{dev/usb/usb\_process.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00068}00068 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__busdma_8h}{dev/usb/usb\_busdma.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__msctest_8h}{dev/usb/usb\_msctest.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00071}00071 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__serial_8h}{dev/usb/serial/usb\_serial.h}}>}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00073}\mbox{\hyperlink{structuhso__tty}{00073}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__tty}{uhso\_tty}} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00074}\mbox{\hyperlink{structuhso__tty_aa9e331f72dcdfbee580ef21fa06ab7ca}{00074}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *\mbox{\hyperlink{structuhso__tty_aa9e331f72dcdfbee580ef21fa06ab7ca}{ht\_sc}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00075}\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{00075}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[3];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00076}\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{00076}}         \textcolor{keywordtype}{int}             \mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}}; \textcolor{comment}{/* Mux. port no */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00077}\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{00077}}         \textcolor{keywordtype}{int}             \mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00078}\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{00078}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}}[32];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00079}00079 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00080}00080 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00081}\mbox{\hyperlink{structuhso__softc}{00081}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00082}\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{00082}}         device\_t                \mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00083}\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{00083}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}}     *\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00084}\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{00084}}         \textcolor{keyword}{struct }mtx              \mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00085}\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{00085}}         uint32\_t                \mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}; \textcolor{comment}{/* Interface definition */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00086}\mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{00086}}         \textcolor{keywordtype}{int}                     \mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{sc\_radio}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00088}\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{00088}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}}         *\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[3];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00089}\mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{00089}}         uint8\_t                 \mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{sc\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00090}\mbox{\hyperlink{structuhso__softc_a08415bdde15a3ba7d5fd3a7a731e0ebd}{00090}}         uint8\_t                 \mbox{\hyperlink{structuhso__softc_a08415bdde15a3ba7d5fd3a7a731e0ebd}{sc\_iface\_index}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00092}00092         \textcolor{comment}{/* Control pipe */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00093}\mbox{\hyperlink{structuhso__softc_a53f9e7056226c5c4a60311379b80c65f}{00093}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *       \mbox{\hyperlink{structuhso__softc_a53f9e7056226c5c4a60311379b80c65f}{sc\_ctrl\_xfer}}[2];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00094}\mbox{\hyperlink{structuhso__softc_a1ac0fd24cdfa9c67e0d731a63af2bde5}{00094}}         uint8\_t                 \mbox{\hyperlink{structuhso__softc_a1ac0fd24cdfa9c67e0d731a63af2bde5}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00096}00096         \textcolor{comment}{/* Network */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00097}\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{00097}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}}         *\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}[2];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00098}\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{00098}}         \textcolor{keyword}{struct }ifnet            *\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00099}\mbox{\hyperlink{structuhso__softc_ab6978d5ba943c353cf2311cea3fe4bfc}{00099}}         \textcolor{keyword}{struct }mbuf             *\mbox{\hyperlink{structuhso__softc_ab6978d5ba943c353cf2311cea3fe4bfc}{sc\_mwait}};      \textcolor{comment}{/* Partial packet */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00100}\mbox{\hyperlink{structuhso__softc_ad4ab8c829d0c537763ba2f3fc8c73582}{00100}}         \textcolor{keywordtype}{size\_t}                  \mbox{\hyperlink{structuhso__softc_ad4ab8c829d0c537763ba2f3fc8c73582}{sc\_waitlen}};   \textcolor{comment}{/* No. of outstanding bytes */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00101}\mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{00101}}         \textcolor{keyword}{struct }mbufq            \mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{sc\_rxq}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00102}\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{00102}}         \textcolor{keyword}{struct }callout          \mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00103}00103 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00104}00104         \textcolor{comment}{/* TTY related structures */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00105}\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{00105}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__super__softc}{ucom\_super\_softc}} \mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00106}\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{00106}}         \textcolor{keywordtype}{int}                     \mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00107}\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{00107}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__tty}{uhso\_tty}}         *\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00108}\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{00108}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__softc}{ucom\_softc}}     *\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00109}\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{00109}}         \textcolor{keywordtype}{int}                     \mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00110}\mbox{\hyperlink{structuhso__softc_ac895fbc3f5aaa46fcf1881e6b0b27e4c}{00110}}         \textcolor{keywordtype}{int}                     \mbox{\hyperlink{structuhso__softc_ac895fbc3f5aaa46fcf1881e6b0b27e4c}{sc\_lsr}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00111}\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{00111}}         \textcolor{keywordtype}{int}                     \mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00112}00112 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00113}00113 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00114}\mbox{\hyperlink{uhso_8c_ac2db13fef335e9eeaa7d2f9e46f6911d}{00114}} \textcolor{preprocessor}{\#define UHSO\_MAX\_MTU            2048}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00115}00115 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00116}00116 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00117}00117 \textcolor{comment}{ * There are mainly two type of cards floating around.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00118}00118 \textcolor{comment}{ * The first one has 2,3 or 4 interfaces with a multiplexed serial port}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00119}00119 \textcolor{comment}{ * and packet interface on the first interface and bulk serial ports}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00120}00120 \textcolor{comment}{ * on the others.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00121}00121 \textcolor{comment}{ * The second type of card has several other interfaces, their purpose}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00122}00122 \textcolor{comment}{ * can be detected during run-\/time.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00123}00123 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00124}\mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{00124}} \textcolor{preprocessor}{\#define UHSO\_IFACE\_SPEC(usb\_type, port, port\_type) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00125}00125 \textcolor{preprocessor}{        (((usb\_type) << 24) | ((port) << 16) | (port\_type))}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00126}00126 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00127}\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{00127}} \textcolor{preprocessor}{\#define UHSO\_IFACE\_USB\_TYPE(x) ((x >> 24) \& 0xff)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00128}\mbox{\hyperlink{uhso_8c_af3cb0100ca89d8378acace829ebb730c}{00128}} \textcolor{preprocessor}{\#define UHSO\_IFACE\_PORT(x) ((x >> 16) \& 0xff)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00129}\mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{00129}} \textcolor{preprocessor}{\#define UHSO\_IFACE\_PORT\_TYPE(x) (x \& 0xff)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00130}00130 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00131}00131 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00132}00132 \textcolor{comment}{ * USB interface types}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00133}00133 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00134}\mbox{\hyperlink{uhso_8c_ad2f06d2173a93828b9b1b8a867e94ebb}{00134}} \textcolor{preprocessor}{\#define UHSO\_IF\_NET             0x01    }\textcolor{comment}{/* Network packet interface */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00135}\mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{00135}} \textcolor{preprocessor}{\#define UHSO\_IF\_MUX             0x02    }\textcolor{comment}{/* Multiplexed serial port */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00136}\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{00136}} \textcolor{preprocessor}{\#define UHSO\_IF\_BULK            0x04    }\textcolor{comment}{/* Bulk interface */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00137}00137 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00138}00138 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00139}00139 \textcolor{comment}{ * Port types}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00140}00140 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00141}\mbox{\hyperlink{uhso_8c_ae40a32af9f37b8703b30338a1b5aa6b2}{00141}} \textcolor{preprocessor}{\#define UHSO\_PORT\_UNKNOWN       0x00}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00142}\mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{00142}} \textcolor{preprocessor}{\#define UHSO\_PORT\_SERIAL        0x01    }\textcolor{comment}{/* Serial port */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00143}\mbox{\hyperlink{uhso_8c_a9ecd69e605cdddf4f7653a63219c6c0b}{00143}} \textcolor{preprocessor}{\#define UHSO\_PORT\_NETWORK       0x02    }\textcolor{comment}{/* Network packet interface */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00144}00144 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00145}00145 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00146}00146 \textcolor{comment}{ * Multiplexed serial port destination sub-\/port names}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00147}00147 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00148}\mbox{\hyperlink{uhso_8c_a4dbea137f65e3b1a5162d42951456f51}{00148}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_CTL     0x00    }\textcolor{comment}{/* Control port */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00149}\mbox{\hyperlink{uhso_8c_a980778c747a84f591d96e3260272126d}{00149}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_APP     0x01    }\textcolor{comment}{/* Application */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00150}\mbox{\hyperlink{uhso_8c_a5c4a2bbadd87db41ced84a93f7b228a2}{00150}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_PCSC    0x02}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00151}\mbox{\hyperlink{uhso_8c_a8574017b6a145470d4f6ae017c6dbb68}{00151}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_GPS     0x03}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00152}\mbox{\hyperlink{uhso_8c_a6b5957af5f9b03417cd47f216e8f105f}{00152}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_APP2    0x04    }\textcolor{comment}{/* Secondary application */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00153}\mbox{\hyperlink{uhso_8c_a6747ea2c1238570aa334df3561ff1bd0}{00153}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_MAX     UHSO\_MPORT\_TYPE\_APP2}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00154}\mbox{\hyperlink{uhso_8c_a8c3d2c93add7419f6f9171f025dfd05d}{00154}} \textcolor{preprocessor}{\#define UHSO\_MPORT\_TYPE\_NOMAX   8       }\textcolor{comment}{/* Max number of mux ports */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00155}00155 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00156}00156 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00157}00157 \textcolor{comment}{ * Port definitions}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00158}00158 \textcolor{comment}{ * Note that these definitions are arbitrary and do not match the values}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00159}00159 \textcolor{comment}{ * returned by the auto config descriptor.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00160}00160 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00161}\mbox{\hyperlink{uhso_8c_a72dd6cbbf1ea9d73dd4c8720051c571e}{00161}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_UNKNOWN  0x00}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00162}\mbox{\hyperlink{uhso_8c_ab7f5c7385a41b25c2997dd3c3dab051e}{00162}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_CTL      0x01}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00163}\mbox{\hyperlink{uhso_8c_afc46e4604d58e95f372b7cdce02b1140}{00163}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_APP      0x02}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00164}\mbox{\hyperlink{uhso_8c_a53b323e027ea26649b5f66b1bca5b737}{00164}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_APP2     0x03}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00165}\mbox{\hyperlink{uhso_8c_a2deec1670cf2592dd58af84b91919d6f}{00165}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_MODEM    0x04}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00166}\mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{00166}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_NETWORK  0x05}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00167}\mbox{\hyperlink{uhso_8c_a98d2281fa0f1e017ed771c5173f2f614}{00167}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_DIAG     0x06}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00168}\mbox{\hyperlink{uhso_8c_af07b09dfac1215f8509b9bce7c7a0749}{00168}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_DIAG2    0x07}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00169}\mbox{\hyperlink{uhso_8c_ac8dbb921912e3fe4e44ff739855b1d44}{00169}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_GPS      0x08}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00170}\mbox{\hyperlink{uhso_8c_a99ff842e7153d5c3cf23caa8ec65b5b2}{00170}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_GPSCTL   0x09}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00171}\mbox{\hyperlink{uhso_8c_ab62ac23d292a6877fbd97176cb79839e}{00171}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_PCSC     0x0a}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00172}\mbox{\hyperlink{uhso_8c_a5bbfa871b6ca892e76b79fd03a1a7c1f}{00172}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_MSD      0x0b}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00173}\mbox{\hyperlink{uhso_8c_a5af8f66aaba8f89db7270d88f4599df2}{00173}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_VOICE    0x0c}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00174}\mbox{\hyperlink{uhso_8c_abac7acdea26f5fbed2e88518ecf424c6}{00174}} \textcolor{preprocessor}{\#define UHSO\_PORT\_TYPE\_MAX      0x0c}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00176}\mbox{\hyperlink{uhso_8c_a4920c711e119a0df31b717011948a63d}{00176}} \textcolor{keyword}{static} eventhandler\_tag \mbox{\hyperlink{uhso_8c_a4920c711e119a0df31b717011948a63d}{uhso\_etag}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00177}00177 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00178}00178 \textcolor{comment}{/* Overall port type */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00179}\mbox{\hyperlink{uhso_8c_ab838b65d1f0a0b48861468599badc6fc}{00179}} \textcolor{keyword}{static} \textcolor{keywordtype}{char} *\mbox{\hyperlink{uhso_8c_ab838b65d1f0a0b48861468599badc6fc}{uhso\_port}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00180}00180         \textcolor{stringliteral}{"{}Unknown"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00181}00181         \textcolor{stringliteral}{"{}Serial"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00182}00182         \textcolor{stringliteral}{"{}Network"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00183}00183         \textcolor{stringliteral}{"{}Network/Serial"{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00184}00184 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00185}00185 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00186}00186 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00187}00187 \textcolor{comment}{ * Map between interface port type read from device and description type.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00188}00188 \textcolor{comment}{ * The position in this array is a direct map to the auto config}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00189}00189 \textcolor{comment}{ * descriptor values.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00190}00190 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00191}\mbox{\hyperlink{uhso_8c_a148728002b161523ee33c12f60f0b150}{00191}} \textcolor{keyword}{static} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \mbox{\hyperlink{uhso_8c_a148728002b161523ee33c12f60f0b150}{uhso\_port\_map}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00192}00192         \mbox{\hyperlink{uhso_8c_a72dd6cbbf1ea9d73dd4c8720051c571e}{UHSO\_PORT\_TYPE\_UNKNOWN}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00193}00193         \mbox{\hyperlink{uhso_8c_a98d2281fa0f1e017ed771c5173f2f614}{UHSO\_PORT\_TYPE\_DIAG}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00194}00194         \mbox{\hyperlink{uhso_8c_ac8dbb921912e3fe4e44ff739855b1d44}{UHSO\_PORT\_TYPE\_GPS}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00195}00195         \mbox{\hyperlink{uhso_8c_a99ff842e7153d5c3cf23caa8ec65b5b2}{UHSO\_PORT\_TYPE\_GPSCTL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00196}00196         \mbox{\hyperlink{uhso_8c_afc46e4604d58e95f372b7cdce02b1140}{UHSO\_PORT\_TYPE\_APP}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00197}00197         \mbox{\hyperlink{uhso_8c_a53b323e027ea26649b5f66b1bca5b737}{UHSO\_PORT\_TYPE\_APP2}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00198}00198         \mbox{\hyperlink{uhso_8c_ab7f5c7385a41b25c2997dd3c3dab051e}{UHSO\_PORT\_TYPE\_CTL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00199}00199         \mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{UHSO\_PORT\_TYPE\_NETWORK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00200}00200         \mbox{\hyperlink{uhso_8c_a2deec1670cf2592dd58af84b91919d6f}{UHSO\_PORT\_TYPE\_MODEM}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00201}00201         \mbox{\hyperlink{uhso_8c_a5bbfa871b6ca892e76b79fd03a1a7c1f}{UHSO\_PORT\_TYPE\_MSD}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00202}00202         \mbox{\hyperlink{uhso_8c_ab62ac23d292a6877fbd97176cb79839e}{UHSO\_PORT\_TYPE\_PCSC}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00203}00203         \mbox{\hyperlink{uhso_8c_a5af8f66aaba8f89db7270d88f4599df2}{UHSO\_PORT\_TYPE\_VOICE}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00204}00204 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00205}\mbox{\hyperlink{uhso_8c_a23cb509f3f40601de84eb63cae82c05b}{00205}} \textcolor{keyword}{static} \textcolor{keywordtype}{char} \mbox{\hyperlink{uhso_8c_a23cb509f3f40601de84eb63cae82c05b}{uhso\_port\_map\_max}} = \textcolor{keyword}{sizeof}(\mbox{\hyperlink{uhso_8c_a148728002b161523ee33c12f60f0b150}{uhso\_port\_map}}) / \textcolor{keyword}{sizeof}(\textcolor{keywordtype}{char});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00206}00206 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00207}\mbox{\hyperlink{uhso_8c_aee48bfe2b3c72fea8605b8eecaf66175}{00207}} \textcolor{keyword}{static} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \mbox{\hyperlink{uhso_8c_aee48bfe2b3c72fea8605b8eecaf66175}{uhso\_mux\_port\_map}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00208}00208         \mbox{\hyperlink{uhso_8c_ab7f5c7385a41b25c2997dd3c3dab051e}{UHSO\_PORT\_TYPE\_CTL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00209}00209         \mbox{\hyperlink{uhso_8c_afc46e4604d58e95f372b7cdce02b1140}{UHSO\_PORT\_TYPE\_APP}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00210}00210         \mbox{\hyperlink{uhso_8c_ab62ac23d292a6877fbd97176cb79839e}{UHSO\_PORT\_TYPE\_PCSC}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00211}00211         \mbox{\hyperlink{uhso_8c_ac8dbb921912e3fe4e44ff739855b1d44}{UHSO\_PORT\_TYPE\_GPS}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00212}00212         \mbox{\hyperlink{uhso_8c_a53b323e027ea26649b5f66b1bca5b737}{UHSO\_PORT\_TYPE\_APP2}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00213}00213 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00214}00214 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00215}\mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{00215}} \textcolor{keyword}{static} \textcolor{keywordtype}{char} *\mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{uhso\_port\_type}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00216}00216         \textcolor{stringliteral}{"{}Unknown"{}},  \textcolor{comment}{/* Not a valid port */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00217}00217         \textcolor{stringliteral}{"{}Control"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00218}00218         \textcolor{stringliteral}{"{}Application"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00219}00219         \textcolor{stringliteral}{"{}Application (Secondary)"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00220}00220         \textcolor{stringliteral}{"{}Modem"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00221}00221         \textcolor{stringliteral}{"{}Network"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00222}00222         \textcolor{stringliteral}{"{}Diagnostic"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00223}00223         \textcolor{stringliteral}{"{}Diagnostic (Secondary)"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00224}00224         \textcolor{stringliteral}{"{}GPS"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00225}00225         \textcolor{stringliteral}{"{}GPS Control"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00226}00226         \textcolor{stringliteral}{"{}PC Smartcard"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00227}00227         \textcolor{stringliteral}{"{}MSD"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00228}00228         \textcolor{stringliteral}{"{}Voice"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00229}00229 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00231}\mbox{\hyperlink{uhso_8c_a13f5a751f83d642f905eaf12954b7a2b}{00231}} \textcolor{keyword}{static} \textcolor{keywordtype}{char} *\mbox{\hyperlink{uhso_8c_a13f5a751f83d642f905eaf12954b7a2b}{uhso\_port\_type\_sysctl}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00232}00232         \textcolor{stringliteral}{"{}unknown"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00233}00233         \textcolor{stringliteral}{"{}control"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00234}00234         \textcolor{stringliteral}{"{}application"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00235}00235         \textcolor{stringliteral}{"{}application"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00236}00236         \textcolor{stringliteral}{"{}modem"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00237}00237         \textcolor{stringliteral}{"{}network"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00238}00238         \textcolor{stringliteral}{"{}diagnostic"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00239}00239         \textcolor{stringliteral}{"{}diagnostic"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00240}00240         \textcolor{stringliteral}{"{}gps"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00241}00241         \textcolor{stringliteral}{"{}gps\_control"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00242}00242         \textcolor{stringliteral}{"{}pcsc"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00243}00243         \textcolor{stringliteral}{"{}msd"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00244}00244         \textcolor{stringliteral}{"{}voice"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00245}00245 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00246}00246 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00247}\mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{00247}} \textcolor{preprocessor}{\#define UHSO\_STATIC\_IFACE       0x01}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00248}\mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{00248}} \textcolor{preprocessor}{\#define UHSO\_AUTO\_IFACE         0x02}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00250}00250 \textcolor{comment}{/* ifnet device unit allocations */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00251}\mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{00251}} \textcolor{keyword}{static} \textcolor{keyword}{struct }unrhdr *\mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{uhso\_ifnet\_unit}} = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00252}00252 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00253}\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{00253}} \textcolor{keyword}{static} \textcolor{keyword}{const} \mbox{\hyperlink{usbdi_8h_acf836fd8d6349b66a31f45420728da8d}{STRUCT\_USB\_HOST\_ID}} \mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00254}00254 \textcolor{preprocessor}{\#define UHSO\_DEV(v,p,i) \{ USB\_VPI(USB\_VENDOR\_\#\#v, USB\_PRODUCT\_\#\#v\#\#\_\#\#p, i) \}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00255}00255         \textcolor{comment}{/* Option GlobeTrotter MAX 7.2 with upgraded firmware */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00256}00256         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GTMAX72, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00257}00257         \textcolor{comment}{/* Option GlobeSurfer iCON 7.2 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00258}00258         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GSICON72, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00259}00259         \textcolor{comment}{/* Option iCON 225 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00260}00260         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GTHSDPA, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00261}00261         \textcolor{comment}{/* Option GlobeSurfer iCON HSUPA */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00262}00262         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GSICONHSUPA, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00263}00263         \textcolor{comment}{/* Option GlobeTrotter HSUPA */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00264}00264         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GTHSUPA, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00265}00265         \textcolor{comment}{/* GE40x */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00266}00266         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GE40X, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00267}00267         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GE40X\_1, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00268}00268         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GE40X\_2, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00269}00269         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GE40X\_3, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00270}00270         \textcolor{comment}{/* Option GlobeSurfer iCON 401 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00271}00271         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, ICON401, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00272}00272         \textcolor{comment}{/* Option GlobeTrotter Module 382 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00273}00273         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GMT382, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00274}00274         \textcolor{comment}{/* Option GTM661W */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00275}00275         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GTM661W, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00276}00276         \textcolor{comment}{/* Option iCON EDGE */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00277}00277         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, ICONEDGE, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00278}00278         \textcolor{comment}{/* Option Module HSxPA */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00279}00279         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, MODHSXPA, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00280}00280         \textcolor{comment}{/* Option iCON 321 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00281}00281         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, ICON321, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00282}00282         \textcolor{comment}{/* Option iCON 322 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00283}00283         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, GTICON322, \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00284}00284         \textcolor{comment}{/* Option iCON 505 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00285}00285         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, ICON505, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00286}00286         \textcolor{comment}{/* Option iCON 452 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00287}00287         \mbox{\hyperlink{uhso_8c_ab1daf1f9f61ef4c977d769af1891edd1}{UHSO\_DEV}}(OPTION, ICON505, \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00288}00288 \textcolor{preprocessor}{\#undef UHSO\_DEV}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00289}00289 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00290}00290 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00291}\mbox{\hyperlink{uhso_8c_a0fcad23e77ca567dddc15e3f8406abc8}{00291}} \textcolor{keyword}{static} \mbox{\hyperlink{uhso_8c_a0fcad23e77ca567dddc15e3f8406abc8}{SYSCTL\_NODE}}(\_hw\_usb, OID\_AUTO, uhso, CTLFLAG\_RW | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00292}00292     \textcolor{stringliteral}{"{}USB uhso"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00293}\mbox{\hyperlink{uhso_8c_a453712548c03aba27248e8d2cf1ab25f}{00293}} \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{uhso_8c_a453712548c03aba27248e8d2cf1ab25f}{uhso\_autoswitch}} = 1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00294}\mbox{\hyperlink{uhso_8c_ac1e4f67864428a00fc9cce0bac0b144b}{00294}} \mbox{\hyperlink{uhso_8c_ac1e4f67864428a00fc9cce0bac0b144b}{SYSCTL\_INT}}(\_hw\_usb\_uhso, OID\_AUTO, auto\_switch, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00295}00295     \&\mbox{\hyperlink{uhso_8c_a453712548c03aba27248e8d2cf1ab25f}{uhso\_autoswitch}}, 0, \textcolor{stringliteral}{"{}Automatically switch to modem mode"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00296}00296 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00297}00297 \textcolor{preprocessor}{\#ifdef USB\_DEBUG}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00298}00298 \textcolor{preprocessor}{\#ifdef UHSO\_DEBUG}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00299}00299 \textcolor{keyword}{static} \textcolor{keywordtype}{int} uhso\_debug = UHSO\_DEBUG;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00300}00300 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00301}00301 \textcolor{keyword}{static} \textcolor{keywordtype}{int} uhso\_debug = -\/1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00302}00302 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00303}00303 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00304}00304 \mbox{\hyperlink{uhso_8c_ac1e4f67864428a00fc9cce0bac0b144b}{SYSCTL\_INT}}(\_hw\_usb\_uhso, OID\_AUTO, \mbox{\hyperlink{cfumass_8c_ac3e1795766a80ec63b157951b4b9a7d4}{debug}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00305}00305     \&uhso\_debug, 0, \textcolor{stringliteral}{"{}Debug level"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00306}00306 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00307}00307 \textcolor{preprocessor}{\#define UHSO\_DPRINTF(n, x, ...) \{\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00308}00308 \textcolor{preprocessor}{        if (uhso\_debug >= n) \{\(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00309}00309 \textcolor{preprocessor}{                printf("{}\%s: "{}} x, \_\_func\_\_, \#\#\_\_VA\_ARGS\_\_);\(\backslash\)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00310}00310         \}\(\backslash\)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00311}00311 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00312}00312 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00313}\mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{00313}} \textcolor{preprocessor}{\#define UHSO\_DPRINTF(n, x, ...)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00314}00314 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00315}00315 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00316}00316 \textcolor{preprocessor}{\#ifdef UHSO\_DEBUG\_HEXDUMP}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00317}00317 \textcolor{preprocessor}{\# define UHSO\_HEXDUMP(\_buf, \_len) do \{ \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00318}00318 \textcolor{preprocessor}{  \{ \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00319}00319 \textcolor{preprocessor}{        size\_t \_\_tmp; \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00320}00320 \textcolor{preprocessor}{        const char *\_\_buf = (const char *)\_buf; \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00321}00321 \textcolor{preprocessor}{        for (\_\_tmp = 0; \_\_tmp < \_len; \_\_tmp++) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00322}00322 \textcolor{preprocessor}{                printf("{}\%02hhx "{}}, *\_\_buf++); \(\backslash\)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00323}00323     printf("{}\(\backslash\)n"{}); \(\backslash\)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00324}00324   \} \(\backslash\)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00325}00325 \} while(0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00326}00326 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00327}\mbox{\hyperlink{uhso_8c_a5fa860c43886be360ebdfded17d01ccd}{00327}} \textcolor{preprocessor}{\# define UHSO\_HEXDUMP(\_buf, \_len)}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00328}00328 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00329}00329 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00330}00330 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00331}\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{00331}}         \mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}} = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00332}00332         \mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55a48697e9edc88048c096bdf8a75c88ec5}{UHSO\_MUX\_ENDPT\_MAX}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00333}\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55a48697e9edc88048c096bdf8a75c88ec5}{00333}} \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00334}00334 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00335}00335 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00336}\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{00336}}         \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{UHSO\_CTRL\_READ}} = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00337}\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{00337}}         \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{UHSO\_CTRL\_WRITE}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00338}00338         \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00339}\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{00339}} \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00340}00340 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00341}00341 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00342}\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87edda19df6ee557b39f07fdd06929a16b44d5}{00342}}         \mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87edda19df6ee557b39f07fdd06929a16b44d5}{UHSO\_IFNET\_READ}} = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00343}\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddaafe46fd1952cbc58cc5ee6315cf92004}{00343}}         \mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddaafe46fd1952cbc58cc5ee6315cf92004}{UHSO\_IFNET\_WRITE}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00344}00344         \mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddad585baa86068f4f5cedf9e0ca010f340}{UHSO\_IFNET\_MAX}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00345}\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddad585baa86068f4f5cedf9e0ca010f340}{00345}} \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00346}00346 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00347}00347 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00348}\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77dab2ab8c98e77cba966c61f3fb838878c8}{00348}}         \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77dab2ab8c98e77cba966c61f3fb838878c8}{UHSO\_BULK\_ENDPT\_READ}} = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00349}\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da2112b0269f48830dfe0576210587a756}{00349}}         \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da2112b0269f48830dfe0576210587a756}{UHSO\_BULK\_ENDPT\_WRITE}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00350}\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{00350}}         \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00351}00351         \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{UHSO\_BULK\_ENDPT\_MAX}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00352}\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{00352}} \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00354}\mbox{\hyperlink{uhso_8c_a3e86cf726a739ba283db9bf0c0aae037}{00354}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a3e86cf726a739ba283db9bf0c0aae037}{uhso\_mux\_intr\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00355}\mbox{\hyperlink{uhso_8c_a22b8332b222b7127e485a4ce297bea60}{00355}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a22b8332b222b7127e485a4ce297bea60}{uhso\_mux\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00356}\mbox{\hyperlink{uhso_8c_a2db44db12e1d6a59df7fff449cffe21c}{00356}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a2db44db12e1d6a59df7fff449cffe21c}{uhso\_mux\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00357}\mbox{\hyperlink{uhso_8c_a643e82afc69b71ed2424285dc3bada28}{00357}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a643e82afc69b71ed2424285dc3bada28}{uhso\_bs\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00358}\mbox{\hyperlink{uhso_8c_a8c424f484a5b13fe45f0b149b2b24c88}{00358}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a8c424f484a5b13fe45f0b149b2b24c88}{uhso\_bs\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00359}\mbox{\hyperlink{uhso_8c_a857f2d377a3fa7c727c4b007a5e0a0e6}{00359}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a857f2d377a3fa7c727c4b007a5e0a0e6}{uhso\_bs\_intr\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00360}\mbox{\hyperlink{uhso_8c_a98d8c93787f6e80004b62388db5e8522}{00360}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_a98d8c93787f6e80004b62388db5e8522}{uhso\_ifnet\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00361}\mbox{\hyperlink{uhso_8c_af23428d9c4e47e13aacdec14b34910e9}{00361}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uhso_8c_af23428d9c4e47e13aacdec14b34910e9}{uhso\_ifnet\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00362}00362 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00363}00363 \textcolor{comment}{/* Config used for the default control pipes */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00364}\mbox{\hyperlink{uhso_8c_a83ead8de6b85b1aff017f5ed54b29841}{00364}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{uhso_8c_a83ead8de6b85b1aff017f5ed54b29841}{uhso\_ctrl\_config}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00365}00365         [\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{UHSO\_CTRL\_READ}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00366}00366                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_ace49b7adb24ebcb0a0b17110c26aa63a}{UE\_CONTROL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00367}00367                 .endpoint = 0x00,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00368}00368                 .direction = \mbox{\hyperlink{usb_8h_a0b305068483ac39f5d34f848bcb95c11}{UE\_DIR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00369}00369                 .flags = \{ .pipe\_bof = 1, .short\_xfer\_ok = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00370}00370                 .bufsize = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}}) + 1024,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00371}00371                 .callback = \&\mbox{\hyperlink{uhso_8c_a22b8332b222b7127e485a4ce297bea60}{uhso\_mux\_read\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00372}00372         \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00373}00373 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00374}00374         [\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{UHSO\_CTRL\_WRITE}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00375}00375                 .type = \mbox{\hyperlink{usb_8h_ace49b7adb24ebcb0a0b17110c26aa63a}{UE\_CONTROL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00376}00376                 .endpoint = 0x00,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00377}00377                 .direction = \mbox{\hyperlink{usb_8h_a0b305068483ac39f5d34f848bcb95c11}{UE\_DIR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00378}00378                 .flags = \{ .pipe\_bof = 1, .force\_short\_xfer = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00379}00379                 .bufsize = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}}) + 1024,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00380}00380                 .timeout = 1000,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00381}00381                 .callback = \&\mbox{\hyperlink{uhso_8c_a2db44db12e1d6a59df7fff449cffe21c}{uhso\_mux\_write\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00382}00382         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00383}00383 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00385}00385 \textcolor{comment}{/* Config for the multiplexed serial ports */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00386}\mbox{\hyperlink{uhso_8c_a507812a9518b66c20c576ca80e927591}{00386}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{uhso_8c_a507812a9518b66c20c576ca80e927591}{uhso\_mux\_config}}[\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55a48697e9edc88048c096bdf8a75c88ec5}{UHSO\_MUX\_ENDPT\_MAX}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00387}00387         [\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00388}00388                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00389}00389                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00390}00390                 .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00391}00391                 .flags = \{ .short\_xfer\_ok = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00392}00392                 .bufsize = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00393}00393                 .callback = \&\mbox{\hyperlink{uhso_8c_a3e86cf726a739ba283db9bf0c0aae037}{uhso\_mux\_intr\_callback}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00394}00394         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00395}00395 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00396}00396 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00397}00397 \textcolor{comment}{/* Config for the raw IP-\/packet interface */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00398}\mbox{\hyperlink{uhso_8c_a1dc79dae89fb5a1559af09a21d8c1536}{00398}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{uhso_8c_a1dc79dae89fb5a1559af09a21d8c1536}{uhso\_ifnet\_config}}[\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddad585baa86068f4f5cedf9e0ca010f340}{UHSO\_IFNET\_MAX}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00399}00399         [\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87edda19df6ee557b39f07fdd06929a16b44d5}{UHSO\_IFNET\_READ}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00400}00400                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00401}00401                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00402}00402                 .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00403}00403                 .flags = \{ .pipe\_bof = 1, .short\_xfer\_ok = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00404}00404                 .bufsize = MCLBYTES,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00405}00405                 .callback = \&\mbox{\hyperlink{uhso_8c_a98d8c93787f6e80004b62388db5e8522}{uhso\_ifnet\_read\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00406}00406         \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00407}00407         [\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddaafe46fd1952cbc58cc5ee6315cf92004}{UHSO\_IFNET\_WRITE}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00408}00408                 .type = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00409}00409                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00410}00410                 .direction = \mbox{\hyperlink{usb_8h_a9a98e1bc9388db2ab5213e9d6496e851}{UE\_DIR\_OUT}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00411}00411                 .flags = \{ .pipe\_bof = 1, .force\_short\_xfer = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00412}00412                 .bufsize = MCLBYTES,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00413}00413                 .timeout = 5 * \mbox{\hyperlink{usbdi_8h_a0fc95562f7d27b59ac234342414e3a81}{USB\_MS\_HZ}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00414}00414                 .callback = \&\mbox{\hyperlink{uhso_8c_af23428d9c4e47e13aacdec14b34910e9}{uhso\_ifnet\_write\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00415}00415         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00416}00416 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00417}00417 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00418}00418 \textcolor{comment}{/* Config for interfaces with normal bulk serial ports */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00419}\mbox{\hyperlink{uhso_8c_a99e57d82fed2d707dcd33dc67670202b}{00419}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{uhso_8c_a99e57d82fed2d707dcd33dc67670202b}{uhso\_bs\_config}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{UHSO\_BULK\_ENDPT\_MAX}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00420}00420         [\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77dab2ab8c98e77cba966c61f3fb838878c8}{UHSO\_BULK\_ENDPT\_READ}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00421}00421                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00422}00422                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00423}00423                 .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00424}00424                 .flags = \{ .pipe\_bof = 1, .short\_xfer\_ok = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00425}00425                 .bufsize = 4096,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00426}00426                 .callback = \&\mbox{\hyperlink{uhso_8c_a643e82afc69b71ed2424285dc3bada28}{uhso\_bs\_read\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00427}00427         \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00428}00428 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00429}00429         [\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da2112b0269f48830dfe0576210587a756}{UHSO\_BULK\_ENDPT\_WRITE}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00430}00430                 .type = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00431}00431                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00432}00432                 .direction = \mbox{\hyperlink{usb_8h_a9a98e1bc9388db2ab5213e9d6496e851}{UE\_DIR\_OUT}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00433}00433                 .flags = \{ .pipe\_bof = 1, .force\_short\_xfer = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00434}00434                 .bufsize = 8192,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00435}00435                 .callback = \&\mbox{\hyperlink{uhso_8c_a8c424f484a5b13fe45f0b149b2b24c88}{uhso\_bs\_write\_callback}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00436}00436         \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00437}00437 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00438}00438         [\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}}] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00439}00439                 .type = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00440}00440                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00441}00441                 .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00442}00442                 .flags = \{ .short\_xfer\_ok = 1 \},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00443}00443                 .bufsize = 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00444}00444                 .callback = \&\mbox{\hyperlink{uhso_8c_a857f2d377a3fa7c727c4b007a5e0a0e6}{uhso\_bs\_intr\_callback}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00445}00445         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00446}00446 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00447}00447 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00448}00448 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_aff561bd924847c31740553b6c5020f0e}{uhso\_probe\_iface}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *, \textcolor{keywordtype}{int},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00449}00449     \textcolor{keywordtype}{int} (*probe)(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keywordtype}{int}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00450}00450 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a1b8f8f80a40c525588aea6900cc2e097}{uhso\_probe\_iface\_auto}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00451}00451 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_ad693f93f17242eea88128beb6234bdf1}{uhso\_probe\_iface\_static}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00452}00452 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a4b22977c1e645fef0bacf2b94d7ebffd}{uhso\_attach\_muxserial}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00453}00453     \textcolor{keywordtype}{int} \mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00454}00454 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_ae863e53d4aedaa2b202757d6348ee15b}{uhso\_attach\_bulkserial}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00455}00455     \textcolor{keywordtype}{int} \mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00456}00456 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a42232510caef3ac7a9fe66f466ce6b39}{uhso\_attach\_ifnet}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00457}00457     \textcolor{keywordtype}{int} \mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00458}00458 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a989a84823f0b43e7c84dfdcccb3f6cfe}{uhso\_test\_autoinst}}(\textcolor{keywordtype}{void} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00459}00459                 \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00460}00460 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a331cac542b1ff838a5297e1b2f3e65fa}{uhso\_driver\_loaded}}(\textcolor{keyword}{struct} module *, \textcolor{keywordtype}{int}, \textcolor{keywordtype}{void} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00461}00461 \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{uhso_8c_a2fc4b2d211eecd56eb14b166d4649f13}{uhso\_radio\_sysctl}}(SYSCTL\_HANDLER\_ARGS);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00462}00462 \textcolor{keyword}{static} \textcolor{keywordtype}{int} \mbox{\hyperlink{uhso_8c_a5e677d16d831d079196276e4b6d01545}{uhso\_radio\_ctrl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *, \textcolor{keywordtype}{int});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00463}00463 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00464}00464 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a76b04c475770ab8f7bbb106bc2f153fe}{uhso\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00465}00465 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_af455cd26960a2b7133f56ebe729367f7}{uhso\_ucom\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00466}00466 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a8150c83804f9b832eb26a9faeabd4c45}{uhso\_ucom\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00467}00467 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_aa856b20e39b0b84ea615b5ab44a69ce5}{uhso\_ucom\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00468}00468 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_adf7c2bf118460ac69474ad836a74ae14}{uhso\_ucom\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00469}00469 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_aac8e31ef9e6d257d2957abcd25b4581d}{uhso\_ucom\_cfg\_get\_status}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t *, uint8\_t *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00470}00470 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a30a8e5d1b0af00438ee9d6817f78cb21}{uhso\_ucom\_cfg\_set\_dtr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00471}00471 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_ace727c9e6f25cea1e4693dd12e013eef}{uhso\_ucom\_cfg\_set\_rts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00472}00472 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a1a4e9dba5e63e6102ad0e2177e7c2343}{uhso\_if\_init}}(\textcolor{keywordtype}{void} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00473}00473 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a4c235086061edee06f26ae4bb918b363}{uhso\_if\_start}}(\textcolor{keyword}{struct} ifnet *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00474}00474 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{uhso\_if\_stop}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00475}00475 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a2a04693be63a342d89ba48cc7b48a7bb}{uhso\_if\_ioctl}}(\textcolor{keyword}{struct} ifnet *, u\_long, caddr\_t);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00476}00476 \textcolor{keyword}{static} \textcolor{keywordtype}{int}  \mbox{\hyperlink{uhso_8c_a96fdcfe25173bd0d78f4a90527ba8945}{uhso\_if\_output}}(\textcolor{keyword}{struct} ifnet *, \textcolor{keyword}{struct} mbuf *,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00477}00477     \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr *, \textcolor{keyword}{struct} route *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00478}00478 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_a2352b6f1378089f8148a292f91b27b73}{uhso\_if\_rxflush}}(\textcolor{keywordtype}{void} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00479}00479 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00480}\mbox{\hyperlink{uhso_8c_adb1d4d1fcf24728adcbea7e9546d7f07}{00480}} \textcolor{keyword}{static} device\_probe\_t \mbox{\hyperlink{uhso_8c_adb1d4d1fcf24728adcbea7e9546d7f07}{uhso\_probe}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00481}\mbox{\hyperlink{uhso_8c_ae814f7468da715374ba3d16c92ad83fd}{00481}} \textcolor{keyword}{static} device\_attach\_t \mbox{\hyperlink{uhso_8c_ae814f7468da715374ba3d16c92ad83fd}{uhso\_attach}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00482}\mbox{\hyperlink{uhso_8c_a71c882dab570d067f8df7309a9f8487d}{00482}} \textcolor{keyword}{static} device\_detach\_t \mbox{\hyperlink{uhso_8c_a71c882dab570d067f8df7309a9f8487d}{uhso\_detach}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00483}00483 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uhso_8c_aecc34e23797522801931a9159dd86a72}{uhso\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00484}00484 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00485}\mbox{\hyperlink{uhso_8c_ac3aaa8d5d461d30773f9972aec6ccc67}{00485}} \textcolor{keyword}{static} device\_method\_t \mbox{\hyperlink{uhso_8c_ac3aaa8d5d461d30773f9972aec6ccc67}{uhso\_methods}}[] = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00486}00486         DEVMETHOD(device\_probe,         \mbox{\hyperlink{uhso_8c_adb1d4d1fcf24728adcbea7e9546d7f07}{uhso\_probe}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00487}00487         DEVMETHOD(device\_attach,        \mbox{\hyperlink{uhso_8c_ae814f7468da715374ba3d16c92ad83fd}{uhso\_attach}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00488}00488         DEVMETHOD(device\_detach,        \mbox{\hyperlink{uhso_8c_a71c882dab570d067f8df7309a9f8487d}{uhso\_detach}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00489}00489         \{ 0, 0 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00490}00490 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00491}00491 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00492}\mbox{\hyperlink{uhso_8c_a93e34d0ca26a8ffb334749f65b31891b}{00492}} \textcolor{keyword}{static} driver\_t \mbox{\hyperlink{uhso_8c_a93e34d0ca26a8ffb334749f65b31891b}{uhso\_driver}} = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00493}00493         .name = \textcolor{stringliteral}{"{}uhso"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00494}00494         .methods = \mbox{\hyperlink{uhso_8c_ac3aaa8d5d461d30773f9972aec6ccc67}{uhso\_methods}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00495}00495         .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00496}00496 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00497}00497 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00498}\mbox{\hyperlink{uhso_8c_af02e0f199152819c41a16b7e4cb4f5d5}{00498}} \textcolor{keyword}{static} devclass\_t \mbox{\hyperlink{uhso_8c_af02e0f199152819c41a16b7e4cb4f5d5}{uhso\_devclass}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00499}\mbox{\hyperlink{uhso_8c_a791e2436ae728146f750c28875202533}{00499}} \mbox{\hyperlink{uhso_8c_a791e2436ae728146f750c28875202533}{DRIVER\_MODULE}}(uhso, uhub, \mbox{\hyperlink{uhso_8c_a93e34d0ca26a8ffb334749f65b31891b}{uhso\_driver}}, \mbox{\hyperlink{uhso_8c_af02e0f199152819c41a16b7e4cb4f5d5}{uhso\_devclass}}, \mbox{\hyperlink{uhso_8c_a331cac542b1ff838a5297e1b2f3e65fa}{uhso\_driver\_loaded}}, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00500}\mbox{\hyperlink{uhso_8c_ac452936a05b001069b386c4cc380931e}{00500}} \mbox{\hyperlink{uhso_8c_ac452936a05b001069b386c4cc380931e}{MODULE\_DEPEND}}(uhso, ucom, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00501}\mbox{\hyperlink{uhso_8c_ab3c987dcc1c44b3b22192c6a7e711608}{00501}} \mbox{\hyperlink{uhso_8c_ac452936a05b001069b386c4cc380931e}{MODULE\_DEPEND}}(uhso, \mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00502}\mbox{\hyperlink{uhso_8c_aa8e7e75c15b2f2bca306bfe98adc9722}{00502}} \mbox{\hyperlink{uhso_8c_aa8e7e75c15b2f2bca306bfe98adc9722}{MODULE\_VERSION}}(uhso, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00503}\mbox{\hyperlink{uhso_8c_a89ab29efb8f1b31d6fd3bc14a4c17bbf}{00503}} \mbox{\hyperlink{uhso_8c_a89ab29efb8f1b31d6fd3bc14a4c17bbf}{USB\_PNP\_HOST\_INFO}}(\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00504}00504 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00505}\mbox{\hyperlink{uhso_8c_a78beae966450f5509f97d4223f8c132f}{00505}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__callback}{ucom\_callback}} \mbox{\hyperlink{uhso_8c_a78beae966450f5509f97d4223f8c132f}{uhso\_ucom\_callback}} = \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00506}00506         .\mbox{\hyperlink{structucom__callback_af543b5023679a91b3ae77ed22f2df40d}{ucom\_cfg\_get\_status}} = \&\mbox{\hyperlink{uhso_8c_aac8e31ef9e6d257d2957abcd25b4581d}{uhso\_ucom\_cfg\_get\_status}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00507}00507         .ucom\_cfg\_set\_dtr = \&\mbox{\hyperlink{uhso_8c_a30a8e5d1b0af00438ee9d6817f78cb21}{uhso\_ucom\_cfg\_set\_dtr}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00508}00508         .ucom\_cfg\_set\_rts = \&\mbox{\hyperlink{uhso_8c_ace727c9e6f25cea1e4693dd12e013eef}{uhso\_ucom\_cfg\_set\_rts}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00509}00509         .ucom\_start\_read = \mbox{\hyperlink{uhso_8c_af455cd26960a2b7133f56ebe729367f7}{uhso\_ucom\_start\_read}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00510}00510         .ucom\_stop\_read = \mbox{\hyperlink{uhso_8c_a8150c83804f9b832eb26a9faeabd4c45}{uhso\_ucom\_stop\_read}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00511}00511         .ucom\_start\_write = \mbox{\hyperlink{uhso_8c_aa856b20e39b0b84ea615b5ab44a69ce5}{uhso\_ucom\_start\_write}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00512}00512         .ucom\_stop\_write = \mbox{\hyperlink{uhso_8c_adf7c2bf118460ac69474ad836a74ae14}{uhso\_ucom\_stop\_write}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00513}00513         .ucom\_free = \&\mbox{\hyperlink{uhso_8c_a76b04c475770ab8f7bbb106bc2f153fe}{uhso\_free}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00514}00514 \};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00515}00515 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00516}00516 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00517}\mbox{\hyperlink{uhso_8c_afae1393ecfaa5507ce349be443ce5884}{00517}} \mbox{\hyperlink{uhso_8c_adb1d4d1fcf24728adcbea7e9546d7f07}{uhso\_probe}}(device\_t self)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00518}00518 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00519}00519         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(self);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00520}00520         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00521}00521 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00522}00522         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a246691e99681281d3113d63e81b7e4f0}{usb\_mode}} != \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba1c7091216cfa9c9f4a252b0825ed32cb}{USB\_MODE\_HOST}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00523}00523                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00524}00524         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a9e2af2c9a58f0df11559c7679185b0e8}{bConfigIndex}} != 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00525}00525                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00526}00526         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a76f8856fd2dc0b921987c8a9719059a9}{bDeviceClass}} != 0xff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00527}00527                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00528}00528 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00529}00529         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__lookup_8c_aa691ad42d532498716f358cb1c994fb2}{usbd\_lookup\_id\_by\_uaa}}(\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}}), uaa);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00530}00530         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00531}00531                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00532}00532 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00533}00533         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00534}00534 \textcolor{comment}{         * Probe device to see if we are able to attach}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00535}00535 \textcolor{comment}{         * to this interface or not.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00536}00536 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00537}00537         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usbdi_8h_ad61be4846786fb86de5691968d1e9b66}{USB\_GET\_DRIVER\_INFO}}(uaa) == \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00538}00538                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_a1b8f8f80a40c525588aea6900cc2e097}{uhso\_probe\_iface\_auto}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00539}00539                     uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a268433f99f7bfcc278a619418e3c44fa}{bIfaceNum}}) == 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00540}00540                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00541}00541         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00542}00542         \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00543}00543 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00544}00544 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00545}00545 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00546}\mbox{\hyperlink{uhso_8c_a5605f7db355b2b753e48feb2872d0438}{00546}} \mbox{\hyperlink{uhso_8c_ae814f7468da715374ba3d16c92ad83fd}{uhso\_attach}}(device\_t self)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00547}00547 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00548}00548         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = device\_get\_softc(self);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00549}00549         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(self);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00550}00550         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} *\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00551}00551         \textcolor{keyword}{struct }sysctl\_ctx\_list *sctx;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00552}00552         \textcolor{keyword}{struct }sysctl\_oid *soid;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00553}00553         \textcolor{keyword}{struct }sysctl\_oid *tree = NULL, *tty\_node;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00554}00554         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00555}00555         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__tty}{uhso\_tty}} *ht;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00556}00556         \textcolor{keywordtype}{int} i, \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}, port;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00557}00557         \textcolor{keywordtype}{void} *probe\_f;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00558}00558         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00559}00559         \textcolor{keywordtype}{char} *\mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00560}00560 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00561}00561         sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}} = self;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00562}00562         sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00563}00563         mtx\_init(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}}, \textcolor{stringliteral}{"{}uhso"{}}, NULL, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00564}00564         mbufq\_init(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{sc\_rxq}}, INT\_MAX); \textcolor{comment}{/* XXXGL: sane maximum */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00565}00565         \mbox{\hyperlink{usb__serial_8c_a3533648e606891c90d0267b21b3ba59e}{ucom\_ref}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00566}00566 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00567}00567         sc-\/>\mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{sc\_radio}} = 1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00568}00568 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00569}00569         \textcolor{keywordtype}{id} = \mbox{\hyperlink{usb__device_8c_a4b209681fa34e4570ab0544d0ae9002f}{usbd\_get\_interface\_descriptor}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_aaf4432c55ec34c0e4eb0cb3ddfb08ffd}{iface}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00570}00570         sc-\/>\mbox{\hyperlink{structuhso__softc_a1ac0fd24cdfa9c67e0d731a63af2bde5}{sc\_ctrl\_iface\_no}} = \textcolor{keywordtype}{id}-\/>bInterfaceNumber;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00571}00571 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00572}00572         sc-\/>\mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{sc\_iface\_no}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a268433f99f7bfcc278a619418e3c44fa}{bIfaceNum}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00573}00573         sc-\/>\mbox{\hyperlink{structuhso__softc_a08415bdde15a3ba7d5fd3a7a731e0ebd}{sc\_iface\_index}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00574}00574 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00575}00575         \textcolor{comment}{/* Setup control pipe */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00576}00576         uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00577}00577             \&sc-\/>\mbox{\hyperlink{structuhso__softc_a08415bdde15a3ba7d5fd3a7a731e0ebd}{sc\_iface\_index}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a53f9e7056226c5c4a60311379b80c65f}{sc\_ctrl\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00578}00578             \mbox{\hyperlink{uhso_8c_a83ead8de6b85b1aff017f5ed54b29841}{uhso\_ctrl\_config}}, \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}}, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00579}00579         \textcolor{keywordflow}{if} (uerr) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00580}00580                 device\_printf(self, \textcolor{stringliteral}{"{}Failed to setup control pipe: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00581}00581                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00582}00582                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00583}00583         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00584}00584 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00585}00585         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usbdi_8h_ad61be4846786fb86de5691968d1e9b66}{USB\_GET\_DRIVER\_INFO}}(uaa) == \mbox{\hyperlink{uhso_8c_a9d90469fe2a48cfc61e96b9a6176283d}{UHSO\_STATIC\_IFACE}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00586}00586                 probe\_f = \mbox{\hyperlink{uhso_8c_ad693f93f17242eea88128beb6234bdf1}{uhso\_probe\_iface\_static}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00587}00587         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{usbdi_8h_ad61be4846786fb86de5691968d1e9b66}{USB\_GET\_DRIVER\_INFO}}(uaa) == \mbox{\hyperlink{uhso_8c_a823a502a98db24a6d3dea54c76f4d3f7}{UHSO\_AUTO\_IFACE}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00588}00588                 probe\_f = \mbox{\hyperlink{uhso_8c_a1b8f8f80a40c525588aea6900cc2e097}{uhso\_probe\_iface\_auto}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00589}00589         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00590}00590                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00591}00591 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00592}00592         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uhso_8c_aff561bd924847c31740553b6c5020f0e}{uhso\_probe\_iface}}(sc, uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a268433f99f7bfcc278a619418e3c44fa}{bIfaceNum}}, probe\_f);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00593}00593         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00594}00594                 \textcolor{keywordflow}{goto} out;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00595}00595 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00596}00596         sctx = device\_get\_sysctl\_ctx(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00597}00597         soid = device\_get\_sysctl\_tree(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00599}00599         SYSCTL\_ADD\_STRING(sctx, SYSCTL\_CHILDREN(soid), OID\_AUTO, \textcolor{stringliteral}{"{}type"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00600}00600             CTLFLAG\_RD, \mbox{\hyperlink{uhso_8c_ab838b65d1f0a0b48861468599badc6fc}{uhso\_port}}[\mbox{\hyperlink{uhso_8c_af3cb0100ca89d8378acace829ebb730c}{UHSO\_IFACE\_PORT}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}})], 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00601}00601             \textcolor{stringliteral}{"{}Port available at this interface"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00602}00602         SYSCTL\_ADD\_PROC(sctx, SYSCTL\_CHILDREN(soid), OID\_AUTO, \textcolor{stringliteral}{"{}radio"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00603}00603             CTLTYPE\_INT | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE, sc, 0,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00604}00604             \mbox{\hyperlink{uhso_8c_a2fc4b2d211eecd56eb14b166d4649f13}{uhso\_radio\_sysctl}}, \textcolor{stringliteral}{"{}I"{}}, \textcolor{stringliteral}{"{}Enable radio"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00605}00605 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00606}00606         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00607}00607 \textcolor{comment}{         * The default interface description on most Option devices isn't}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00608}00608 \textcolor{comment}{         * very helpful. So we skip device\_set\_usb\_desc and set the}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00609}00609 \textcolor{comment}{         * device description manually.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00610}00610 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00611}00611         device\_set\_desc\_copy(self, \mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{uhso\_port\_type}}[\mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{UHSO\_IFACE\_PORT\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}})]); }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00612}00612         \textcolor{comment}{/* Announce device */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00613}00613         device\_printf(self, \textcolor{stringliteral}{"{}<\%s port> at <\%s \%s> on \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00614}00614             \mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{uhso\_port\_type}}[\mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{UHSO\_IFACE\_PORT\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}})],}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00615}00615             \mbox{\hyperlink{usb__device_8c_ae772361c7c976e3bfc4388a07517e233}{usb\_get\_manufacturer}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00616}00616             \mbox{\hyperlink{usb__device_8c_a7cf233913defcbb3e5bb29f7b6565e6a}{usb\_get\_product}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}),}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00617}00617             device\_get\_nameunit(device\_get\_parent(self)));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00618}00618 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00619}00619         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} > 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00620}00620                 SYSCTL\_ADD\_INT(sctx, SYSCTL\_CHILDREN(soid), OID\_AUTO, \textcolor{stringliteral}{"{}ports"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00621}00621                     CTLFLAG\_RD, \&sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}, 0, \textcolor{stringliteral}{"{}Number of attached serial ports"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00622}00622 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00623}00623                 tree = SYSCTL\_ADD\_NODE(sctx, SYSCTL\_CHILDREN(soid), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00624}00624                     \textcolor{stringliteral}{"{}port"{}}, CTLFLAG\_RD | CTLFLAG\_MPSAFE, NULL, \textcolor{stringliteral}{"{}Serial ports"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00625}00625         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00627}00627         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00628}00628 \textcolor{comment}{         * Loop through the number of found TTYs and create sysctl}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00629}00629 \textcolor{comment}{         * nodes for them.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00630}00630 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00631}00631         \textcolor{keywordflow}{for} (i = 0; i < sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}; i++) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00632}00632                 ht = \&sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[i];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00633}00633                 ucom = \&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[i];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00634}00634 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00635}00635                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00636}00636                         port = \mbox{\hyperlink{uhso_8c_aee48bfe2b3c72fea8605b8eecaf66175}{uhso\_mux\_port\_map}}[ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}}];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00637}00637                 \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00638}00638                         port = \mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{UHSO\_IFACE\_PORT\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00639}00639 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00640}00640                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \mbox{\hyperlink{uhso_8c_a13f5a751f83d642f905eaf12954b7a2b}{uhso\_port\_type\_sysctl}}[port];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00641}00641 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00642}00642                 tty\_node = SYSCTL\_ADD\_NODE(sctx, SYSCTL\_CHILDREN(tree), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00643}00643                     \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}, CTLFLAG\_RD | CTLFLAG\_MPSAFE, NULL, \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00645}00645                 ht-\/>\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}}[0] = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00646}00646                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} == 1)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00647}00647                         snprintf(ht-\/>\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}}, 32, \textcolor{stringliteral}{"{}cuaU\%d"{}}, ucom-\/>\mbox{\hyperlink{structucom__softc_a77834a92c9c2d51667f71da91cf7b0fa}{sc\_super}}-\/>\mbox{\hyperlink{structucom__super__softc_a4a076a2915ea4fdec739a16542588aaf}{sc\_unit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00648}00648                 \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00649}00649                         snprintf(ht-\/>\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}}, 32, \textcolor{stringliteral}{"{}cuaU\%d.\%d"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00650}00650                             ucom-\/>\mbox{\hyperlink{structucom__softc_a77834a92c9c2d51667f71da91cf7b0fa}{sc\_super}}-\/>\mbox{\hyperlink{structucom__super__softc_a4a076a2915ea4fdec739a16542588aaf}{sc\_unit}}, ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00651}00651                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00652}00652 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00653}00653                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{uhso\_port\_type}}[port];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00654}00654                 SYSCTL\_ADD\_STRING(sctx, SYSCTL\_CHILDREN(tty\_node), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00655}00655                     \textcolor{stringliteral}{"{}tty"{}}, CTLFLAG\_RD, ht-\/>\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}}, 0, \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00656}00656                 SYSCTL\_ADD\_STRING(sctx, SYSCTL\_CHILDREN(tty\_node), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00657}00657                     \textcolor{stringliteral}{"{}desc"{}}, CTLFLAG\_RD, \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}, 0, \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00658}00658 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00659}00659                 \textcolor{keywordflow}{if} (bootverbose)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00660}00660                         device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00661}00661                             \textcolor{stringliteral}{"{}\(\backslash\)"{}\%s\(\backslash\)"{} port at \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}, ht-\/>\mbox{\hyperlink{structuhso__tty_a560f047d1884a9b016b37b11b3c82348}{ht\_name}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00662}00662         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00663}00663 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00664}00664         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00665}00665 out:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00666}00666         \mbox{\hyperlink{uhso_8c_a71c882dab570d067f8df7309a9f8487d}{uhso\_detach}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00667}00667         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00668}00668 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00669}00669 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00670}00670 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00671}\mbox{\hyperlink{uhso_8c_a4c026da8704d0b087d97c75c84b31838}{00671}} \mbox{\hyperlink{uhso_8c_a71c882dab570d067f8df7309a9f8487d}{uhso\_detach}}(device\_t self)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00672}00672 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00673}00673         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = device\_get\_softc(self);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00674}00674         \textcolor{keywordtype}{int} i;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00675}00675 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00676}00676         \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}, 3);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00677}00677         \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a53f9e7056226c5c4a60311379b80c65f}{sc\_ctrl\_xfer}}, \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00678}00678         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} > 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00679}00679                 \mbox{\hyperlink{usb__serial_8c_abcceb7ddf05b758da5f3ada77a962ad1}{ucom\_detach}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00680}00680 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00681}00681                 \textcolor{keywordflow}{for} (i = 0; i < sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}; i++) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00682}00682                         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[i].\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}} != -\/1) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00683}00683                                 \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[i].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00684}00684                                     \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00685}00685                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00686}00686                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00687}00687         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00688}00688 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00689}00689         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00690}00690                 callout\_drain(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00691}00691                 free\_unr(\mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{uhso\_ifnet\_unit}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}}-\/>if\_dunit);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00692}00692                 mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00693}00693                 \mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{uhso\_if\_stop}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00694}00694                 mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00695}00695                 bpfdetach(sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00696}00696                 if\_detach(sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00697}00697                 if\_free(sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00698}00698                 \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}, \mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddad585baa86068f4f5cedf9e0ca010f340}{UHSO\_IFNET\_MAX}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00699}00699         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00700}00700 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00701}00701         device\_claim\_softc(self);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00702}00702 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00703}00703         \mbox{\hyperlink{uhso_8c_aecc34e23797522801931a9159dd86a72}{uhso\_free\_softc}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00704}00704 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00705}00705         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00706}00706 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00707}00707 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00708}\mbox{\hyperlink{uhso_8c_adbfd9bec6125110ced5de4f466ca7c36}{00708}} \mbox{\hyperlink{uhso_8c_adbfd9bec6125110ced5de4f466ca7c36}{UCOM\_UNLOAD\_DRAIN}}(uhso);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00709}00709 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00710}00710 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00711}\mbox{\hyperlink{uhso_8c_aecc34e23797522801931a9159dd86a72}{00711}} \mbox{\hyperlink{uhso_8c_aecc34e23797522801931a9159dd86a72}{uhso\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00712}00712 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00713}00713         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a27ca652272693169923a38646505d083}{ucom\_unref}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}})) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00714}00714                 free(sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}, M\_USBDEV);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00715}00715                 free(sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}, M\_USBDEV);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00716}00716                 mtx\_destroy(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00717}00717                 device\_free\_softc(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00718}00718         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00719}00719 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00720}00720 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00721}00721 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00722}\mbox{\hyperlink{uhso_8c_a76b04c475770ab8f7bbb106bc2f153fe}{00722}} \mbox{\hyperlink{uhso_8c_a76b04c475770ab8f7bbb106bc2f153fe}{uhso\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00723}00723 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00724}00724         \mbox{\hyperlink{uhso_8c_aecc34e23797522801931a9159dd86a72}{uhso\_free\_softc}}(ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00725}00725 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00726}00726 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00727}00727 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00728}\mbox{\hyperlink{uhso_8c_a989a84823f0b43e7c84dfdcccb3f6cfe}{00728}} \mbox{\hyperlink{uhso_8c_a989a84823f0b43e7c84dfdcccb3f6cfe}{uhso\_test\_autoinst}}(\textcolor{keywordtype}{void} *arg, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00729}00729     \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00730}00730 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00731}00731         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00732}00732         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} *\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00733}00733 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00734}00734         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a2b48f36369d07d7452d70d4a923a35ae}{dev\_state}} != \mbox{\hyperlink{usbdi_8h_a635711fa84ca8e34068c774ff5518450}{UAA\_DEV\_READY}} || !\mbox{\hyperlink{uhso_8c_a453712548c03aba27248e8d2cf1ab25f}{uhso\_autoswitch}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00735}00735                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00736}00736 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00737}00737         iface = \mbox{\hyperlink{usb__device_8c_ad241549c2225f6ccb72345851d5b9ed8}{usbd\_get\_iface}}(udev, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00738}00738         \textcolor{keywordflow}{if} (iface == NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00739}00739                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00740}00740         \textcolor{keywordtype}{id} = iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00741}00741         \textcolor{keywordflow}{if} (\textcolor{keywordtype}{id} == NULL || \mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}}-\/>bInterfaceClass != \mbox{\hyperlink{usb_8h_ae81b41321fc379102099b7f2e5c9739e}{UICLASS\_MASS}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00742}00742                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00743}00743         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__lookup_8c_aa691ad42d532498716f358cb1c994fb2}{usbd\_lookup\_id\_by\_uaa}}(\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{uhso_8c_a996ce0c8170ed0a7efb2474a7d5d602e}{uhso\_devs}}), uaa))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00744}00744                 \textcolor{keywordflow}{return};         \textcolor{comment}{/* no device match */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00745}00745 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00746}00746         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__msctest_8c_abf4a74e71cb01d6dc314e510be89e691}{usb\_msc\_eject}}(udev, 0, \mbox{\hyperlink{usb__msctest_8h_a4f126a0a9b1d8c6a8f46a051ef8830bba74bbc9921986c1b68d19a0aece1d47f3}{MSC\_EJECT\_REZERO}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00747}00747                 \textcolor{comment}{/* success, mark the udev as disappearing */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00748}00748                 uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a2b48f36369d07d7452d70d4a923a35ae}{dev\_state}} = \mbox{\hyperlink{usbdi_8h_af0a1ac09514bfda3e5418bcb253b5221}{UAA\_DEV\_EJECTING}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00749}00749         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00750}00750 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00751}00751 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00752}00752 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00753}\mbox{\hyperlink{uhso_8c_a331cac542b1ff838a5297e1b2f3e65fa}{00753}} \mbox{\hyperlink{uhso_8c_a331cac542b1ff838a5297e1b2f3e65fa}{uhso\_driver\_loaded}}(\textcolor{keyword}{struct} module *mod, \textcolor{keywordtype}{int} what, \textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00754}00754 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00755}00755         \textcolor{keywordflow}{switch} (what) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00756}00756         \textcolor{keywordflow}{case} MOD\_LOAD:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00757}00757                 \textcolor{comment}{/* register our autoinstall handler */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00758}00758                 \mbox{\hyperlink{uhso_8c_a4920c711e119a0df31b717011948a63d}{uhso\_etag}} = EVENTHANDLER\_REGISTER(usb\_dev\_configured,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00759}00759                     \mbox{\hyperlink{uhso_8c_a989a84823f0b43e7c84dfdcccb3f6cfe}{uhso\_test\_autoinst}}, NULL, EVENTHANDLER\_PRI\_ANY);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00760}00760                 \textcolor{comment}{/* create our unit allocator for inet devs */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00761}00761                 \mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{uhso\_ifnet\_unit}} = new\_unrhdr(0, INT\_MAX, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00762}00762                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00763}00763         \textcolor{keywordflow}{case} MOD\_UNLOAD:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00764}00764                 EVENTHANDLER\_DEREGISTER(usb\_dev\_configured, \mbox{\hyperlink{uhso_8c_a4920c711e119a0df31b717011948a63d}{uhso\_etag}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00765}00765                 delete\_unrhdr(\mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{uhso\_ifnet\_unit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00766}00766                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00767}00767         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00768}00768                 \textcolor{keywordflow}{return} (EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00769}00769         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00770}00770         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00771}00771 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00772}00772 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00773}00773 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00774}00774 \textcolor{comment}{ * Probe the interface type by querying the device. The elements}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00775}00775 \textcolor{comment}{ * of an array indicates the capabilities of a particular interface.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00776}00776 \textcolor{comment}{ * Returns a bit mask with the interface capabilities.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00777}00777 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00778}00778 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00779}\mbox{\hyperlink{uhso_8c_a1b8f8f80a40c525588aea6900cc2e097}{00779}} \mbox{\hyperlink{uhso_8c_a1b8f8f80a40c525588aea6900cc2e097}{uhso\_probe\_iface\_auto}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, \textcolor{keywordtype}{int} index)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00780}00780 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00781}00781         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00782}00782         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00783}00783         uint16\_t actlen = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00784}00784         \textcolor{keywordtype}{char} port;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00785}00785         \textcolor{keywordtype}{char} buf[17] = \{0\};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00786}00786 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00787}00787         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6da49500e864a3c33c9eed3dd49d3e59}{UT\_READ\_VENDOR\_DEVICE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00788}00788         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = 0x86;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00789}00789         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00790}00790         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00791}00791         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 17);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00792}00792 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00793}00793         uerr = \mbox{\hyperlink{usb__request_8c_ae914a46bd63666caf7f4d8c182fa5e71}{usbd\_do\_request\_flags}}(udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, buf,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00794}00794             0, \&actlen, \mbox{\hyperlink{usbdi_8h_a0fc95562f7d27b59ac234342414e3a81}{USB\_MS\_HZ}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00795}00795         \textcolor{keywordflow}{if} (uerr != 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00796}00796                 printf(\textcolor{stringliteral}{"{}\%s: usbd\_do\_request\_flags failed, \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00797}00797                     \_\_func\_\_, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00798}00798                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00799}00799         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00800}00800 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00801}00801         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}actlen=\%d\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00802}00802         \mbox{\hyperlink{uhso_8c_a5fa860c43886be360ebdfded17d01ccd}{UHSO\_HEXDUMP}}(buf, 17);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00803}00803 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00804}00804         \textcolor{keywordflow}{if} (index < 0 || index > 16) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00805}00805                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}Index \%d out of range\(\backslash\)n"{}}, index);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00806}00806                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00807}00807         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00808}00808 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00809}00809         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}index=\%d, type=\%x[\%s]\(\backslash\)n"{}}, index, buf[index],}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00810}00810             \mbox{\hyperlink{uhso_8c_a196fb198d3d60f692c72508cacef76c7}{uhso\_port\_type}}[(\textcolor{keywordtype}{int})\mbox{\hyperlink{uhso_8c_a148728002b161523ee33c12f60f0b150}{uhso\_port\_map}}[(\textcolor{keywordtype}{int})buf[index]]]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00811}00811 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00812}00812         \textcolor{keywordflow}{if} (buf[index] >= \mbox{\hyperlink{uhso_8c_a23cb509f3f40601de84eb63cae82c05b}{uhso\_port\_map\_max}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00813}00813                 port = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00814}00814         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00815}00815                 port = \mbox{\hyperlink{uhso_8c_a148728002b161523ee33c12f60f0b150}{uhso\_port\_map}}[(int)buf[index]];}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00816}00816 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00817}00817         \textcolor{keywordflow}{switch} (port) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00818}00818         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{UHSO\_PORT\_TYPE\_NETWORK}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00819}00819                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ad2f06d2173a93828b9b1b8a867e94ebb}{UHSO\_IF\_NET}} | \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00820}00820                     \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}} | \mbox{\hyperlink{uhso_8c_a9ecd69e605cdddf4f7653a63219c6c0b}{UHSO\_PORT\_NETWORK}}, port));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00821}00821         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a98d2281fa0f1e017ed771c5173f2f614}{UHSO\_PORT\_TYPE\_DIAG}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00822}00822         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_af07b09dfac1215f8509b9bce7c7a0749}{UHSO\_PORT\_TYPE\_DIAG2}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00823}00823         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_ac8dbb921912e3fe4e44ff739855b1d44}{UHSO\_PORT\_TYPE\_GPS}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00824}00824         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a99ff842e7153d5c3cf23caa8ec65b5b2}{UHSO\_PORT\_TYPE\_GPSCTL}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00825}00825         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_ab7f5c7385a41b25c2997dd3c3dab051e}{UHSO\_PORT\_TYPE\_CTL}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00826}00826         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_afc46e4604d58e95f372b7cdce02b1140}{UHSO\_PORT\_TYPE\_APP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00827}00827         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a53b323e027ea26649b5f66b1bca5b737}{UHSO\_PORT\_TYPE\_APP2}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00828}00828         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a2deec1670cf2592dd58af84b91919d6f}{UHSO\_PORT\_TYPE\_MODEM}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00829}00829                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00830}00830                     \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, port));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00831}00831         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a5bbfa871b6ca892e76b79fd03a1a7c1f}{UHSO\_PORT\_TYPE\_MSD}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00832}00832                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00833}00833         \textcolor{keywordflow}{case} \mbox{\hyperlink{uhso_8c_a72dd6cbbf1ea9d73dd4c8720051c571e}{UHSO\_PORT\_TYPE\_UNKNOWN}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00834}00834         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00835}00835                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00836}00836         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00837}00837 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00838}00838         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00839}00839 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00840}00840 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00841}00841 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00842}00842 \textcolor{comment}{ * Returns the capabilities of interfaces for devices that don't}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00843}00843 \textcolor{comment}{ * support the automatic query.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00844}00844 \textcolor{comment}{ * Returns a bit mask with the interface capabilities.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00845}00845 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00846}00846 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00847}\mbox{\hyperlink{uhso_8c_ad693f93f17242eea88128beb6234bdf1}{00847}} \mbox{\hyperlink{uhso_8c_ad693f93f17242eea88128beb6234bdf1}{uhso\_probe\_iface\_static}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, \textcolor{keywordtype}{int} index)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00848}00848 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00849}00849         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config__descriptor}{usb\_config\_descriptor}} *cd;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00850}00850 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00851}00851         cd = \mbox{\hyperlink{usb__device_8c_a5833d02ea7d69fb84106d7b97391431a}{usbd\_get\_config\_descriptor}}(udev);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00852}00852         \textcolor{keywordflow}{if} (cd-\/>\mbox{\hyperlink{structusb__config__descriptor_a60b87e4669815bc7e5728c897dae77fb}{bNumInterface}} <= 3) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00853}00853                 \textcolor{comment}{/* Cards with 3 or less interfaces */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00854}00854                 \textcolor{keywordflow}{switch} (index) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00855}00855                 \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00856}00856                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ad2f06d2173a93828b9b1b8a867e94ebb}{UHSO\_IF\_NET}} | \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00857}00857                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}} | \mbox{\hyperlink{uhso_8c_a9ecd69e605cdddf4f7653a63219c6c0b}{UHSO\_PORT\_NETWORK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00858}00858                             \mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{UHSO\_PORT\_TYPE\_NETWORK}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00859}00859                 \textcolor{keywordflow}{case} 1:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00860}00860                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00861}00861                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, \mbox{\hyperlink{uhso_8c_a98d2281fa0f1e017ed771c5173f2f614}{UHSO\_PORT\_TYPE\_DIAG}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00862}00862                 \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00863}00863                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00864}00864                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, \mbox{\hyperlink{uhso_8c_a2deec1670cf2592dd58af84b91919d6f}{UHSO\_PORT\_TYPE\_MODEM}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00865}00865                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00866}00866         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00867}00867                 \textcolor{comment}{/* Cards with 4 interfaces */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00868}00868                 \textcolor{keywordflow}{switch} (index) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00869}00869                 \textcolor{keywordflow}{case} 0:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00870}00870                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ad2f06d2173a93828b9b1b8a867e94ebb}{UHSO\_IF\_NET}} | \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00871}00871                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}} | \mbox{\hyperlink{uhso_8c_a9ecd69e605cdddf4f7653a63219c6c0b}{UHSO\_PORT\_NETWORK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00872}00872                             \mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{UHSO\_PORT\_TYPE\_NETWORK}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00873}00873                 \textcolor{keywordflow}{case} 1:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00874}00874                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00875}00875                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, \mbox{\hyperlink{uhso_8c_af07b09dfac1215f8509b9bce7c7a0749}{UHSO\_PORT\_TYPE\_DIAG2}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00876}00876                 \textcolor{keywordflow}{case} 2:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00877}00877                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00878}00878                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, \mbox{\hyperlink{uhso_8c_a2deec1670cf2592dd58af84b91919d6f}{UHSO\_PORT\_TYPE\_MODEM}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00879}00879                 \textcolor{keywordflow}{case} 3:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00880}00880                         \textcolor{keywordflow}{return} \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}(\mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00881}00881                             \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}, \mbox{\hyperlink{uhso_8c_a98d2281fa0f1e017ed771c5173f2f614}{UHSO\_PORT\_TYPE\_DIAG}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00882}00882                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00883}00883         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00884}00884         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00885}00885 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00886}00886 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00887}00887 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00888}00888 \textcolor{comment}{ * Probes an interface for its particular capabilities and attaches if}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00889}00889 \textcolor{comment}{ * it's a supported interface.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00890}00890 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00891}00891 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00892}\mbox{\hyperlink{uhso_8c_aff561bd924847c31740553b6c5020f0e}{00892}} \mbox{\hyperlink{uhso_8c_aff561bd924847c31740553b6c5020f0e}{uhso\_probe\_iface}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc, \textcolor{keywordtype}{int} index,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00893}00893     \textcolor{keywordtype}{int} (*probe)(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, \textcolor{keywordtype}{int}))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00894}00894 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00895}00895         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00896}00896         \textcolor{keywordtype}{int} type, \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00897}00897 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00898}00898         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Probing for interface \%d, probe\_func=\%p\(\backslash\)n"{}}, index, probe);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00899}00899 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00900}00900         type = probe(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}}, index);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00901}00901         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Probe result \%x\(\backslash\)n"{}}, type);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00902}00902         \textcolor{keywordflow}{if} (type <= 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00903}00903                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00904}00904 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00905}00905         sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}} = type;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00906}00906         iface = \mbox{\hyperlink{usb__device_8c_ad241549c2225f6ccb72345851d5b9ed8}{usbd\_get\_iface}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}}, index);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00907}00907 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00908}00908         \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{UHSO\_IFACE\_PORT\_TYPE}}(type) == \mbox{\hyperlink{uhso_8c_a79994eaa5f70abff2a3f38642be3b603}{UHSO\_PORT\_TYPE\_NETWORK}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00909}00909                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uhso_8c_a42232510caef3ac7a9fe66f466ce6b39}{uhso\_attach\_ifnet}}(sc, iface, type);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00910}00910                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00911}00911                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}uhso\_attach\_ifnet failed"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00912}00912                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00913}00913                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00914}00914 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00915}00915                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00916}00916 \textcolor{comment}{                 * If there is an additional interrupt endpoint on this}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00917}00917 \textcolor{comment}{                 * interface then we most likely have a multiplexed serial port}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00918}00918 \textcolor{comment}{                 * available.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00919}00919 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00920}00920                 \textcolor{keywordflow}{if} (iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a0d29c20151d83ce2610cd98d268d95df}{bNumEndpoints}} < 3) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00921}00921                         sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}} = \mbox{\hyperlink{uhso_8c_a72060bd25e7ee6656ff5f83c0ffb9761}{UHSO\_IFACE\_SPEC}}( }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00922}00922                             \mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(type) \& \string~\mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00923}00923                             \mbox{\hyperlink{uhso_8c_af3cb0100ca89d8378acace829ebb730c}{UHSO\_IFACE\_PORT}}(type) \& \string~\mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00924}00924                             \mbox{\hyperlink{uhso_8c_aedc0c27b819c7784641d37a4ee72fffb}{UHSO\_IFACE\_PORT\_TYPE}}(type));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00925}00925                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00926}00926                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00927}00927 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00928}00928                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Trying to attach mux. serial\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00929}00929                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uhso_8c_a4b22977c1e645fef0bacf2b94d7ebffd}{uhso\_attach\_muxserial}}(sc, iface, type);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00930}00930                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == 0 \&\& sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} > 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00931}00931                         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__serial_8c_a1a14cc63123395507acee783de212d75}{ucom\_attach}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00932}00932                             sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}, sc, \&\mbox{\hyperlink{uhso_8c_a78beae966450f5509f97d4223f8c132f}{uhso\_ucom\_callback}}, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00933}00933                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00934}00934                                 device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}, \textcolor{stringliteral}{"{}ucom\_attach failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00935}00935                                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00936}00936                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00937}00937                         \mbox{\hyperlink{usb__serial_8c_a5fd441bb430a68061e8c933443f1d14f}{ucom\_set\_pnpinfo\_usb}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00938}00938 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00939}00939                         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00940}00940                         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00941}00941                         mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00942}00942                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00943}00943         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(type) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}) \&\&}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00944}00944             \mbox{\hyperlink{uhso_8c_af3cb0100ca89d8378acace829ebb730c}{UHSO\_IFACE\_PORT}}(type) \& \mbox{\hyperlink{uhso_8c_ad21166c6bba7490ba5b9e9804c665923}{UHSO\_PORT\_SERIAL}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00945}00945                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uhso_8c_ae863e53d4aedaa2b202757d6348ee15b}{uhso\_attach\_bulkserial}}(sc, iface, type);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00946}00946                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00947}00947                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00948}00948 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00949}00949                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__serial_8c_a1a14cc63123395507acee783de212d75}{ucom\_attach}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00950}00950                     sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}, sc, \&\mbox{\hyperlink{uhso_8c_a78beae966450f5509f97d4223f8c132f}{uhso\_ucom\_callback}}, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00951}00951                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00952}00952                         device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}, \textcolor{stringliteral}{"{}ucom\_attach failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00953}00953                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00954}00954                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00955}00955                 \mbox{\hyperlink{usb__serial_8c_a5fd441bb430a68061e8c933443f1d14f}{ucom\_set\_pnpinfo\_usb}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a5e9248606c07880061af1b54600b3861}{sc\_super\_ucom}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00956}00956         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00957}00957         \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00958}00958                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}Unknown type \%x\(\backslash\)n"{}}, type);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00959}00959                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00960}00960         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00961}00961 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00962}00962         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00963}00963 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00964}00964 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00965}00965 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00966}\mbox{\hyperlink{uhso_8c_a5e677d16d831d079196276e4b6d01545}{00966}} \mbox{\hyperlink{uhso_8c_a5e677d16d831d079196276e4b6d01545}{uhso\_radio\_ctrl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc, \textcolor{keywordtype}{int} onoff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00967}00967 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00968}00968         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00969}00969         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00970}00970 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00971}00971         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a56a909dafdad69544b30824d43d4cf48}{UT\_VENDOR}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00972}00972         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = onoff ? 0x82 : 0x81;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00973}00973         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00974}00974         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00975}00975         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00976}00976 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00977}00977         uerr = \mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}}, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00978}00978         \textcolor{keywordflow}{if} (uerr != 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00979}00979                 device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}, \textcolor{stringliteral}{"{}usbd\_do\_request\_flags failed: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00980}00980                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00981}00981                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00982}00982         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00983}00983         \textcolor{keywordflow}{return} (onoff);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00984}00984 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00985}00985 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00986}00986 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00987}\mbox{\hyperlink{uhso_8c_a2fc4b2d211eecd56eb14b166d4649f13}{00987}} \mbox{\hyperlink{uhso_8c_a2fc4b2d211eecd56eb14b166d4649f13}{uhso\_radio\_sysctl}}(SYSCTL\_HANDLER\_ARGS)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00988}00988 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00989}00989         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = arg1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00990}00990         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}, radio;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00991}00991 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00992}00992         radio = sc-\/>\mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{sc\_radio}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00993}00993         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = sysctl\_handle\_int(oidp, \&radio, 0, \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00994}00994         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00995}00995                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00996}00996         \textcolor{keywordflow}{if} (radio != sc-\/>\mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{sc\_radio}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00997}00997                 radio = radio != 0 ? 1 : 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00998}00998                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uhso_8c_a5e677d16d831d079196276e4b6d01545}{uhso\_radio\_ctrl}}(sc, radio);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l00999}00999                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != -\/1)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01000}01000                         sc-\/>\mbox{\hyperlink{structuhso__softc_a1b23bd5f754398d826a42bd695d716a0}{sc\_radio}} = radio;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01001}01001                         }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01002}01002         \}       }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01003}01003         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01004}01004 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01005}01005 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01006}01006 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01007}01007 \textcolor{comment}{ * Expands allocated memory to fit an additional TTY.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01008}01008 \textcolor{comment}{ * Two arrays are kept with matching indexes, one for ucom and one}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01009}01009 \textcolor{comment}{ * for our private data.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01010}01010 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01011}01011 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01012}\mbox{\hyperlink{uhso_8c_a89a761e8104c1e051689a392b99e4ab2}{01012}} \mbox{\hyperlink{uhso_8c_a89a761e8104c1e051689a392b99e4ab2}{uhso\_alloc\_tty}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01013}01013 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01014}01014 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01015}01015         sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}++;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01016}01016         sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}} = reallocf(sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__tty}{uhso\_tty}}) * sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01017}01017             M\_USBDEV, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01018}01018         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}} == NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01019}01019                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01020}01020 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01021}01021         sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}} = reallocf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01022}01022             \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}}) * sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}}, M\_USBDEV, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01023}01023         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}} == NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01024}01024                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01025}01025 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01026}01026         sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} -\/ 1].\mbox{\hyperlink{structuhso__tty_aa9e331f72dcdfbee580ef21fa06ab7ca}{ht\_sc}} = sc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01027}01027 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01028}01028         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Allocated TTY \%d\(\backslash\)n"{}}, sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} -\/ 1);      }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01029}01029         \textcolor{keywordflow}{return} (sc-\/>\mbox{\hyperlink{structuhso__softc_ac45e0d45b23ccb103b06f73b453c27ab}{sc\_ttys}} -\/ 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01030}01030 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01031}01031 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01032}01032 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01033}01033 \textcolor{comment}{ * Attach a multiplexed serial port}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01034}01034 \textcolor{comment}{ * Data is read/written with requests on the default control pipe. An interrupt}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01035}01035 \textcolor{comment}{ * endpoint returns when there is new data to be read.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01036}01036 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01037}01037 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01038}\mbox{\hyperlink{uhso_8c_a4b22977c1e645fef0bacf2b94d7ebffd}{01038}} \mbox{\hyperlink{uhso_8c_a4b22977c1e645fef0bacf2b94d7ebffd}{uhso\_attach\_muxserial}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01039}01039     \textcolor{keywordtype}{int} type)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01040}01040 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01041}01041         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__descriptor}{usb\_descriptor}} *\mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01042}01042         \textcolor{keywordtype}{int} i, port, tty;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01043}01043         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01044}01044 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01045}01045         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01046}01046 \textcolor{comment}{         * The class specific interface (type 0x24) descriptor subtype field}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01047}01047 \textcolor{comment}{         * contains a bitmask that specifies which (and how many) ports that}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01048}01048 \textcolor{comment}{         * are available through this multiplexed serial port.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01049}01049 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01050}01050         \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \mbox{\hyperlink{usb__device_8c_a6cad4345e7f3c057be6067849349d082}{usbd\_find\_descriptor}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}}, NULL,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01051}01051             iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a2a677edcb9663fd7c6cf904d1b40bbd1}{bInterfaceNumber}}, \mbox{\hyperlink{usb_8h_af31cdb4e483ebff028f8286207123844}{UDESC\_CS\_INTERFACE}}, 0xff, 0, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01052}01052         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01053}01053                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}Failed to find UDESC\_CS\_INTERFACE\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01054}01054                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01055}01055         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01056}01056 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01057}01057         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Mux port mask \%x\(\backslash\)n"{}}, \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}-\/>bDescriptorSubtype);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01058}01058         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}-\/>bDescriptorSubtype == 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01059}01059                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01060}01060 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01061}01061         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01062}01062 \textcolor{comment}{         * The bitmask is one octet, loop through the number of}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01063}01063 \textcolor{comment}{         * bits that are set and create a TTY for each.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01064}01064 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01065}01065         \textcolor{keywordflow}{for} (i = 0; i < 8; i++) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01066}01066                 port = (1 << i);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01067}01067                 \textcolor{keywordflow}{if} ((port \& \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}}-\/>bDescriptorSubtype) == port) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01068}01068                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(2, \textcolor{stringliteral}{"{}Found mux port \%x (\%d)\(\backslash\)n"{}}, port, i);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01069}01069                         tty = \mbox{\hyperlink{uhso_8c_a89a761e8104c1e051689a392b99e4ab2}{uhso\_alloc\_tty}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01070}01070                         \textcolor{keywordflow}{if} (tty < 0)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01071}01071                                 \textcolor{keywordflow}{return} (ENOMEM);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01072}01072                         sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[tty].\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}} = i;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01073}01073                         uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}},       }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01074}01074                             \&sc-\/>\mbox{\hyperlink{structuhso__softc_a08415bdde15a3ba7d5fd3a7a731e0ebd}{sc\_iface\_index}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[tty].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01075}01075                             \mbox{\hyperlink{uhso_8c_a83ead8de6b85b1aff017f5ed54b29841}{uhso\_ctrl\_config}}, \mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa9ee3081e82d60d9111fb7852f9d9e70f}{UHSO\_CTRL\_MAX}}, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01076}01076                         \textcolor{keywordflow}{if} (uerr) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01077}01077                                 device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01078}01078                                     \textcolor{stringliteral}{"{}Failed to setup control pipe: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01079}01079                                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01080}01080                                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01081}01081                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01082}01082                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01083}01083         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01084}01084 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01085}01085         \textcolor{comment}{/* Setup the intr. endpoint */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01086}01086         uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01087}01087             \&iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a2a677edcb9663fd7c6cf904d1b40bbd1}{bInterfaceNumber}}, sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01088}01088             \mbox{\hyperlink{uhso_8c_a507812a9518b66c20c576ca80e927591}{uhso\_mux\_config}}, 1, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01089}01089         \textcolor{keywordflow}{if} (uerr)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01090}01090                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01091}01091 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01092}01092         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01093}01093 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01094}01094 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01095}01095 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01096}01096 \textcolor{comment}{ * Interrupt callback for the multiplexed serial port. Indicates}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01097}01097 \textcolor{comment}{ * which serial port has data waiting.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01098}01098 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01099}01099 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01100}\mbox{\hyperlink{uhso_8c_ae48e27182155173ccb41e59fd0813ae2}{01100}} \mbox{\hyperlink{uhso_8c_a3e86cf726a739ba283db9bf0c0aae037}{uhso\_mux\_intr\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01101}01101 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01102}01102         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01103}01103         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__search}{usb\_page\_search}} res;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01104}01104         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01105}01105         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} i, mux;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01106}01106 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01107}01107         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01108}01108 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01109}01109         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01110}01110         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01111}01111                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01112}01112 \textcolor{comment}{                 * The multiplexed port number can be found at the first byte.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01113}01113 \textcolor{comment}{                 * It contains a bit mask, we transform this in to an integer.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01114}01114 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01115}01115                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01116}01116                 \mbox{\hyperlink{usb__busdma_8c_ab4f9d07714be540b6d002b44b3716bb2}{usbd\_get\_page}}(pc, 0, \&res);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01117}01117 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01118}01118                 i = *((\textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *)res.\mbox{\hyperlink{structusb__page__search_a60cd5ce1bbfbf2d2dec7677b1ba9b01a}{buffer}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01119}01119                 mux = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01120}01120                 \textcolor{keywordflow}{while} (i >>= 1) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01121}01121                         mux++;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01122}01122                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01123}01123 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01124}01124                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}mux port \%d (\%d)\(\backslash\)n"{}}, mux, i);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01125}01125                 \textcolor{keywordflow}{if} (mux > \mbox{\hyperlink{uhso_8c_a8c3d2c93add7419f6f9171f025dfd05d}{UHSO\_MPORT\_TYPE\_NOMAX}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01126}01126                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01127}01127 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01128}01128                 \textcolor{comment}{/* Issue a read for this serial port */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01129}01129                 \mbox{\hyperlink{usb__transfer_8c_a9e8b046b9d903ce4deb7b4ebba3c0e95}{usbd\_xfer\_set\_priv}}(}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01130}01130                     sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[mux].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{UHSO\_CTRL\_READ}}],}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01131}01131                     \&sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[mux]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01132}01132                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[mux].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{UHSO\_CTRL\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01133}01133 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01134}01134                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01135}01135         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01136}01136 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01137}01137                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, \mbox{\hyperlink{usb__transfer_8c_ae34a7cc2f01c6dfb68bca6fd0b72647e}{usbd\_xfer\_max\_len}}(xfer));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01138}01138                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01139}01139                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01140}01140         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01141}01141                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01142}01142                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01143}01143                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01144}01144 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01145}01145                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01146}01146                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01147}01147         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01148}01148 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01149}01149 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01150}01150 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01151}\mbox{\hyperlink{uhso_8c_ae5805a46c4755ee2be75a170fd679727}{01151}} \mbox{\hyperlink{uhso_8c_a22b8332b222b7127e485a4ce297bea60}{uhso\_mux\_read\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01152}01152 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01153}01153         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01154}01154         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01155}01155         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01156}01156         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__tty}{uhso\_tty}} *ht;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01157}01157         \textcolor{keywordtype}{int} actlen, \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01158}01158 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01159}01159         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01160}01160 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01161}01161         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01162}01162 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01163}01163         ht = \mbox{\hyperlink{usb__transfer_8c_a1d9c627eab802e6281cea4de0369afde}{usbd\_xfer\_get\_priv}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01164}01164         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}ht=\%p open=\%d\(\backslash\)n"{}}, ht, ht-\/>\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01165}01165 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01166}01166         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01167}01167         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01168}01168                 \textcolor{comment}{/* Got data, send to ucom */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01169}01169                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01170}01170                 \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} = \mbox{\hyperlink{usb__transfer_8c_a4a41497e9ac637390a5147766c135968}{usbd\_xfer\_frame\_len}}(xfer, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01171}01171 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01172}01172                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}got \%d bytes on mux port \%d\(\backslash\)n"{}}, \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01173}01173                     ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01174}01174                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}} <= 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01175}01175                         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01176}01176                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01177}01177                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01178}01178 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01179}01179                 \textcolor{comment}{/* Deliver data if the TTY is open, discard otherwise */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01180}01180                 \textcolor{keywordflow}{if} (ht-\/>\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01181}01181                         \mbox{\hyperlink{usb__serial_8c_af96494685ba012ad6a1c2e18b783e185}{ucom\_put\_data}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}}], pc, 0, \mbox{\hyperlink{ehci_8h_a8aed22e2c7b283705ec82e0120515618}{len}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01182}01182                 \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01183}01183         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01184}01184 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01185}01185                 memset(\&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, 0, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device__request}{usb\_device\_request}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01186}01186                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a4f2e0216ffe1d8145cd1385e42c9a707}{UT\_READ\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01187}01187                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_ad5e926a29193420ea586a6aff76658d4}{UCDC\_GET\_ENCAPSULATED\_RESPONSE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01188}01188                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01189}01189                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01190}01190                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 1024);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01191}01191 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01192}01192                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01193}01193                 \mbox{\hyperlink{usb__busdma_8c_accb7cd85c3477e50c1ba1b1489226d09}{usbd\_copy\_in}}(pc, 0, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01194}01194 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01195}01195                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01196}01196                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 1, 1024);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01197}01197                 \mbox{\hyperlink{usb__transfer_8c_a10f82b008c3a5311e5210e44beaca014}{usbd\_xfer\_set\_frames}}(xfer, 2);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01198}01198                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01199}01199                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01200}01200         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01201}01201                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01202}01202                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01203}01203                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01204}01204                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01205}01205                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01206}01206         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01207}01207 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01208}01208 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01209}01209 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01210}\mbox{\hyperlink{uhso_8c_a318f9b4bed1f3f7ae181c7adafa537f6}{01210}} \mbox{\hyperlink{uhso_8c_a2db44db12e1d6a59df7fff449cffe21c}{uhso\_mux\_write\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01211}01211 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01212}01212         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01213}01213         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__tty}{uhso\_tty}} *ht;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01214}01214         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01215}01215         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01216}01216         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01217}01217         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__search}{usb\_page\_search}} res;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01218}01218 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01219}01219         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01220}01220 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01221}01221         ht = \mbox{\hyperlink{usb__transfer_8c_a1d9c627eab802e6281cea4de0369afde}{usbd\_xfer\_get\_priv}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01222}01222         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status=\%d, using mux port \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01223}01223             \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01224}01224 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01225}01225         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01226}01226         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01227}01227                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}wrote \%zd data bytes to muxport \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01228}01228                     actlen -\/ \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device__request}{usb\_device\_request}}) ,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01229}01229                     ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01230}01230                 \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01231}01231         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01232}01232 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01233}01233                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01234}01234                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a014a131e1bce5fb84d1788e48a69733f}{ucom\_get\_data}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}}], pc,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01235}01235                     0, 32, \&actlen)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01236}01236                         \mbox{\hyperlink{usb__busdma_8c_ab4f9d07714be540b6d002b44b3716bb2}{usbd\_get\_page}}(pc, 0, \&res);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01237}01237 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01238}01238                         memset(\&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, 0, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device__request}{usb\_device\_request}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01239}01239                         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01240}01240                         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_a0df59475a5395b16cb2fc3d6e55e2bdc}{UCDC\_SEND\_ENCAPSULATED\_COMMAND}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01241}01241                         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01242}01242                         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01243}01243                         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01244}01244 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01245}01245                         pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01246}01246                         \mbox{\hyperlink{usb__busdma_8c_accb7cd85c3477e50c1ba1b1489226d09}{usbd\_copy\_in}}(pc, 0, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01247}01247 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01248}01248                         \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01249}01249                         \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 1, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01250}01250                         \mbox{\hyperlink{usb__transfer_8c_a10f82b008c3a5311e5210e44beaca014}{usbd\_xfer\_set\_frames}}(xfer, 2);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01251}01251 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01252}01252                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}Prepared \%d bytes for transmit "{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01253}01253                             \textcolor{stringliteral}{"{}on muxport \%d\(\backslash\)n"{}}, actlen, ht-\/>\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01254}01254 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01255}01255                         \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01256}01256                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01257}01257                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01258}01258         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01259}01259                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01260}01260                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01261}01261                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01262}01262                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01263}01263                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01264}01264         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01265}01265 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01266}01266 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01267}01267 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01268}\mbox{\hyperlink{uhso_8c_ae863e53d4aedaa2b202757d6348ee15b}{01268}} \mbox{\hyperlink{uhso_8c_ae863e53d4aedaa2b202757d6348ee15b}{uhso\_attach\_bulkserial}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01269}01269     \textcolor{keywordtype}{int} type)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01270}01270 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01271}01271         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01272}01272         \textcolor{keywordtype}{int} tty;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01273}01273 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01274}01274         \textcolor{comment}{/* Try attaching RD/WR/INTR first */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01275}01275         uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01276}01276             \&iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a2a677edcb9663fd7c6cf904d1b40bbd1}{bInterfaceNumber}}, sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01277}01277             \mbox{\hyperlink{uhso_8c_a99e57d82fed2d707dcd33dc67670202b}{uhso\_bs\_config}}, \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{UHSO\_BULK\_ENDPT\_MAX}}, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01278}01278         \textcolor{keywordflow}{if} (uerr) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01279}01279                 \textcolor{comment}{/* Try only RD/WR */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01280}01280                 uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01281}01281                     \&iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a2a677edcb9663fd7c6cf904d1b40bbd1}{bInterfaceNumber}}, sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01282}01282                     \mbox{\hyperlink{uhso_8c_a99e57d82fed2d707dcd33dc67670202b}{uhso\_bs\_config}}, \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{UHSO\_BULK\_ENDPT\_MAX}} -\/ 1, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01283}01283         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01284}01284         \textcolor{keywordflow}{if} (uerr) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01285}01285                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}usbd\_transfer\_setup failed"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01286}01286                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01287}01287         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01288}01288 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01289}01289         tty = \mbox{\hyperlink{uhso_8c_a89a761e8104c1e051689a392b99e4ab2}{uhso\_alloc\_tty}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01290}01290         \textcolor{keywordflow}{if} (tty < 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01291}01291                 \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}, \mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77daf0020b1b30c6c120187dd77fd526b537}{UHSO\_BULK\_ENDPT\_MAX}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01292}01292                 \textcolor{keywordflow}{return} (ENOMEM);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01293}01293         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01294}01294 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01295}01295         sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[tty].\mbox{\hyperlink{structuhso__tty_a1e9b23146a6a7e89595adef001572150}{ht\_muxport}} = -\/1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01296}01296         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01297}01297 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01298}01298 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01299}01299 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01300}\mbox{\hyperlink{uhso_8c_a87fd3036490844e47f75d806ebcb6a79}{01300}} \mbox{\hyperlink{uhso_8c_a643e82afc69b71ed2424285dc3bada28}{uhso\_bs\_read\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01301}01301 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01302}01302         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01303}01303         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01304}01304         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01305}01305 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01306}01306         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01307}01307 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01308}01308         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d, actlen=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01309}01309 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01310}01310         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01311}01311         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01312}01312                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01313}01313                 \mbox{\hyperlink{usb__serial_8c_af96494685ba012ad6a1c2e18b783e185}{ucom\_put\_data}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[0], pc, 0, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01314}01314                 \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01315}01315         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01316}01316 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01317}01317                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, \mbox{\hyperlink{usb__transfer_8c_ae34a7cc2f01c6dfb68bca6fd0b72647e}{usbd\_xfer\_max\_len}}(xfer));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01318}01318                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01319}01319         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01320}01320         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01321}01321                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01322}01322                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01323}01323                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01324}01324                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01325}01325                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01326}01326         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01327}01327 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01328}01328 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01329}01329 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01330}\mbox{\hyperlink{uhso_8c_a931a1ad5fecd2342972bb66dbaf185d9}{01330}} \mbox{\hyperlink{uhso_8c_a8c424f484a5b13fe45f0b149b2b24c88}{uhso\_bs\_write\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01331}01331 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01332}01332         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01333}01333         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01334}01334         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01335}01335 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01336}01336         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01337}01337 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01338}01338         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d, actlen=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01339}01339 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01340}01340         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01341}01341         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01342}01342         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01343}01343 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01344}01344                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01345}01345                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a014a131e1bce5fb84d1788e48a69733f}{ucom\_get\_data}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[0], pc, 0, 8192, \&actlen)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01346}01346                         \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01347}01347                         \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01348}01348                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01349}01349                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01350}01350         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01351}01351         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01352}01352                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01353}01353                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01354}01354                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01355}01355                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01356}01356                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01357}01357         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01358}01358 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01359}01359 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01360}01360 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01361}\mbox{\hyperlink{uhso_8c_a5963dc7ed98230416d86e7972518a23a}{01361}} \mbox{\hyperlink{uhso_8c_a5963dc7ed98230416d86e7972518a23a}{uhso\_bs\_cfg}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01362}01362 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01363}01363         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01364}01364         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01365}01365 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01366}01366         \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01367}01367                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01368}01368 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01369}01369         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01370}01370         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_a7280ec82adcbae23dd6617088338241f}{UCDC\_SET\_CONTROL\_LINE\_STATE}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01371}01371         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01372}01372         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, sc-\/>\mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{sc\_iface\_no}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01373}01373         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01374}01374 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01375}01375         uerr = \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[0], \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, NULL, 0, 1000);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01376}01376         \textcolor{keywordflow}{if} (uerr != 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01377}01377                 device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}, \textcolor{stringliteral}{"{}failed to set ctrl line state to "{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01378}01378                     \textcolor{stringliteral}{"{}0x\%02x: \%s\(\backslash\)n"{}}, sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01379}01379         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01380}01380 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01381}01381 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01382}01382 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01383}\mbox{\hyperlink{uhso_8c_a6e85bf632a6580743eab08305dbff0f1}{01383}} \mbox{\hyperlink{uhso_8c_a857f2d377a3fa7c727c4b007a5e0a0e6}{uhso\_bs\_intr\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01384}01384 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01385}01385         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01386}01386         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01387}01387         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01388}01388         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__notification}{usb\_cdc\_notification}} cdc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01389}01389 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01390}01390         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01391}01391         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d, actlen=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01392}01392 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01393}01393         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01394}01394         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01395}01395                 \textcolor{keywordflow}{if} (actlen < \mbox{\hyperlink{usb__cdc_8h_a55f96fee77fcd074924b3716053e0a2d}{UCDC\_NOTIFICATION\_LENGTH}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01396}01396                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}UCDC notification too short: \%d\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01397}01397                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01398}01398                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01399}01399                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (actlen > (\textcolor{keywordtype}{int})\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__cdc__notification}{usb\_cdc\_notification}})) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01400}01400                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}UCDC notification too large: \%d\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01401}01401                         actlen = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__notification}{usb\_cdc\_notification}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01402}01402                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01403}01403 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01404}01404                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01405}01405                 \mbox{\hyperlink{usb__busdma_8c_af52eece45b7868dbf58386f4c9e4eb9a}{usbd\_copy\_out}}(pc, 0, \&cdc, actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01406}01406 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01407}01407                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__endian_8h_aa3860f9452db3a5d865cc943e2f01829}{UGETW}}(cdc.\mbox{\hyperlink{structusb__cdc__notification_a152dfbfe66643526533cac2bcbec8dc0}{wIndex}}) != sc-\/>\mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{sc\_iface\_no}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01408}01408                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}Interface mismatch, got \%d expected \%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01409}01409                             \mbox{\hyperlink{usb__endian_8h_aa3860f9452db3a5d865cc943e2f01829}{UGETW}}(cdc.\mbox{\hyperlink{structusb__cdc__notification_a152dfbfe66643526533cac2bcbec8dc0}{wIndex}}), sc-\/>\mbox{\hyperlink{structuhso__softc_a3222e128bf94409765529a67573cc59c}{sc\_iface\_no}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01410}01410                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01411}01411                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01412}01412 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01413}01413                 \textcolor{keywordflow}{if} (cdc.\mbox{\hyperlink{structusb__cdc__notification_a956434b04ed592ffd848605ef105aa4b}{bmRequestType}} == \mbox{\hyperlink{usb__cdc_8h_aeeb3b3e13ab188b5882880409a5aee9c}{UCDC\_NOTIFICATION}} \&\&}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01414}01414                     cdc.\mbox{\hyperlink{structusb__cdc__notification_a32918901ab265858379b6966f5af9b35}{bNotification}} == \mbox{\hyperlink{usb__cdc_8h_a577dbc9d5a7dd197a05358461a16ae1e}{UCDC\_N\_SERIAL\_STATE}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01415}01415                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(2, \textcolor{stringliteral}{"{}notify = 0x\%02x\(\backslash\)n"{}}, cdc.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01416}01416 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01417}01417                         sc-\/>\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}} = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01418}01418                         sc-\/>\mbox{\hyperlink{structuhso__softc_ac895fbc3f5aaa46fcf1881e6b0b27e4c}{sc\_lsr}} = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01419}01419                         \textcolor{keywordflow}{if} (cdc.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_ac831e547acd6bb392c12aff51af84624}{UCDC\_N\_SERIAL\_RI}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01420}01420                                 sc-\/>\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}} |= SER\_RI;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01421}01421                         \textcolor{keywordflow}{if} (cdc.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_a8c17c3b28a6826ccc18b7482b82fb71f}{UCDC\_N\_SERIAL\_DSR}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01422}01422                                 sc-\/>\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}} |= SER\_DSR;    }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01423}01423                         \textcolor{keywordflow}{if} (cdc.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_a65bb615bd98c66a111a0a283e85f3e77}{UCDC\_N\_SERIAL\_DCD}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01424}01424                                 sc-\/>\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}} |= SER\_DCD;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01425}01425 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01426}01426                         \mbox{\hyperlink{usb__serial_8c_a0cb07518ed43ec742a628e47a9d97281}{ucom\_status\_change}}(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a0e3da6a3bc2d13da977c4d470c64fd1a}{sc\_ucom}}[0]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01427}01427                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01428}01428         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01429}01429 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01430}01430         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01431}01431                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01432}01432                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01433}01433                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01434}01434                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01435}01435         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01436}01436 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01437}01437 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01438}01438 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01439}\mbox{\hyperlink{uhso_8c_aac8e31ef9e6d257d2957abcd25b4581d}{01439}} \mbox{\hyperlink{uhso_8c_aac8e31ef9e6d257d2957abcd25b4581d}{uhso\_ucom\_cfg\_get\_status}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t *lsr, uint8\_t *msr)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01440}01440 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01441}01441         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01442}01442 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01443}01443         *lsr = sc-\/>\mbox{\hyperlink{structuhso__softc_ac895fbc3f5aaa46fcf1881e6b0b27e4c}{sc\_lsr}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01444}01444         *msr = sc-\/>\mbox{\hyperlink{structuhso__softc_ab3c5d72ef370c547cea025a34fbf450c}{sc\_msr}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01445}01445 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01446}01446 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01447}01447 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01448}\mbox{\hyperlink{uhso_8c_a30a8e5d1b0af00438ee9d6817f78cb21}{01448}} \mbox{\hyperlink{uhso_8c_a30a8e5d1b0af00438ee9d6817f78cb21}{uhso\_ucom\_cfg\_set\_dtr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t onoff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01449}01449 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01450}01450         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01451}01451 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01452}01452         \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01453}01453                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01454}01454 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01455}01455         \textcolor{keywordflow}{if} (onoff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01456}01456                 sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}} |= \mbox{\hyperlink{usb__cdc_8h_a373874c95486fe85d0f9f59ee8e8e302}{UCDC\_LINE\_DTR}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01457}01457         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01458}01458                 sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}} \&= \string~UCDC\_LINE\_DTR;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01459}01459 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01460}01460         \mbox{\hyperlink{uhso_8c_a5963dc7ed98230416d86e7972518a23a}{uhso\_bs\_cfg}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01461}01461 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01462}01462 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01463}01463 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01464}\mbox{\hyperlink{uhso_8c_ace727c9e6f25cea1e4693dd12e013eef}{01464}} \mbox{\hyperlink{uhso_8c_ace727c9e6f25cea1e4693dd12e013eef}{uhso\_ucom\_cfg\_set\_rts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t onoff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01465}01465 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01466}01466         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01467}01467 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01468}01468         \textcolor{keywordflow}{if} (!(\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01469}01469                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01470}01470 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01471}01471         \textcolor{keywordflow}{if} (onoff)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01472}01472                 sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}} |= \mbox{\hyperlink{usb__cdc_8h_a032795f114229b3db0c5881d27b0a63a}{UCDC\_LINE\_RTS}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01473}01473         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01474}01474                 sc-\/>\mbox{\hyperlink{structuhso__softc_a6270c0158800ce8069628e95a8ada5be}{sc\_line}} \&= \string~UCDC\_LINE\_RTS;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01475}01475 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01476}01476         \mbox{\hyperlink{uhso_8c_a5963dc7ed98230416d86e7972518a23a}{uhso\_bs\_cfg}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01477}01477 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01478}01478 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01479}01479 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01480}\mbox{\hyperlink{uhso_8c_af455cd26960a2b7133f56ebe729367f7}{01480}} \mbox{\hyperlink{uhso_8c_af455cd26960a2b7133f56ebe729367f7}{uhso\_ucom\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01481}01481 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01482}01482         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01483}01483 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01484}01484         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}unit=\%d, subunit=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01485}01485             ucom-\/>\mbox{\hyperlink{structucom__softc_a77834a92c9c2d51667f71da91cf7b0fa}{sc\_super}}-\/>\mbox{\hyperlink{structucom__super__softc_a4a076a2915ea4fdec739a16542588aaf}{sc\_unit}}, ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01486}01486 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01487}01487         \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01488}01488                 sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}} = 1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01489}01489                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01490}01490         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01491}01491         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01492}01492                 sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[0].\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}} = 1;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01493}01493                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77dab2ab8c98e77cba966c61f3fb838878c8}{UHSO\_BULK\_ENDPT\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01494}01494                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}}] != NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01495}01495                         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01496}01496         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01497}01497 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01498}01498 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01499}01499 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01500}\mbox{\hyperlink{uhso_8c_a8150c83804f9b832eb26a9faeabd4c45}{01500}} \mbox{\hyperlink{uhso_8c_a8150c83804f9b832eb26a9faeabd4c45}{uhso\_ucom\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01501}01501 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01502}01502 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01503}01503         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01504}01504 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01505}01505         \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01506}01506                 sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}} = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01507}01507                 \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01508}01508                     sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa15d430b04f3f9481ef10c4a0e91b077d}{UHSO\_CTRL\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01509}01509         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01510}01510         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01511}01511                 sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[0].\mbox{\hyperlink{structuhso__tty_a4c1d5042de3f73bab2ce763a0bcf646e}{ht\_open}} = 0;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01512}01512                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77dab2ab8c98e77cba966c61f3fb838878c8}{UHSO\_BULK\_ENDPT\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01513}01513                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}}] != NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01514}01514                         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da48d5982b80652087c0abfffeece23812}{UHSO\_BULK\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01515}01515         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01516}01516 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01517}01517 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01518}01518 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01519}\mbox{\hyperlink{uhso_8c_aa856b20e39b0b84ea615b5ab44a69ce5}{01519}} \mbox{\hyperlink{uhso_8c_aa856b20e39b0b84ea615b5ab44a69ce5}{uhso\_ucom\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01520}01520 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01521}01521         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01522}01522 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01523}01523         \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01524}01524                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}local unit \%d\(\backslash\)n"{}}, ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01525}01525 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01526}01526                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_afa231099d07583c3ed0981e0bb665f55aa97502e0df47e2e101ae6b2ec1427265}{UHSO\_MUX\_ENDPT\_INTR}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01527}01527 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01528}01528                 \mbox{\hyperlink{usb__transfer_8c_a9e8b046b9d903ce4deb7b4ebba3c0e95}{usbd\_xfer\_set\_priv}}(}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01529}01529                     sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{UHSO\_CTRL\_WRITE}}],}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01530}01530                     \&sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01531}01531                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01532}01532                     sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{UHSO\_CTRL\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01533}01533         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01534}01534         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01535}01535                 \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da2112b0269f48830dfe0576210587a756}{UHSO\_BULK\_ENDPT\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01536}01536         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01537}01537 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01538}01538 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01539}01539 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01540}\mbox{\hyperlink{uhso_8c_adf7c2bf118460ac69474ad836a74ae14}{01540}} \mbox{\hyperlink{uhso_8c_adf7c2bf118460ac69474ad836a74ae14}{uhso\_ucom\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01541}01541 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01542}01542         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01543}01543 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01544}01544         \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_a1294b439f88e74252b9ad489ef27f5e7}{UHSO\_IF\_MUX}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01545}01545                 \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01546}01546                     sc-\/>\mbox{\hyperlink{structuhso__softc_a57b5eaa725af1fe1b00e4bf760b54348}{sc\_tty}}[ucom-\/>\mbox{\hyperlink{structucom__softc_aee22e753f57866a76c3956e1ab01775a}{sc\_subunit}}].\mbox{\hyperlink{structuhso__tty_a25cd75e89f4c031d576f79faa48836db}{ht\_xfer}}[\mbox{\hyperlink{uhso_8c_a394b3903fbf00ba2b6243f60689a5a5fa533b7246375918c53e1e2b1a4d0bff2f}{UHSO\_CTRL\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01547}01547         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01548}01548         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{uhso_8c_ad63d9fa81cf88aef052a21c0693378f2}{UHSO\_IFACE\_USB\_TYPE}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a6d5f2d1e37ddba3587b2479eb003e2dc}{sc\_type}}) \& \mbox{\hyperlink{uhso_8c_ae8ce7f50c5561505ef44077f0bf1fa29}{UHSO\_IF\_BULK}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01549}01549                 \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuhso__softc_ad94d00eb25f4051c1b667bdd34385738}{sc\_xfer}}[\mbox{\hyperlink{uhso_8c_a157d5577a5b2f5986037d0d09c7dc77da2112b0269f48830dfe0576210587a756}{UHSO\_BULK\_ENDPT\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01550}01550         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01551}01551 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01552}01552 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01553}01553 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01554}\mbox{\hyperlink{uhso_8c_a42232510caef3ac7a9fe66f466ce6b39}{01554}} \mbox{\hyperlink{uhso_8c_a42232510caef3ac7a9fe66f466ce6b39}{uhso\_attach\_ifnet}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface, \textcolor{keywordtype}{int} type)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01555}01555 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01556}01556         \textcolor{keyword}{struct }ifnet *ifp;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01557}01557         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} uerr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01558}01558         \textcolor{keyword}{struct }sysctl\_ctx\_list *sctx;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01559}01559         \textcolor{keyword}{struct }sysctl\_oid *soid;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01560}01560         \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} devunit;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01561}01561 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01562}01562         uerr = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(sc-\/>\mbox{\hyperlink{structuhso__softc_a1e98b7e0964b58b8814f80938a0d3ec0}{sc\_udev}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01563}01563             \&iface-\/>\mbox{\hyperlink{structusb__interface_aa5cea795ac14467ffdbe70b7f59beaba}{idesc}}-\/>\mbox{\hyperlink{structusb__interface__descriptor_a2a677edcb9663fd7c6cf904d1b40bbd1}{bInterfaceNumber}}, sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01564}01564             \mbox{\hyperlink{uhso_8c_a1dc79dae89fb5a1559af09a21d8c1536}{uhso\_ifnet\_config}}, \mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddad585baa86068f4f5cedf9e0ca010f340}{UHSO\_IFNET\_MAX}}, sc, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01565}01565         \textcolor{keywordflow}{if} (uerr) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01566}01566                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}usbd\_transfer\_setup failed: \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01567}01567                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(uerr));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01568}01568                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01569}01569         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01570}01570 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01571}01571         sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}} = ifp = if\_alloc(IFT\_OTHER);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01572}01572         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01573}01573                 device\_printf(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}, \textcolor{stringliteral}{"{}if\_alloc() failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01574}01574                 \textcolor{keywordflow}{return} (-\/1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01575}01575         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01576}01576 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01577}01577         callout\_init\_mtx(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}}, \&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}}, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01578}01578         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01579}01579         callout\_reset(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}}, 1, \mbox{\hyperlink{uhso_8c_a2352b6f1378089f8148a292f91b27b73}{uhso\_if\_rxflush}}, sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01580}01580         mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01581}01581 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01582}01582         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01583}01583 \textcolor{comment}{         * We create our own unit numbers for ifnet devices because the}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01584}01584 \textcolor{comment}{         * USB interface unit numbers can be at arbitrary positions yielding}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01585}01585 \textcolor{comment}{         * odd looking device names.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01586}01586 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01587}01587         devunit = alloc\_unr(\mbox{\hyperlink{uhso_8c_ab6a55dcce262f905c3d6f547b443b7fb}{uhso\_ifnet\_unit}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01588}01588 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01589}01589         if\_initname(ifp, device\_get\_name(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}}), devunit);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01590}01590         ifp-\/>if\_mtu = \mbox{\hyperlink{uhso_8c_ac2db13fef335e9eeaa7d2f9e46f6911d}{UHSO\_MAX\_MTU}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01591}01591         ifp-\/>if\_ioctl = \mbox{\hyperlink{uhso_8c_a2a04693be63a342d89ba48cc7b48a7bb}{uhso\_if\_ioctl}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01592}01592         ifp-\/>if\_init = \mbox{\hyperlink{uhso_8c_a1a4e9dba5e63e6102ad0e2177e7c2343}{uhso\_if\_init}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01593}01593         ifp-\/>if\_start = \mbox{\hyperlink{uhso_8c_a4c235086061edee06f26ae4bb918b363}{uhso\_if\_start}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01594}01594         ifp-\/>if\_output = \mbox{\hyperlink{uhso_8c_a96fdcfe25173bd0d78f4a90527ba8945}{uhso\_if\_output}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01595}01595         ifp-\/>if\_flags = IFF\_BROADCAST | IFF\_MULTICAST | IFF\_NOARP;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01596}01596         ifp-\/>if\_softc = sc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01597}01597         IFQ\_SET\_MAXLEN(\&ifp-\/>if\_snd, ifqmaxlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01598}01598         ifp-\/>if\_snd.ifq\_drv\_maxlen = ifqmaxlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01599}01599         IFQ\_SET\_READY(\&ifp-\/>if\_snd);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01600}01600 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01601}01601         if\_attach(ifp);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01602}01602         bpfattach(ifp, DLT\_RAW, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01603}01603 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01604}01604         sctx = device\_get\_sysctl\_ctx(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01605}01605         soid = device\_get\_sysctl\_tree(sc-\/>\mbox{\hyperlink{structuhso__softc_a0262e8d2f6d1747e26c050ccb27e8fcc}{sc\_dev}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01606}01606         \textcolor{comment}{/* Unlocked read... */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01607}01607         SYSCTL\_ADD\_STRING(sctx, SYSCTL\_CHILDREN(soid), OID\_AUTO, \textcolor{stringliteral}{"{}netif"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01608}01608             CTLFLAG\_RD, ifp-\/>if\_xname, 0, \textcolor{stringliteral}{"{}Attached network interface"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01609}01609 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01610}01610         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01611}01611 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01612}01612 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01613}01613 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01614}\mbox{\hyperlink{uhso_8c_ac4e59dc97957bb0fc4d52340e7077d55}{01614}} \mbox{\hyperlink{uhso_8c_a98d8c93787f6e80004b62388db5e8522}{uhso\_ifnet\_read\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01615}01615 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01616}01616         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01617}01617         \textcolor{keyword}{struct }mbuf *m; }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01618}01618         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01619}01619         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01620}01620 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01621}01621         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01622}01622 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01623}01623         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status=\%d, actlen=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01624}01624 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01625}01625         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01626}01626         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01627}01627                 \textcolor{keywordflow}{if} (actlen > 0 \&\& (sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}}-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01628}01628                         pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01629}01629                         \textcolor{keywordflow}{if} (mbufq\_full(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{sc\_rxq}}))}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01630}01630                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01631}01631                         m = m\_getcl(M\_NOWAIT, MT\_DATA, M\_PKTHDR);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01632}01632                         \mbox{\hyperlink{usb__busdma_8c_af52eece45b7868dbf58386f4c9e4eb9a}{usbd\_copy\_out}}(pc, 0, mtod(m, uint8\_t *), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01633}01633                         m-\/>m\_pkthdr.len = m-\/>m\_len = actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01634}01634                         \textcolor{comment}{/* Enqueue frame for further processing */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01635}01635                         mbufq\_enqueue(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{sc\_rxq}}, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01636}01636                         \textcolor{keywordflow}{if} (!callout\_pending(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}}) ||}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01637}01637                             !callout\_active(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}})) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01638}01638                                 callout\_schedule(\&sc-\/>\mbox{\hyperlink{structuhso__softc_ace7bd3a13df8c4ca4c7b04f97490f99a}{sc\_c}}, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01639}01639                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01640}01640                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01641}01641         \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01642}01642         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01643}01643 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01644}01644                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, \mbox{\hyperlink{usb__transfer_8c_ae34a7cc2f01c6dfb68bca6fd0b72647e}{usbd\_xfer\_max\_len}}(xfer));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01645}01645                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01646}01646                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01647}01647         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01648}01648                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01649}01649                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01650}01650                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01651}01651                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01652}01652                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01653}01653         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01654}01654 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01655}01655 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01656}01656 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01657}01657 \textcolor{comment}{ * Deferred RX processing, called with mutex locked.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01658}01658 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01659}01659 \textcolor{comment}{ * Each frame we receive might contain several small ip-\/packets as well}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01660}01660 \textcolor{comment}{ * as partial ip-\/packets. We need to separate/assemble them into individual}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01661}01661 \textcolor{comment}{ * packets before sending them to the ip-\/layer.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01662}01662 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01663}01663 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01664}\mbox{\hyperlink{uhso_8c_a2352b6f1378089f8148a292f91b27b73}{01664}} \mbox{\hyperlink{uhso_8c_a2352b6f1378089f8148a292f91b27b73}{uhso\_if\_rxflush}}(\textcolor{keywordtype}{void} *arg)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01665}01665 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01666}01666         \textcolor{keyword}{struct }epoch\_tracker et;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01667}01667         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = arg;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01668}01668         \textcolor{keyword}{struct }ifnet *ifp = sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01669}01669         uint8\_t *cp;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01670}01670         \textcolor{keyword}{struct }mbuf *m, *m0, *mwait;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01671}01671         \textcolor{keyword}{struct }ip *ip;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01672}01672 \textcolor{preprocessor}{\#ifdef INET6}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01673}01673         \textcolor{keyword}{struct }ip6\_hdr *ip6;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01674}01674 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01675}01675         uint16\_t iplen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01676}01676         \textcolor{keywordtype}{int} isr;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01677}01677 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01678}01678         m = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01679}01679         mwait = sc-\/>\mbox{\hyperlink{structuhso__softc_ab6978d5ba943c353cf2311cea3fe4bfc}{sc\_mwait}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01680}01680         NET\_EPOCH\_ENTER(et);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01681}01681         \textcolor{keywordflow}{for} (;;) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01682}01682                 \textcolor{keywordflow}{if} (m == NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01683}01683                         \textcolor{keywordflow}{if} ((m = mbufq\_dequeue(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a584f4193914b185edbea3b45bb788624}{sc\_rxq}})) == NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01684}01684                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01685}01685                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}dequeue m=\%p, len=\%d\(\backslash\)n"{}}, m, m-\/>m\_len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01686}01686                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01687}01687                 mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01688}01688 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01689}01689                 \textcolor{comment}{/* Do we have a partial packet waiting? */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01690}01690                 \textcolor{keywordflow}{if} (mwait != NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01691}01691                         m0 = mwait;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01692}01692                         mwait = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01693}01693 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01694}01694                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}partial m0=\%p(\%d), concat w/ m=\%p(\%d)\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01695}01695                             m0, m0-\/>m\_len, m, m-\/>m\_len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01696}01696 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01697}01697                         m\_catpkt(m0, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01698}01698                         m = m\_pullup(m0, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} ip));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01699}01699                         \textcolor{keywordflow}{if} (m == NULL) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01700}01700                                 if\_inc\_counter(ifp, IFCOUNTER\_IERRORS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01701}01701                                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}m\_pullup failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01702}01702                                 mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01703}01703                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01704}01704                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01705}01705                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}Constructed mbuf=\%p, len=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01706}01706                             m, m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01707}01707                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01708}01708 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01709}01709                 cp = mtod(m, uint8\_t *);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01710}01710                 ip = (\textcolor{keyword}{struct }ip *)cp;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01711}01711 \textcolor{preprocessor}{\#ifdef INET6}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01712}01712                 ip6 = (\textcolor{keyword}{struct }ip6\_hdr *)cp;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01713}01713 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01714}01714 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01715}01715                 \textcolor{comment}{/* Check for IPv4 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01716}01716                 \textcolor{keywordflow}{if} (ip-\/>ip\_v == IPVERSION) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01717}01717                         iplen = htons(ip-\/>ip\_len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01718}01718                         isr = NETISR\_IP;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01719}01719                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01720}01720 \textcolor{preprocessor}{\#ifdef INET6}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01721}01721                 \textcolor{comment}{/* Check for IPv6 */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01722}01722                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((ip6-\/>ip6\_vfc \& IPV6\_VERSION\_MASK) == IPV6\_VERSION) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01723}01723                         iplen = htons(ip6-\/>ip6\_plen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01724}01724                         isr = NETISR\_IPV6;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01725}01725                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01726}01726 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01727}01727                 \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01728}01728                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}got unexpected ip version \%d, "{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01729}01729                             \textcolor{stringliteral}{"{}m=\%p, len=\%d\(\backslash\)n"{}}, (*cp \& 0xf0) >> 4, m, m-\/>m\_len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01730}01730                         if\_inc\_counter(ifp, IFCOUNTER\_IERRORS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01731}01731                         \mbox{\hyperlink{uhso_8c_a5fa860c43886be360ebdfded17d01ccd}{UHSO\_HEXDUMP}}(cp, 4);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01732}01732                         m\_freem(m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01733}01733                         m = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01734}01734                         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01735}01735                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01736}01736                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01737}01737 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01738}01738                 \textcolor{keywordflow}{if} (iplen == 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01739}01739                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}Zero IP length\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01740}01740                         if\_inc\_counter(ifp, IFCOUNTER\_IERRORS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01741}01741                         m\_freem(m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01742}01742                         m = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01743}01743                         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01744}01744                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01745}01745                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01746}01746 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01747}01747                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}m=\%p, len=\%d, cp=\%p, iplen=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01748}01748                     m, m-\/>m\_pkthdr.len, cp, iplen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01749}01749 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01750}01750                 m0 = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01751}01751 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01752}01752                 \textcolor{comment}{/* More IP packets in this mbuf */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01753}01753                 \textcolor{keywordflow}{if} (iplen < m-\/>m\_pkthdr.len) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01754}01754                         m0 = m;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01755}01755 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01756}01756                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01757}01757 \textcolor{comment}{                         * Allocate a new mbuf for this IP packet and}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01758}01758 \textcolor{comment}{                         * copy the IP-\/packet into it.}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01759}01759 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01760}01760                         m = m\_getcl(M\_WAITOK, MT\_DATA, M\_PKTHDR);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01761}01761                         memcpy(mtod(m, uint8\_t *), mtod(m0, uint8\_t *), iplen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01762}01762                         m-\/>m\_pkthdr.len = m-\/>m\_len = iplen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01763}01763 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01764}01764                         \textcolor{comment}{/* Adjust the size of the original mbuf */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01765}01765                         m\_adj(m0, iplen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01766}01766                         m0 = m\_defrag(m0, M\_WAITOK);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01767}01767 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01768}01768                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}New mbuf=\%p, len=\%d/\%d, m0=\%p, "{}}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01769}01769                             \textcolor{stringliteral}{"{}m0\_len=\%d/\%d\(\backslash\)n"{}}, m, m-\/>m\_pkthdr.len, m-\/>m\_len,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01770}01770                             m0, m0-\/>m\_pkthdr.len, m0-\/>m\_len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01771}01771                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01772}01772                 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (iplen > m-\/>m\_pkthdr.len) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01773}01773                         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}Deferred mbuf=\%p, len=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01774}01774                             m, m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01775}01775                         mwait = m;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01776}01776                         m = NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01777}01777                         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01778}01778                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01779}01779                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01780}01780 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01781}01781                 if\_inc\_counter(ifp, IFCOUNTER\_IPACKETS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01782}01782                 m-\/>m\_pkthdr.rcvif = ifp;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01783}01783 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01784}01784                 \textcolor{comment}{/* Dispatch to IP layer */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01785}01785                 BPF\_MTAP(sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}}, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01786}01786                 M\_SETFIB(m, ifp-\/>if\_fib);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01787}01787                 netisr\_dispatch(isr, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01788}01788                 m = m0 != NULL ? m0 : NULL;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01789}01789                 mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01790}01790         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01791}01791         NET\_EPOCH\_EXIT(et);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01792}01792         sc-\/>\mbox{\hyperlink{structuhso__softc_ab6978d5ba943c353cf2311cea3fe4bfc}{sc\_mwait}} = mwait;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01793}01793 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01794}01794 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01795}01795 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01796}\mbox{\hyperlink{uhso_8c_a2482d64ed3ee3445a9d981994b43b606}{01796}} \mbox{\hyperlink{uhso_8c_af23428d9c4e47e13aacdec14b34910e9}{uhso\_ifnet\_write\_callback}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *xfer, \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01797}01797 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01798}01798         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01799}01799         \textcolor{keyword}{struct }ifnet *ifp = sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01800}01800         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01801}01801         \textcolor{keyword}{struct }mbuf *m;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01802}01802         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01803}01803 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01804}01804         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01805}01805 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01806}01806         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}status \%d, actlen=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer), actlen);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01807}01807 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01808}01808         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01809}01809         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01810}01810                 if\_inc\_counter(ifp, IFCOUNTER\_OPACKETS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01811}01811                 ifp-\/>if\_drv\_flags \&= \string~IFF\_DRV\_OACTIVE;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01812}01812         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01813}01813 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01814}01814                 IFQ\_DRV\_DEQUEUE(\&ifp-\/>if\_snd, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01815}01815                 \textcolor{keywordflow}{if} (m == NULL)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01816}01816                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01817}01817 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01818}01818                 ifp-\/>if\_drv\_flags |= IFF\_DRV\_OACTIVE;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01819}01819 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01820}01820                 \textcolor{keywordflow}{if} (m-\/>m\_pkthdr.len > MCLBYTES)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01821}01821                         m-\/>m\_pkthdr.len = MCLBYTES;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01822}01822 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01823}01823                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01824}01824                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01825}01825                 \mbox{\hyperlink{usbdi_8h_a9696aa8bcb25b1adcf45e8387a13897a}{usbd\_m\_copy\_in}}(pc, 0, m, 0, m-\/>m\_pkthdr.len);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01826}01826                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01827}01827 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01828}01828                 BPF\_MTAP(ifp, m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01829}01829                 m\_freem(m);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01830}01830                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01831}01831         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01832}01832                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(0, \textcolor{stringliteral}{"{}error: \%s\(\backslash\)n"{}}, \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01833}01833                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} == \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}})}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01834}01834                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01835}01835                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01836}01836                 \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01837}01837         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01838}01838 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01839}01839 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01840}01840 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01841}\mbox{\hyperlink{uhso_8c_a2a04693be63a342d89ba48cc7b48a7bb}{01841}} \mbox{\hyperlink{uhso_8c_a2a04693be63a342d89ba48cc7b48a7bb}{uhso\_if\_ioctl}}(\textcolor{keyword}{struct} ifnet *ifp, u\_long cmd, caddr\_t data)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01842}01842 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01843}01843         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01844}01844 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01845}01845         sc = ifp-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01846}01846 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01847}01847         \textcolor{keywordflow}{switch} (cmd) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01848}01848         \textcolor{keywordflow}{case} SIOCSIFFLAGS:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01849}01849                 \textcolor{keywordflow}{if} (ifp-\/>if\_flags \& IFF\_UP) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01850}01850                         \textcolor{keywordflow}{if} (!(ifp-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING)) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01851}01851                                 \mbox{\hyperlink{uhso_8c_a1a4e9dba5e63e6102ad0e2177e7c2343}{uhso\_if\_init}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01852}01852                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01853}01853                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01854}01854                 \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01855}01855                         \textcolor{keywordflow}{if} (ifp-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01856}01856                                 mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01857}01857                                 \mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{uhso\_if\_stop}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01858}01858                                 mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01859}01859                         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01860}01860                 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01861}01861                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01862}01862         \textcolor{keywordflow}{case} SIOCSIFADDR:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01863}01863         \textcolor{keywordflow}{case} SIOCADDMULTI:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01864}01864         \textcolor{keywordflow}{case} SIOCDELMULTI:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01865}01865                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01866}01866         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01867}01867                 \textcolor{keywordflow}{return} (EINVAL);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01868}01868         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01869}01869         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01870}01870 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01871}01871 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01872}01872 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01873}\mbox{\hyperlink{uhso_8c_a1a4e9dba5e63e6102ad0e2177e7c2343}{01873}} \mbox{\hyperlink{uhso_8c_a1a4e9dba5e63e6102ad0e2177e7c2343}{uhso\_if\_init}}(\textcolor{keywordtype}{void} *priv)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01874}01874 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01875}01875         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = priv;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01876}01876         \textcolor{keyword}{struct }ifnet *ifp = sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01877}01877 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01878}01878         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01879}01879         \mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{uhso\_if\_stop}}(sc);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01880}01880         ifp = sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01881}01881         ifp-\/>if\_flags |= IFF\_UP;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01882}01882         ifp-\/>if\_drv\_flags |= IFF\_DRV\_RUNNING;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01883}01883         mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01884}01884 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01885}01885         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(2, \textcolor{stringliteral}{"{}ifnet initialized\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01886}01886 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01887}01887 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01888}01888 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01889}\mbox{\hyperlink{uhso_8c_a96fdcfe25173bd0d78f4a90527ba8945}{01889}} \mbox{\hyperlink{uhso_8c_a96fdcfe25173bd0d78f4a90527ba8945}{uhso\_if\_output}}(\textcolor{keyword}{struct} ifnet *ifp, \textcolor{keyword}{struct} mbuf *m0, \textcolor{keyword}{const} \textcolor{keyword}{struct} sockaddr *dst,}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01890}01890     \textcolor{keyword}{struct} route *ro)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01891}01891 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01892}01892         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01893}01893 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01894}01894         \textcolor{comment}{/* Only IPv4/6 support */}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01895}01895         \textcolor{keywordflow}{if} (dst-\/>sa\_family != AF\_INET}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01896}01896 \#ifdef INET6}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01897}01897            \&\& dst-\/>sa\_family != AF\_INET6}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01898}01898 \#endif}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01899}01899          ) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01900}01900                 \textcolor{keywordflow}{return} (EAFNOSUPPORT);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01901}01901         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01902}01902 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01903}01903         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = (ifp-\/>if\_transmit)(ifp, m0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01904}01904         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01905}01905                 if\_inc\_counter(ifp, IFCOUNTER\_OERRORS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01906}01906                 \textcolor{keywordflow}{return} (ENOBUFS);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01907}01907         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01908}01908         if\_inc\_counter(ifp, IFCOUNTER\_OPACKETS, 1);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01909}01909         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01910}01910 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01911}01911 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01912}01912 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01913}\mbox{\hyperlink{uhso_8c_a4c235086061edee06f26ae4bb918b363}{01913}} \mbox{\hyperlink{uhso_8c_a4c235086061edee06f26ae4bb918b363}{uhso\_if\_start}}(\textcolor{keyword}{struct} ifnet *ifp)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01914}01914 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01915}01915         \textcolor{keyword}{struct }\mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc = ifp-\/>if\_softc;}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01916}01916 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01917}01917         \textcolor{keywordflow}{if} ((ifp-\/>if\_drv\_flags \& IFF\_DRV\_RUNNING) == 0) \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01918}01918                 \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(1, \textcolor{stringliteral}{"{}Not running\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01919}01919                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01920}01920         \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01921}01921 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01922}01922         mtx\_lock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01923}01923         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}[\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87edda19df6ee557b39f07fdd06929a16b44d5}{UHSO\_IFNET\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01924}01924         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}[\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddaafe46fd1952cbc58cc5ee6315cf92004}{UHSO\_IFNET\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01925}01925         mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structuhso__softc_a2ee3974e13fcfbbbf171ec47bef848c5}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01926}01926         \mbox{\hyperlink{uhso_8c_ab1856d30b7aea4fee1c8cba424cc9666}{UHSO\_DPRINTF}}(3, \textcolor{stringliteral}{"{}interface started\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01927}01927 \}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01928}01928 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01929}01929 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01930}\mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{01930}} \mbox{\hyperlink{uhso_8c_a9f78c369b758cd59bfc2d1f1e4007e2b}{uhso\_if\_stop}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuhso__softc}{uhso\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01931}01931 \{}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01932}01932 }
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01933}01933         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}[\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87edda19df6ee557b39f07fdd06929a16b44d5}{UHSO\_IFNET\_READ}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01934}01934         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuhso__softc_abb76729e2446177260dce2c0fed189fc}{sc\_if\_xfer}}[\mbox{\hyperlink{uhso_8c_ac205be2172292384dd687b5471a87eddaafe46fd1952cbc58cc5ee6315cf92004}{UHSO\_IFNET\_WRITE}}]);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01935}01935         sc-\/>\mbox{\hyperlink{structuhso__softc_a3b001b5166b9f3e41e6e544e4cd65ae9}{sc\_ifp}}-\/>if\_drv\_flags \&= \string~(IFF\_DRV\_RUNNING | IFF\_DRV\_OACTIVE);}
\DoxyCodeLine{\Hypertarget{uhso_8c_source_l01936}01936 \}}

\end{DoxyCode}
