\hypertarget{umodem_8c_source}{}\doxysection{umodem.\+c}
\label{umodem_8c_source}\index{dev/usb/serial/umodem.c@{dev/usb/serial/umodem.c}}
\mbox{\hyperlink{umodem_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00001}00001 \textcolor{comment}{/*      \$NetBSD: umodem.c,v 1.45 2002/09/23 05:51:23 simonb Exp \$       */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00002}00002 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00003}00003 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00004}\mbox{\hyperlink{umodem_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00004}} \mbox{\hyperlink{umodem_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00005}00005 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00006}00006 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00007}00007 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD AND BSD-\/2-\/Clause-\/NetBSD}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00008}00008 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00009}00009 \textcolor{comment}{ * Copyright (c) 2003 M. Warner Losh <imp@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00010}00010 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00011}00011 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00012}00012 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00013}00013 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00014}00014 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00015}00015 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00016}00016 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00017}00017 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00018}00018 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00019}00019 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00020}00020 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00021}00021 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00022}00022 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00023}00023 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00024}00024 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00025}00025 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00026}00026 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00027}00027 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00028}00028 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00029}00029 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00030}00030 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00031}00031 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00032}00032 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00033}00033 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00034}00034 \textcolor{comment}{ * Copyright (c) 1998 The NetBSD Foundation, Inc.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00035}00035 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00036}00036 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00037}00037 \textcolor{comment}{ * This code is derived from software contributed to The NetBSD Foundation}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00038}00038 \textcolor{comment}{ * by Lennart Augustsson (lennart@augustsson.net) at}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00039}00039 \textcolor{comment}{ * Carlstedt Research \& Technology.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00040}00040 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00041}00041 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00042}00042 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00043}00043 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00044}00044 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00045}00045 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00046}00046 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00047}00047 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00048}00048 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00049}00049 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00050}00050 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00051}00051 \textcolor{comment}{ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00052}00052 \textcolor{comment}{ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00053}00053 \textcolor{comment}{ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00054}00054 \textcolor{comment}{ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00055}00055 \textcolor{comment}{ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00056}00056 \textcolor{comment}{ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00057}00057 \textcolor{comment}{ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00058}00058 \textcolor{comment}{ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00059}00059 \textcolor{comment}{ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00060}00060 \textcolor{comment}{ * POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00061}00061 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00063}00063 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00064}00064 \textcolor{comment}{ * Comm Class spec:  http://www.usb.org/developers/devclass\_docs/usbccs10.pdf}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00065}00065 \textcolor{comment}{ *                   http://www.usb.org/developers/devclass\_docs/usbcdc11.pdf}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00066}00066 \textcolor{comment}{ *                   http://www.usb.org/developers/devclass\_docs/cdc\_wmc10.zip}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00067}00067 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00068}00068 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00069}00069 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00070}00070 \textcolor{comment}{ * TODO:}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00071}00071 \textcolor{comment}{ * -\/ Add error recovery in various places; the big problem is what}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00072}00072 \textcolor{comment}{ *   to do in a callback if there is an error.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00073}00073 \textcolor{comment}{ * -\/ Implement a Call Device for modems without multiplexed commands.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00074}00074 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00075}00075 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00077}00077 \textcolor{preprocessor}{\#include <sys/stdint.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00078}00078 \textcolor{preprocessor}{\#include <sys/stddef.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00079}00079 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00080}00080 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00081}00081 \textcolor{preprocessor}{\#include <sys/types.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00082}00082 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00083}00083 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00084}00084 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00085}00085 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00086}00086 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00087}00087 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00088}00088 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00089}00089 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00090}00090 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00091}00091 \textcolor{preprocessor}{\#include <sys/unistd.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00092}00092 \textcolor{preprocessor}{\#include <sys/callout.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00093}00093 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00094}00094 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00096}00096 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00097}00097 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00098}00098 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi__util_8h}{dev/usb/usbdi\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00099}00099 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbhid_8h}{dev/usb/usbhid.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00100}00100 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__cdc_8h}{dev/usb/usb\_cdc.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00101}00101 \textcolor{preprocessor}{\#include "{}usbdevs.h"{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00102}00102 \textcolor{preprocessor}{\#include "{}usb\_if.h"{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00103}00103 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00104}00104 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__ioctl_8h}{dev/usb/usb\_ioctl.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00105}00105 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00106}\mbox{\hyperlink{umodem_8c_a927dd6f59caf10a2991dfb564bcbb1e1}{00106}} \textcolor{preprocessor}{\#define USB\_DEBUG\_VAR umodem\_debug}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00107}00107 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__debug_8h}{dev/usb/usb\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00108}00108 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__process_8h}{dev/usb/usb\_process.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00109}00109 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__quirk_8h}{dev/usb/quirk/usb\_quirk.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00111}00111 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__serial_8h}{dev/usb/serial/usb\_serial.h}}>}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00113}00113 \textcolor{preprocessor}{\#ifdef USB\_DEBUG}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00114}00114 \textcolor{keyword}{static} \textcolor{keywordtype}{int} umodem\_debug = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00115}00115 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00116}00116 \textcolor{keyword}{static} \mbox{\hyperlink{dwc__otg_8c_a58e125bcf985ce2333baef42f97b33b3}{SYSCTL\_NODE}}(\_hw\_usb, OID\_AUTO, umodem, CTLFLAG\_RW | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00117}00117     \textcolor{stringliteral}{"{}USB umodem"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00118}00118 \mbox{\hyperlink{dwc__otg_8c_a83d020f0b15dc2783f3f1a6966c75e36}{SYSCTL\_INT}}(\_hw\_usb\_umodem, OID\_AUTO, \mbox{\hyperlink{cfumass_8c_ac3e1795766a80ec63b157951b4b9a7d4}{debug}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00119}00119     \&umodem\_debug, 0, \textcolor{stringliteral}{"{}Debug level"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00120}00120 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00121}00121 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00122}\mbox{\hyperlink{umodem_8c_a4851e1c262b7e4937af0c029789fa9b2}{00122}} \textcolor{keyword}{static} \textcolor{keyword}{const} \mbox{\hyperlink{usbdi_8h_af64e69291bcbb3b3649ec36583d47c87}{STRUCT\_USB\_DUAL\_ID}} \mbox{\hyperlink{umodem_8c_a4851e1c262b7e4937af0c029789fa9b2}{umodem\_dual\_devs}}[] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00123}00123         \textcolor{comment}{/* Generic Modem class match */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00124}00124         \{\mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a7ee8a2a46bb5ed7942883b57b7d866a1}{UICLASS\_CDC}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00125}00125                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(\mbox{\hyperlink{usb_8h_ace94ac5934fa50385aae1f446dd2ea69}{UISUBCLASS\_ABSTRACT\_CONTROL\_MODEL}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00126}00126                 \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(\mbox{\hyperlink{usb_8h_aa1934756964859731c3e44db069bce7a}{UIPROTO\_CDC\_AT}})\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00127}00127         \{\mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a7ee8a2a46bb5ed7942883b57b7d866a1}{UICLASS\_CDC}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00128}00128                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(\mbox{\hyperlink{usb_8h_ace94ac5934fa50385aae1f446dd2ea69}{UISUBCLASS\_ABSTRACT\_CONTROL\_MODEL}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00129}00129                 \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(\mbox{\hyperlink{usb_8h_a0102f19193b60623a80c804c7d66c344}{UIPROTO\_CDC\_NONE}})\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00130}00130 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00131}00131 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00132}\mbox{\hyperlink{umodem_8c_af4743736359dccaaf6c053d97b8a8a5f}{00132}} \textcolor{keyword}{static} \textcolor{keyword}{const} \mbox{\hyperlink{usbdi_8h_acf836fd8d6349b66a31f45420728da8d}{STRUCT\_USB\_HOST\_ID}} \mbox{\hyperlink{umodem_8c_af4743736359dccaaf6c053d97b8a8a5f}{umodem\_host\_devs}}[] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00133}00133         \textcolor{comment}{/* Huawei Modem class match */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00134}00134         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00135}00135                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x01)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00136}00136         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00137}00137                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x02)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00138}00138         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00139}00139                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x10)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00140}00140         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00141}00141                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x12)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00142}00142         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00143}00143                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x61)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00144}00144         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a62544a681ab6641be1497118649e4c25}{UICLASS\_VENDOR}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00145}00145                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0x02), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0x62)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00146}00146         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI),\mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(\mbox{\hyperlink{usb_8h_a7ee8a2a46bb5ed7942883b57b7d866a1}{UICLASS\_CDC}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00147}00147                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(\mbox{\hyperlink{usb_8h_ace94ac5934fa50385aae1f446dd2ea69}{UISUBCLASS\_ABSTRACT\_CONTROL\_MODEL}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00148}00148                 \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0xFF)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00149}00149         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_HUAWEI), \mbox{\hyperlink{usbdi_8h_a74c0bae2d55b3014e0583ec8ea4d5dc0}{USB\_IFACE\_CLASS}}(0xFF),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00150}00150                 \mbox{\hyperlink{usbdi_8h_a15ff0bc986f953c98128bd03e394b571}{USB\_IFACE\_SUBCLASS}}(0xF), \mbox{\hyperlink{usbdi_8h_a99fe00139ae050549bc725ebd3c0d5cc}{USB\_IFACE\_PROTOCOL}}(0xFF)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00151}00151         \textcolor{comment}{/* Kyocera AH-\/K3001V */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00152}00152         \{\mbox{\hyperlink{usbdi_8h_acdab3edd999014815e8baeb9b33e9071}{USB\_VPI}}(USB\_VENDOR\_KYOCERA, USB\_PRODUCT\_KYOCERA\_AHK3001V, 1)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00153}00153         \{\mbox{\hyperlink{usbdi_8h_acdab3edd999014815e8baeb9b33e9071}{USB\_VPI}}(USB\_VENDOR\_SIERRA, USB\_PRODUCT\_SIERRA\_MC5720, 1)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00154}00154         \{\mbox{\hyperlink{usbdi_8h_acdab3edd999014815e8baeb9b33e9071}{USB\_VPI}}(USB\_VENDOR\_CURITEL, USB\_PRODUCT\_CURITEL\_PC5740, 1)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00155}00155         \textcolor{comment}{/* Winbond */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00156}00156         \{\mbox{\hyperlink{usbdi_8h_ab5d541c01afa5eb1a62de5dc85273298}{USB\_VENDOR}}(USB\_VENDOR\_WINBOND), \mbox{\hyperlink{usbdi_8h_a3a6e3012f2ff278a6c7a19747b9f1650}{USB\_PRODUCT}}(USB\_PRODUCT\_WINBOND\_CDC)\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00157}00157 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00158}00158 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00159}00159 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00160}00160 \textcolor{comment}{ * As speeds for umodem devices increase, these numbers will need to}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00161}00161 \textcolor{comment}{ * be increased. They should be good for G3 speeds and below.}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00162}00162 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00163}00163 \textcolor{comment}{ * TODO: The TTY buffers should be increased!}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00164}00164 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00165}\mbox{\hyperlink{umodem_8c_af621910bb0c23bbb1279c708bd053fe1}{00165}} \textcolor{preprocessor}{\#define UMODEM\_BUF\_SIZE 1024}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00167}00167 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00168}\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{00168}}         \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{UMODEM\_BULK\_WR}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00169}\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{00169}}         \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{UMODEM\_BULK\_RD}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00170}\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a7dbf79ad8e33baca79f9d98b41c0fda3}{00170}}         \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a7dbf79ad8e33baca79f9d98b41c0fda3}{UMODEM\_INTR\_WR}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00171}\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a3462e2b95337486b5447f384f9aee375}{00171}}         \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a3462e2b95337486b5447f384f9aee375}{UMODEM\_INTR\_RD}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00172}\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{00172}}         \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00173}00173 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00175}\mbox{\hyperlink{umodem_8c_a7312420ca7775df64dd249dc51cee54d}{00175}} \textcolor{preprocessor}{\#define UMODEM\_MODVER                   1       }\textcolor{comment}{/* module version */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00176}00176 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00177}\mbox{\hyperlink{structumodem__softc}{00177}} \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00178}\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{00178}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__super__softc}{ucom\_super\_softc}} \mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00179}\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{00179}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__softc}{ucom\_softc}} \mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00180}00180 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00181}\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{00181}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}}];}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00182}\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{00182}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00183}\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{00183}}         \textcolor{keyword}{struct }mtx \mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00184}00184 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00185}\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{00185}}         uint16\_t \mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00186}00186 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00187}\mbox{\hyperlink{structumodem__softc_a7d756adc1ab92b8ac41067c15b22dfea}{00187}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a7d756adc1ab92b8ac41067c15b22dfea}{sc\_lsr}};                   \textcolor{comment}{/* local status register */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00188}\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{00188}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}};                   \textcolor{comment}{/* modem status register */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00189}\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{00189}}         uint8\_t \mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00190}\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{00190}}         uint8\_t \mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00191}\mbox{\hyperlink{structumodem__softc_aa2b8062964dcfd3dd8c0ae146a3f3158}{00191}}         uint8\_t \mbox{\hyperlink{structumodem__softc_aa2b8062964dcfd3dd8c0ae146a3f3158}{sc\_iface\_index}}[2];}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00192}\mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{00192}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{sc\_cm\_over\_data}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00193}\mbox{\hyperlink{structumodem__softc_a3ecc340467966ce93db9b8dcac2e647e}{00193}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a3ecc340467966ce93db9b8dcac2e647e}{sc\_cm\_cap}};             \textcolor{comment}{/* CM capabilities */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00194}\mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{00194}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{sc\_acm\_cap}};           \textcolor{comment}{/* ACM capabilities */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00195}\mbox{\hyperlink{structumodem__softc_af624914117e63700944933ac723b0156}{00195}}         uint8\_t \mbox{\hyperlink{structumodem__softc_af624914117e63700944933ac723b0156}{sc\_line\_coding}}[32];       \textcolor{comment}{/* used in USB device mode */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00196}\mbox{\hyperlink{structumodem__softc_a0836018f2a407ce899aa9ca35c2f9ece}{00196}}         uint8\_t \mbox{\hyperlink{structumodem__softc_a0836018f2a407ce899aa9ca35c2f9ece}{sc\_abstract\_state}}[32]; \textcolor{comment}{/* used in USB device mode */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00197}00197 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00198}00198 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00199}\mbox{\hyperlink{umodem_8c_a4f1c8881b927e1d677207bf0a57a45ae}{00199}} \textcolor{keyword}{static} device\_probe\_t \mbox{\hyperlink{umodem_8c_a4f1c8881b927e1d677207bf0a57a45ae}{umodem\_probe}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00200}\mbox{\hyperlink{umodem_8c_a8260d7415a69f8a319c0d6f761784816}{00200}} \textcolor{keyword}{static} device\_attach\_t \mbox{\hyperlink{umodem_8c_a8260d7415a69f8a319c0d6f761784816}{umodem\_attach}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00201}\mbox{\hyperlink{umodem_8c_a89ac9df44f5a591071b56d140edd7aa6}{00201}} \textcolor{keyword}{static} device\_detach\_t \mbox{\hyperlink{umodem_8c_a89ac9df44f5a591071b56d140edd7aa6}{umodem\_detach}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00202}\mbox{\hyperlink{umodem_8c_a72165ba972dafa9b19f45a63052ed769}{00202}} \textcolor{keyword}{static} usb\_handle\_request\_t \mbox{\hyperlink{umodem_8c_a72165ba972dafa9b19f45a63052ed769}{umodem\_handle\_request}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00203}00203 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00204}00204 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{umodem_8c_ac3bca544e058f7323390d69d46f68b9e}{umodem\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00205}00205 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00206}\mbox{\hyperlink{umodem_8c_ac8741afef4bcfec3b7a2880f2aafe674}{00206}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{umodem_8c_ac8741afef4bcfec3b7a2880f2aafe674}{umodem\_intr\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00207}\mbox{\hyperlink{umodem_8c_aaaeb2c6ff8b7d424f388740ec4745534}{00207}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{umodem_8c_aaaeb2c6ff8b7d424f388740ec4745534}{umodem\_intr\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00208}\mbox{\hyperlink{umodem_8c_a1bd45e9812900e75f81d07060c44a364}{00208}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{umodem_8c_a1bd45e9812900e75f81d07060c44a364}{umodem\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00209}\mbox{\hyperlink{umodem_8c_ae9fa59a604623434cdd4b0b21edeea8f}{00209}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{umodem_8c_ae9fa59a604623434cdd4b0b21edeea8f}{umodem\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00210}00210 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00211}00211 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a7ab37ea0f05664c10297223f621c2f76}{umodem\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00212}00212 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a0ad1fda686b465fc51c241983e8e0fde}{umodem\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00213}00213 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a768f675dd8c25eb0e3ab628b1c57a0d9}{umodem\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00214}00214 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_aa4b0c9051304d2ac83a921a7efd27c84}{umodem\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00215}00215 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a3ffbaf21f3016632d08a187f55cd1668}{umodem\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00216}00216 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_ae38407ca7254f3bd0c2122b686fff54d}{umodem\_get\_caps}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *, uint8\_t *, uint8\_t *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00217}00217 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_af26d7682b163671c7f5ce8d5d7bf6057}{umodem\_cfg\_get\_status}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t *,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00218}00218                     uint8\_t *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00219}00219 \textcolor{keyword}{static} \textcolor{keywordtype}{int}      \mbox{\hyperlink{umodem_8c_a3e44afa97272de488b3a5984bb8ae666}{umodem\_pre\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, \textcolor{keyword}{struct} termios *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00220}00220 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a4274784ee61a4221c71f6f981f90c963}{umodem\_cfg\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, \textcolor{keyword}{struct} termios *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00221}00221 \textcolor{keyword}{static} \textcolor{keywordtype}{int}      \mbox{\hyperlink{umodem_8c_a09e1d0f6824d4cd694348e9a193574a2}{umodem\_ioctl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint32\_t, caddr\_t, \textcolor{keywordtype}{int},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00222}00222                     \textcolor{keyword}{struct} thread *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00223}00223 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a08f557bf9cc8b1f7bceffbd7f109a388}{umodem\_cfg\_set\_dtr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00224}00224 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a6e2be7254ddecd49b02f89f2a1d7e449}{umodem\_cfg\_set\_rts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00225}00225 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a0c2e92da009d5b82f80d13c2f9ee608a}{umodem\_cfg\_set\_break}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *, uint8\_t);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00226}00226 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     *\mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{umodem\_get\_desc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *, uint8\_t, uint8\_t);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00227}00227 \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{umodem_8c_a530f336c357cdd7c99e59bc1807da837}{umodem\_set\_comm\_feature}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *, uint8\_t,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00228}00228                     uint16\_t, uint16\_t);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00229}00229 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a8443dd23062cd42966e6d7ff33405f26}{umodem\_poll}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00230}00230 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{umodem_8c_a1be6b9f2b8327bf2e0028c4145c0d79c}{umodem\_find\_data\_iface}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00231}00231                     uint8\_t, uint8\_t *, uint8\_t *);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00232}00232 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00233}\mbox{\hyperlink{umodem_8c_a43c44403e0ffc9d687f3241b3b4d595b}{00233}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{umodem_8c_a43c44403e0ffc9d687f3241b3b4d595b}{umodem\_config}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}}] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00234}00234         [\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{UMODEM\_BULK\_WR}}] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00235}00235                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00236}00236                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00237}00237                 .direction = \mbox{\hyperlink{usb_8h_aba70c1d0c8b6a6cd3452b304d9a981ba}{UE\_DIR\_TX}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00238}00238                 .if\_index = 0,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00239}00239                 .bufsize = \mbox{\hyperlink{umodem_8c_af621910bb0c23bbb1279c708bd053fe1}{UMODEM\_BUF\_SIZE}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00240}00240                 .flags = \{.pipe\_bof = 1,.force\_short\_xfer = 1,\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00241}00241                 .callback = \&\mbox{\hyperlink{umodem_8c_a1bd45e9812900e75f81d07060c44a364}{umodem\_write\_callback}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00242}00242                 .usb\_mode = \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba19aff234971ad0a6d11fe4be56176106}{USB\_MODE\_DUAL}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00243}00243         \},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00245}00245         [\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{UMODEM\_BULK\_RD}}] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00246}00246                 .type = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00247}00247                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00248}00248                 .direction = \mbox{\hyperlink{usb_8h_a6e0258e8570573ddabdd296569db720e}{UE\_DIR\_RX}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00249}00249                 .if\_index = 0,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00250}00250                 .bufsize = \mbox{\hyperlink{umodem_8c_af621910bb0c23bbb1279c708bd053fe1}{UMODEM\_BUF\_SIZE}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00251}00251                 .flags = \{.pipe\_bof = 1,.short\_xfer\_ok = 1,\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00252}00252                 .callback = \&\mbox{\hyperlink{umodem_8c_ae9fa59a604623434cdd4b0b21edeea8f}{umodem\_read\_callback}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00253}00253                 .usb\_mode = \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba19aff234971ad0a6d11fe4be56176106}{USB\_MODE\_DUAL}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00254}00254         \},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00255}00255 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00256}00256         [\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a7dbf79ad8e33baca79f9d98b41c0fda3}{UMODEM\_INTR\_WR}}] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00257}00257                 .type = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00258}00258                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00259}00259                 .direction = \mbox{\hyperlink{usb_8h_aba70c1d0c8b6a6cd3452b304d9a981ba}{UE\_DIR\_TX}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00260}00260                 .if\_index = 1,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00261}00261                 .flags = \{.pipe\_bof = 1,.short\_xfer\_ok = 1,.no\_pipe\_ok = 1,\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00262}00262                 .bufsize = 0,   \textcolor{comment}{/* use wMaxPacketSize */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00263}00263                 .callback = \&\mbox{\hyperlink{umodem_8c_aaaeb2c6ff8b7d424f388740ec4745534}{umodem\_intr\_write\_callback}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00264}00264                 .usb\_mode = \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806bada6c05f1ad342e782a92990170fca2cc}{USB\_MODE\_DEVICE}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00265}00265         \},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00266}00266 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00267}00267         [\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a3462e2b95337486b5447f384f9aee375}{UMODEM\_INTR\_RD}}] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00268}00268                 .type = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00269}00269                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00270}00270                 .direction = \mbox{\hyperlink{usb_8h_a6e0258e8570573ddabdd296569db720e}{UE\_DIR\_RX}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00271}00271                 .if\_index = 1,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00272}00272                 .flags = \{.pipe\_bof = 1,.short\_xfer\_ok = 1,.no\_pipe\_ok = 1,\},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00273}00273                 .bufsize = 0,   \textcolor{comment}{/* use wMaxPacketSize */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00274}00274                 .callback = \&\mbox{\hyperlink{umodem_8c_ac8741afef4bcfec3b7a2880f2aafe674}{umodem\_intr\_read\_callback}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00275}00275                 .usb\_mode = \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba1c7091216cfa9c9f4a252b0825ed32cb}{USB\_MODE\_HOST}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00276}00276         \},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00277}00277 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00278}00278 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00279}\mbox{\hyperlink{umodem_8c_aad6b75d5a33ee23fbf7493b44581f8b0}{00279}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__callback}{ucom\_callback}} \mbox{\hyperlink{umodem_8c_aad6b75d5a33ee23fbf7493b44581f8b0}{umodem\_callback}} = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00280}00280         .\mbox{\hyperlink{structucom__callback_af543b5023679a91b3ae77ed22f2df40d}{ucom\_cfg\_get\_status}} = \&\mbox{\hyperlink{umodem_8c_af26d7682b163671c7f5ce8d5d7bf6057}{umodem\_cfg\_get\_status}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00281}00281         .ucom\_cfg\_set\_dtr = \&\mbox{\hyperlink{umodem_8c_a08f557bf9cc8b1f7bceffbd7f109a388}{umodem\_cfg\_set\_dtr}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00282}00282         .ucom\_cfg\_set\_rts = \&\mbox{\hyperlink{umodem_8c_a6e2be7254ddecd49b02f89f2a1d7e449}{umodem\_cfg\_set\_rts}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00283}00283         .ucom\_cfg\_set\_break = \&\mbox{\hyperlink{umodem_8c_a0c2e92da009d5b82f80d13c2f9ee608a}{umodem\_cfg\_set\_break}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00284}00284         .ucom\_cfg\_param = \&\mbox{\hyperlink{umodem_8c_a4274784ee61a4221c71f6f981f90c963}{umodem\_cfg\_param}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00285}00285         .ucom\_pre\_param = \&\mbox{\hyperlink{umodem_8c_a3e44afa97272de488b3a5984bb8ae666}{umodem\_pre\_param}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00286}00286         .ucom\_ioctl = \&\mbox{\hyperlink{umodem_8c_a09e1d0f6824d4cd694348e9a193574a2}{umodem\_ioctl}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00287}00287         .ucom\_start\_read = \&\mbox{\hyperlink{umodem_8c_a0ad1fda686b465fc51c241983e8e0fde}{umodem\_start\_read}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00288}00288         .ucom\_stop\_read = \&\mbox{\hyperlink{umodem_8c_a768f675dd8c25eb0e3ab628b1c57a0d9}{umodem\_stop\_read}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00289}00289         .ucom\_start\_write = \&\mbox{\hyperlink{umodem_8c_aa4b0c9051304d2ac83a921a7efd27c84}{umodem\_start\_write}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00290}00290         .ucom\_stop\_write = \&\mbox{\hyperlink{umodem_8c_a3ffbaf21f3016632d08a187f55cd1668}{umodem\_stop\_write}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00291}00291         .ucom\_poll = \&\mbox{\hyperlink{umodem_8c_a8443dd23062cd42966e6d7ff33405f26}{umodem\_poll}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00292}00292         .ucom\_free = \&\mbox{\hyperlink{umodem_8c_a7ab37ea0f05664c10297223f621c2f76}{umodem\_free}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00293}00293 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00294}00294 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00295}\mbox{\hyperlink{umodem_8c_a7a0769ed28af5e3c80a4cc07488e8298}{00295}} \textcolor{keyword}{static} device\_method\_t \mbox{\hyperlink{umodem_8c_a7a0769ed28af5e3c80a4cc07488e8298}{umodem\_methods}}[] = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00296}00296         \textcolor{comment}{/* USB interface */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00297}00297         DEVMETHOD(\mbox{\hyperlink{usb__handle__request_8c_acd7ff252b93f3bd9e87d0f8b3eb3ffa5}{usb\_handle\_request}}, \mbox{\hyperlink{umodem_8c_a72165ba972dafa9b19f45a63052ed769}{umodem\_handle\_request}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00298}00298 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00299}00299         \textcolor{comment}{/* Device interface */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00300}00300         DEVMETHOD(device\_probe, \mbox{\hyperlink{umodem_8c_a4f1c8881b927e1d677207bf0a57a45ae}{umodem\_probe}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00301}00301         DEVMETHOD(device\_attach, \mbox{\hyperlink{umodem_8c_a8260d7415a69f8a319c0d6f761784816}{umodem\_attach}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00302}00302         DEVMETHOD(device\_detach, \mbox{\hyperlink{umodem_8c_a89ac9df44f5a591071b56d140edd7aa6}{umodem\_detach}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00303}00303         DEVMETHOD\_END}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00304}00304 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00305}00305 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00306}\mbox{\hyperlink{umodem_8c_a18e41f6097b22aeedf7f73e46045759e}{00306}} \textcolor{keyword}{static} devclass\_t \mbox{\hyperlink{umodem_8c_a18e41f6097b22aeedf7f73e46045759e}{umodem\_devclass}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00307}00307 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00308}\mbox{\hyperlink{umodem_8c_a0f2a32e26ada3e6851806e8ac9698ecd}{00308}} \textcolor{keyword}{static} driver\_t \mbox{\hyperlink{umodem_8c_a0f2a32e26ada3e6851806e8ac9698ecd}{umodem\_driver}} = \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00309}00309         .name = \textcolor{stringliteral}{"{}umodem"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00310}00310         .methods = \mbox{\hyperlink{umodem_8c_a7a0769ed28af5e3c80a4cc07488e8298}{umodem\_methods}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00311}00311         .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}}),}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00312}00312 \};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00313}00313 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00314}\mbox{\hyperlink{umodem_8c_a7b23812d217be1a6412bc4a45c38cfff}{00314}} \mbox{\hyperlink{umodem_8c_a7b23812d217be1a6412bc4a45c38cfff}{DRIVER\_MODULE}}(umodem, uhub, \mbox{\hyperlink{umodem_8c_a0f2a32e26ada3e6851806e8ac9698ecd}{umodem\_driver}}, \mbox{\hyperlink{umodem_8c_a18e41f6097b22aeedf7f73e46045759e}{umodem\_devclass}}, NULL, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00315}\mbox{\hyperlink{umodem_8c_a15e93b7a2380f183ed9bc3cfd27ec1bd}{00315}} \mbox{\hyperlink{umodem_8c_a15e93b7a2380f183ed9bc3cfd27ec1bd}{MODULE\_DEPEND}}(umodem, ucom, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00316}\mbox{\hyperlink{umodem_8c_aaae00851d1ce3f79a8f3831a183afbd1}{00316}} \mbox{\hyperlink{umodem_8c_a15e93b7a2380f183ed9bc3cfd27ec1bd}{MODULE\_DEPEND}}(umodem, \mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00317}\mbox{\hyperlink{umodem_8c_ac388ca4d41892e0acdc7e3665bcc295c}{00317}} \mbox{\hyperlink{umodem_8c_ac388ca4d41892e0acdc7e3665bcc295c}{MODULE\_VERSION}}(umodem, \mbox{\hyperlink{umodem_8c_a7312420ca7775df64dd249dc51cee54d}{UMODEM\_MODVER}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00318}\mbox{\hyperlink{umodem_8c_afc828e7bac9ee7ad4ae4d7d9ce8b3334}{00318}} \mbox{\hyperlink{umodem_8c_afc828e7bac9ee7ad4ae4d7d9ce8b3334}{USB\_PNP\_DUAL\_INFO}}(\mbox{\hyperlink{umodem_8c_a4851e1c262b7e4937af0c029789fa9b2}{umodem\_dual\_devs}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00319}\mbox{\hyperlink{umodem_8c_a22969523b113c1d1f32cd1f0ace00ef2}{00319}} \mbox{\hyperlink{umodem_8c_a22969523b113c1d1f32cd1f0ace00ef2}{USB\_PNP\_HOST\_INFO}}(\mbox{\hyperlink{umodem_8c_af4743736359dccaaf6c053d97b8a8a5f}{umodem\_host\_devs}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00320}00320 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00321}00321 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00322}\mbox{\hyperlink{umodem_8c_a63149bd8d37faf9598b1e857c27dbb3c}{00322}} \mbox{\hyperlink{umodem_8c_a4f1c8881b927e1d677207bf0a57a45ae}{umodem\_probe}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00323}00323 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00324}00324         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00325}00325         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00326}00326 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00327}00327         DPRINTFN(11, \textcolor{stringliteral}{"{}\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00328}00328 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00329}00329         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__lookup_8c_aa691ad42d532498716f358cb1c994fb2}{usbd\_lookup\_id\_by\_uaa}}(\mbox{\hyperlink{umodem_8c_af4743736359dccaaf6c053d97b8a8a5f}{umodem\_host\_devs}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00330}00330             \textcolor{keyword}{sizeof}(\mbox{\hyperlink{umodem_8c_af4743736359dccaaf6c053d97b8a8a5f}{umodem\_host\_devs}}), uaa);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00331}00331         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00332}00332                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__lookup_8c_aa691ad42d532498716f358cb1c994fb2}{usbd\_lookup\_id\_by\_uaa}}(\mbox{\hyperlink{umodem_8c_a4851e1c262b7e4937af0c029789fa9b2}{umodem\_dual\_devs}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00333}00333                     \textcolor{keyword}{sizeof}(\mbox{\hyperlink{umodem_8c_a4851e1c262b7e4937af0c029789fa9b2}{umodem\_dual\_devs}}), uaa);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00334}00334                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}})}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00335}00335                         \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00336}00336         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00337}00337         \textcolor{keywordflow}{return} (BUS\_PROBE\_GENERIC);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00338}00338 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00339}00339 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00340}00340 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00341}\mbox{\hyperlink{umodem_8c_a1d740360f6bb63f32a384a0b1a3d04c1}{00341}} \mbox{\hyperlink{umodem_8c_a8260d7415a69f8a319c0d6f761784816}{umodem\_attach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00342}00342 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00343}00343         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00344}00344         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00345}00345         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__cm__descriptor}{usb\_cdc\_cm\_descriptor}} *cmd;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00346}00346         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__union__descriptor}{usb\_cdc\_union\_descriptor}} *cud;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00347}00347         uint8\_t i;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00348}00348         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00349}00349 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00350}00350         \mbox{\hyperlink{usb__util_8c_a2f65a197990caa1a69a16691ce4dc66a}{device\_set\_usb\_desc}}(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00351}00351         mtx\_init(\&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}}, \textcolor{stringliteral}{"{}umodem"{}}, NULL, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00352}00352         \mbox{\hyperlink{usb__serial_8c_a3533648e606891c90d0267b21b3ba59e}{ucom\_ref}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00353}00353 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00354}00354         sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a268433f99f7bfcc278a619418e3c44fa}{bIfaceNum}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00355}00355         sc-\/>\mbox{\hyperlink{structumodem__softc_aa2b8062964dcfd3dd8c0ae146a3f3158}{sc\_iface\_index}}[1] = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00356}00356         sc-\/>\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00357}00357 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00358}00358         \mbox{\hyperlink{umodem_8c_ae38407ca7254f3bd0c2122b686fff54d}{umodem\_get\_caps}}(uaa, \&sc-\/>\mbox{\hyperlink{structumodem__softc_a3ecc340467966ce93db9b8dcac2e647e}{sc\_cm\_cap}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{sc\_acm\_cap}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00359}00359 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00360}00360         \textcolor{comment}{/* get the data interface number */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00361}00361 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00362}00362         cmd = \mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{umodem\_get\_desc}}(uaa, \mbox{\hyperlink{usb_8h_af31cdb4e483ebff028f8286207123844}{UDESC\_CS\_INTERFACE}}, \mbox{\hyperlink{usb__cdc_8h_a08942de54ca15bb3673356cb7917b836}{UDESCSUB\_CDC\_CM}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00363}00363 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00364}00364         \textcolor{keywordflow}{if} ((cmd == NULL) || (cmd-\/>\mbox{\hyperlink{structusb__cdc__cm__descriptor_ad22d8dc1f6d0d49d32b64b940a53dafb}{bLength}} < \textcolor{keyword}{sizeof}(*cmd))) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00365}00365                 cud = \mbox{\hyperlink{usb__device_8c_a6cad4345e7f3c057be6067849349d082}{usbd\_find\_descriptor}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, NULL,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00366}00366                     uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}}, \mbox{\hyperlink{usb_8h_af31cdb4e483ebff028f8286207123844}{UDESC\_CS\_INTERFACE}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00367}00367                     0xFF, \mbox{\hyperlink{usb__cdc_8h_a7d999c1e1c24a7ee610ecfd48b363cd4}{UDESCSUB\_CDC\_UNION}}, 0xFF);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00368}00368 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00369}00369                 \textcolor{keywordflow}{if} ((cud == NULL) || (cud-\/>\mbox{\hyperlink{structusb__cdc__union__descriptor_a1b8fe5e9cb1f74a38cbd35560c8b03dd}{bLength}} < \textcolor{keyword}{sizeof}(*cud))) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00370}00370                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}Missing descriptor. "{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00371}00371                             \textcolor{stringliteral}{"{}Assuming data interface is next.\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00372}00372                         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}} == 0xFF) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00373}00373                                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00374}00374                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00375}00375                                 uint8\_t class\_match = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00376}00376 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00377}00377                                 \textcolor{comment}{/* set default interface number */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00378}00378                                 sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}} = 0xFF;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00379}00379 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00380}00380                                 \textcolor{comment}{/* try to find the data interface backwards */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00381}00381                                 \mbox{\hyperlink{umodem_8c_a1be6b9f2b8327bf2e0028c4145c0d79c}{umodem\_find\_data\_iface}}(uaa,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00382}00382                                     uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}} -\/ 1,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00383}00383                                     \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}}, \&class\_match);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00385}00385                                 \textcolor{comment}{/* try to find the data interface forwards */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00386}00386                                 \mbox{\hyperlink{umodem_8c_a1be6b9f2b8327bf2e0028c4145c0d79c}{umodem\_find\_data\_iface}}(uaa,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00387}00387                                     uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}} + 1,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00388}00388                                     \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}}, \&class\_match);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00389}00389 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00390}00390                                 \textcolor{comment}{/* check if nothing was found */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00391}00391                                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}} == 0xFF)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00392}00392                                         \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00393}00393                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00394}00394                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00395}00395                         sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}} = cud-\/>\mbox{\hyperlink{structusb__cdc__union__descriptor_a6fe2a5a9203976aa0e659adab2723f6c}{bSlaveInterface}}[0];}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00396}00396                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00397}00397         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00398}00398                 sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}} = cmd-\/>\mbox{\hyperlink{structusb__cdc__cm__descriptor_aa72da1f1033eb8e947adc130288ad1ab}{bDataInterface}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00399}00399         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00400}00400 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00401}00401         device\_printf(dev, \textcolor{stringliteral}{"{}data interface \%d, has \%sCM over "{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00402}00402             \textcolor{stringliteral}{"{}data, has \%sbreak\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00403}00403             sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00404}00404             sc-\/>\mbox{\hyperlink{structumodem__softc_a3ecc340467966ce93db9b8dcac2e647e}{sc\_cm\_cap}} \& \mbox{\hyperlink{usb__cdc_8h_a732757de94180bc9626389c033cfe532}{USB\_CDC\_CM\_OVER\_DATA}} ? \textcolor{stringliteral}{"{}"{}} : \textcolor{stringliteral}{"{}no "{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00405}00405             sc-\/>\mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{sc\_acm\_cap}} \& \mbox{\hyperlink{usb__cdc_8h_adcf9df4b0d684742502fbcf9c6fe429b}{USB\_CDC\_ACM\_HAS\_BREAK}} ? \textcolor{stringliteral}{"{}"{}} : \textcolor{stringliteral}{"{}no "{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00406}00406 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00407}00407         \textcolor{comment}{/* get the data interface too */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00408}00408 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00409}00409         \textcolor{keywordflow}{for} (i = 0;; i++) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00410}00410                 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00411}00411                 \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} *\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00412}00412 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00413}00413                 iface = \mbox{\hyperlink{usb__device_8c_ad241549c2225f6ccb72345851d5b9ed8}{usbd\_get\_iface}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, i);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00414}00414 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00415}00415                 \textcolor{keywordflow}{if} (iface) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00416}00416                         \textcolor{keywordtype}{id} = \mbox{\hyperlink{usb__device_8c_a4b209681fa34e4570ab0544d0ae9002f}{usbd\_get\_interface\_descriptor}}(iface);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00417}00417 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00418}00418                         \textcolor{keywordflow}{if} (\textcolor{keywordtype}{id} \&\& (\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}}-\/>bInterfaceNumber == sc-\/>\mbox{\hyperlink{structumodem__softc_aa9bea1da282e354f9814c5b4c3f9d7eb}{sc\_data\_iface\_no}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00419}00419                                 sc-\/>\mbox{\hyperlink{structumodem__softc_aa2b8062964dcfd3dd8c0ae146a3f3158}{sc\_iface\_index}}[0] = i;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00420}00420                                 \mbox{\hyperlink{usb__device_8c_a6aef4e9889e1a62a17d7c7ac8f0d2bfa}{usbd\_set\_parent\_iface}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, i, uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00421}00421                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00422}00422                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00423}00423                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00424}00424                         device\_printf(dev, \textcolor{stringliteral}{"{}no data interface\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00425}00425                         \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00426}00426                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00427}00427         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00428}00428 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00429}00429         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__quirk_8h_aa149e2175189b76ffd8fd0a948bc63d4}{usb\_test\_quirk}}(uaa, \mbox{\hyperlink{usb__quirk_8h_a1fb9092bcdeada2d206bdc74afbbe122ab06acc6aecccd605f812218f45609e34}{UQ\_ASSUME\_CM\_OVER\_DATA}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00430}00430                 sc-\/>\mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{sc\_cm\_over\_data}} = 1;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00431}00431         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00432}00432                 \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structumodem__softc_a3ecc340467966ce93db9b8dcac2e647e}{sc\_cm\_cap}} \& \mbox{\hyperlink{usb__cdc_8h_a732757de94180bc9626389c033cfe532}{USB\_CDC\_CM\_OVER\_DATA}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00433}00433                         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{sc\_acm\_cap}} \& \mbox{\hyperlink{usb__cdc_8h_a68dcf0285e7c19632316185922c12477}{USB\_CDC\_ACM\_HAS\_FEATURE}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00434}00434                                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{umodem_8c_a530f336c357cdd7c99e59bc1807da837}{umodem\_set\_comm\_feature}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00435}00435                                 (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00436}00436                                  \mbox{\hyperlink{usb__cdc_8h_a37e83f5c5246c10bf6ad5c7cf251b771}{UCDC\_ABSTRACT\_STATE}}, \mbox{\hyperlink{usb__cdc_8h_a1b7ca6f23593014f05337b954520c9f2}{UCDC\_DATA\_MULTIPLEXED}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00437}00437 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00438}00438                                 \textcolor{comment}{/* ignore any errors */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00439}00439                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00440}00440                         sc-\/>\mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{sc\_cm\_over\_data}} = 1;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00441}00441                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00442}00442         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00443}00443         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00444}00444             sc-\/>\mbox{\hyperlink{structumodem__softc_aa2b8062964dcfd3dd8c0ae146a3f3158}{sc\_iface\_index}}, sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00445}00445             \mbox{\hyperlink{umodem_8c_a43c44403e0ffc9d687f3241b3b4d595b}{umodem\_config}}, \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00446}00446             sc, \&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00447}00447         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00448}00448                 device\_printf(dev, \textcolor{stringliteral}{"{}Can't setup transfer\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00449}00449                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00450}00450         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00451}00451 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00452}00452         \textcolor{comment}{/* clear stall at first run, if USB host mode */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00453}00453         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a246691e99681281d3113d63e81b7e4f0}{usb\_mode}} == \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba1c7091216cfa9c9f4a252b0825ed32cb}{USB\_MODE\_HOST}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00454}00454                 mtx\_lock(\&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00455}00455                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{UMODEM\_BULK\_WR}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00456}00456                 \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{UMODEM\_BULK\_RD}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00457}00457                 mtx\_unlock(\&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00458}00458         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00459}00459 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00460}00460         \mbox{\hyperlink{usb__serial_8c_a7d1f497fbaaf380e92c1938c48f521b0}{ucom\_set\_usb\_mode}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}}, uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a246691e99681281d3113d63e81b7e4f0}{usb\_mode}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00461}00461 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00462}00462         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__serial_8c_a1a14cc63123395507acee783de212d75}{ucom\_attach}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, 1, sc,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00463}00463             \&\mbox{\hyperlink{umodem_8c_aad6b75d5a33ee23fbf7493b44581f8b0}{umodem\_callback}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00464}00464         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00465}00465                 device\_printf(dev, \textcolor{stringliteral}{"{}Can't attach com\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00466}00466                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00467}00467         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00468}00468         \mbox{\hyperlink{usb__serial_8c_a5fd441bb430a68061e8c933443f1d14f}{ucom\_set\_pnpinfo\_usb}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}}, dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00469}00469 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00470}00470         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00471}00471 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00472}00472 detach:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00473}00473         \mbox{\hyperlink{umodem_8c_a89ac9df44f5a591071b56d140edd7aa6}{umodem\_detach}}(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00474}00474         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00475}00475 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00476}00476 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00477}00477 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00478}\mbox{\hyperlink{umodem_8c_a1be6b9f2b8327bf2e0028c4145c0d79c}{00478}} \mbox{\hyperlink{umodem_8c_a1be6b9f2b8327bf2e0028c4145c0d79c}{umodem\_find\_data\_iface}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00479}00479     uint8\_t iface\_index, uint8\_t *p\_data\_no, uint8\_t *p\_match\_class)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00480}00480 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00481}00481         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface__descriptor}{usb\_interface\_descriptor}} *\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00482}00482         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__interface}{usb\_interface}} *iface;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00483}00483 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00484}00484         iface = \mbox{\hyperlink{usb__device_8c_ad241549c2225f6ccb72345851d5b9ed8}{usbd\_get\_iface}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, iface\_index);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00485}00485 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00486}00486         \textcolor{comment}{/* check for end of interfaces */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00487}00487         \textcolor{keywordflow}{if} (iface == NULL)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00488}00488                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00489}00489 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00490}00490         \textcolor{keywordtype}{id} = \mbox{\hyperlink{usb__device_8c_a4b209681fa34e4570ab0544d0ae9002f}{usbd\_get\_interface\_descriptor}}(iface);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00491}00491 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00492}00492         \textcolor{comment}{/* check for non-\/matching interface class */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00493}00493         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}}-\/>bInterfaceClass != \mbox{\hyperlink{usb_8h_a06d51016dbce12950832d57da2a79375}{UICLASS\_CDC\_DATA}} ||}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00494}00494             \mbox{\hyperlink{if__usievar_8h_a1e6927fa1486224044e568f9c370519b}{id}}-\/>bInterfaceSubClass != \mbox{\hyperlink{usb_8h_ae389623f5c5e2a076800637b1669c4a2}{UISUBCLASS\_DATA}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00495}00495                 \textcolor{comment}{/* if we got a class match then return */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00496}00496                 \textcolor{keywordflow}{if} (*p\_match\_class)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00497}00497                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00498}00498         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00499}00499                 *p\_match\_class = 1;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00500}00500         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00501}00501 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00502}00502         DPRINTFN(11, \textcolor{stringliteral}{"{}Match at index \%u\(\backslash\)n"{}}, iface\_index);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00503}00503 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00504}00504         *p\_data\_no = \textcolor{keywordtype}{id}-\/>bInterfaceNumber;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00505}00505 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00506}00506 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00507}00507 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00508}\mbox{\hyperlink{umodem_8c_a0ad1fda686b465fc51c241983e8e0fde}{00508}} \mbox{\hyperlink{umodem_8c_a0ad1fda686b465fc51c241983e8e0fde}{umodem\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00509}00509 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00510}00510         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00511}00511 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00512}00512         \textcolor{comment}{/* start interrupt endpoint, if any */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00513}00513         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a3462e2b95337486b5447f384f9aee375}{UMODEM\_INTR\_RD}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00514}00514 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00515}00515         \textcolor{comment}{/* start read endpoint */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00516}00516         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{UMODEM\_BULK\_RD}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00517}00517 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00518}00518 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00519}00519 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00520}\mbox{\hyperlink{umodem_8c_a768f675dd8c25eb0e3ab628b1c57a0d9}{00520}} \mbox{\hyperlink{umodem_8c_a768f675dd8c25eb0e3ab628b1c57a0d9}{umodem\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00521}00521 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00522}00522         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00523}00523 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00524}00524         \textcolor{comment}{/* stop interrupt endpoint, if any */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00525}00525         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a3462e2b95337486b5447f384f9aee375}{UMODEM\_INTR\_RD}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00526}00526 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00527}00527         \textcolor{comment}{/* stop read endpoint */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00528}00528         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a394f9479bb4e7d9ccf6b51d8b585007a}{UMODEM\_BULK\_RD}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00529}00529 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00530}00530 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00531}00531 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00532}\mbox{\hyperlink{umodem_8c_aa4b0c9051304d2ac83a921a7efd27c84}{00532}} \mbox{\hyperlink{umodem_8c_aa4b0c9051304d2ac83a921a7efd27c84}{umodem\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00533}00533 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00534}00534         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00535}00535 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00536}00536         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a7dbf79ad8e33baca79f9d98b41c0fda3}{UMODEM\_INTR\_WR}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00537}00537         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{UMODEM\_BULK\_WR}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00538}00538 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00539}00539 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00540}00540 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00541}\mbox{\hyperlink{umodem_8c_a3ffbaf21f3016632d08a187f55cd1668}{00541}} \mbox{\hyperlink{umodem_8c_a3ffbaf21f3016632d08a187f55cd1668}{umodem\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00542}00542 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00543}00543         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00544}00544 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00545}00545         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a7dbf79ad8e33baca79f9d98b41c0fda3}{UMODEM\_INTR\_WR}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00546}00546         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}[\mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26aafca144c569ef34461caa5d2335e4e55}{UMODEM\_BULK\_WR}}]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00547}00547 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00548}00548 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00549}00549 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00550}\mbox{\hyperlink{umodem_8c_ae38407ca7254f3bd0c2122b686fff54d}{00550}} \mbox{\hyperlink{umodem_8c_ae38407ca7254f3bd0c2122b686fff54d}{umodem\_get\_caps}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa, uint8\_t *cm, uint8\_t *acm)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00551}00551 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00552}00552         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__cm__descriptor}{usb\_cdc\_cm\_descriptor}} *cmd;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00553}00553         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__acm__descriptor}{usb\_cdc\_acm\_descriptor}} *cad;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00554}00554 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00555}00555         cmd = \mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{umodem\_get\_desc}}(uaa, \mbox{\hyperlink{usb_8h_af31cdb4e483ebff028f8286207123844}{UDESC\_CS\_INTERFACE}}, \mbox{\hyperlink{usb__cdc_8h_a08942de54ca15bb3673356cb7917b836}{UDESCSUB\_CDC\_CM}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00556}00556         \textcolor{keywordflow}{if} ((cmd == NULL) || (cmd-\/>\mbox{\hyperlink{structusb__cdc__cm__descriptor_ad22d8dc1f6d0d49d32b64b940a53dafb}{bLength}} < \textcolor{keyword}{sizeof}(*cmd))) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00557}00557                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}no CM desc (faking one)\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00558}00558                 *cm = \mbox{\hyperlink{usb__cdc_8h_ae3298d8081770cfde4f3573d5a3bac8c}{USB\_CDC\_CM\_DOES\_CM}} | \mbox{\hyperlink{usb__cdc_8h_a732757de94180bc9626389c033cfe532}{USB\_CDC\_CM\_OVER\_DATA}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00559}00559         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00560}00560                 *cm = cmd-\/>\mbox{\hyperlink{structusb__cdc__cm__descriptor_a867ab766a2381feb011e2e3ac209ac98}{bmCapabilities}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00562}00562         cad = \mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{umodem\_get\_desc}}(uaa, \mbox{\hyperlink{usb_8h_af31cdb4e483ebff028f8286207123844}{UDESC\_CS\_INTERFACE}}, \mbox{\hyperlink{usb__cdc_8h_af4bc98f4a80ea1a89f9db8653eaab7df}{UDESCSUB\_CDC\_ACM}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00563}00563         \textcolor{keywordflow}{if} ((cad == NULL) || (cad-\/>\mbox{\hyperlink{structusb__cdc__acm__descriptor_a73d1c641aee794f733c922fc6da266eb}{bLength}} < \textcolor{keyword}{sizeof}(*cad))) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00564}00564                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}no ACM desc\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00565}00565                 *acm = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00566}00566         \} \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00567}00567                 *acm = cad-\/>\mbox{\hyperlink{structusb__cdc__acm__descriptor_ac567658c6f4cb67355452a1ed2ac8767}{bmCapabilities}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00568}00568 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00569}00569 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00570}00570 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00571}\mbox{\hyperlink{umodem_8c_af26d7682b163671c7f5ce8d5d7bf6057}{00571}} \mbox{\hyperlink{umodem_8c_af26d7682b163671c7f5ce8d5d7bf6057}{umodem\_cfg\_get\_status}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t *lsr, uint8\_t *msr)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00572}00572 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00573}00573         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00574}00574 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00575}00575         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00576}00576 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00577}00577         \textcolor{comment}{/* XXX Note: sc\_lsr is always zero */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00578}00578         *lsr = sc-\/>\mbox{\hyperlink{structumodem__softc_a7d756adc1ab92b8ac41067c15b22dfea}{sc\_lsr}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00579}00579         *msr = sc-\/>\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00580}00580 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00581}00581 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00582}00582 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00583}\mbox{\hyperlink{umodem_8c_a3e44afa97272de488b3a5984bb8ae666}{00583}} \mbox{\hyperlink{umodem_8c_a3e44afa97272de488b3a5984bb8ae666}{umodem\_pre\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, \textcolor{keyword}{struct} termios *t)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00584}00584 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00585}00585         \textcolor{keywordflow}{return} (0);                     \textcolor{comment}{/* we accept anything */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00586}00586 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00587}00587 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00588}00588 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00589}\mbox{\hyperlink{umodem_8c_a4274784ee61a4221c71f6f981f90c963}{00589}} \mbox{\hyperlink{umodem_8c_a4274784ee61a4221c71f6f981f90c963}{umodem\_cfg\_param}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, \textcolor{keyword}{struct} termios *t)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00590}00590 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00591}00591         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00592}00592         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__line__state}{usb\_cdc\_line\_state}} ls;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00593}00593         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00594}00594 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00595}00595         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}sc=\%p\(\backslash\)n"{}}, sc);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00596}00596 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00597}00597         memset(\&ls, 0, \textcolor{keyword}{sizeof}(ls));}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00599}00599         \mbox{\hyperlink{usb__endian_8h_a864b3f3abc2ce39bc4c60fadac2a7303}{USETDW}}(ls.\mbox{\hyperlink{structusb__cdc__line__state_ab01cf60150b6032386c27c83bb8ed691}{dwDTERate}}, t-\/>c\_ospeed);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00600}00600 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00601}00601         ls.\mbox{\hyperlink{structusb__cdc__line__state_a4f67939a661da7a8371dc4aaa6866910}{bCharFormat}} = (t-\/>c\_cflag \& CSTOPB) ?}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00602}00602             \mbox{\hyperlink{usb__cdc_8h_a506b664f982b2412ee76e731a308c324}{UCDC\_STOP\_BIT\_2}} : \mbox{\hyperlink{usb__cdc_8h_ae31c10ec7a5bd64c54478ce4f12fc2a5}{UCDC\_STOP\_BIT\_1}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00603}00603 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00604}00604         ls.\mbox{\hyperlink{structusb__cdc__line__state_a156e5156770b10c17cfd9c09df9e4f9a}{bParityType}} = (t-\/>c\_cflag \& PARENB) ?}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00605}00605             ((t-\/>c\_cflag \& PARODD) ?}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00606}00606             \mbox{\hyperlink{usb__cdc_8h_a225d22e2508154ee1e688a5cc51edc76}{UCDC\_PARITY\_ODD}} : \mbox{\hyperlink{usb__cdc_8h_a32f9ec476fedfa0862fb15fe4b0ef36f}{UCDC\_PARITY\_EVEN}}) : \mbox{\hyperlink{usb__cdc_8h_a5859aaa6c747d5fa936db465ac4d6e74}{UCDC\_PARITY\_NONE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00607}00607 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00608}00608         \textcolor{keywordflow}{switch} (t-\/>c\_cflag \& CSIZE) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00609}00609         \textcolor{keywordflow}{case} CS5:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00610}00610                 ls.\mbox{\hyperlink{structusb__cdc__line__state_ad5fc6589c8ae8050dceefd02fb5d1795}{bDataBits}} = 5;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00611}00611                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00612}00612         \textcolor{keywordflow}{case} CS6:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00613}00613                 ls.\mbox{\hyperlink{structusb__cdc__line__state_ad5fc6589c8ae8050dceefd02fb5d1795}{bDataBits}} = 6;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00614}00614                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00615}00615         \textcolor{keywordflow}{case} CS7:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00616}00616                 ls.\mbox{\hyperlink{structusb__cdc__line__state_ad5fc6589c8ae8050dceefd02fb5d1795}{bDataBits}} = 7;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00617}00617                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00618}00618         \textcolor{keywordflow}{case} CS8:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00619}00619                 ls.\mbox{\hyperlink{structusb__cdc__line__state_ad5fc6589c8ae8050dceefd02fb5d1795}{bDataBits}} = 8;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00620}00620                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00621}00621         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00622}00622 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00623}00623         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}rate=\%d fmt=\%d parity=\%d bits=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00624}00624             \mbox{\hyperlink{usb__endian_8h_aad306e3f757f924966cddfe6dfa9dc44}{UGETDW}}(ls.\mbox{\hyperlink{structusb__cdc__line__state_ab01cf60150b6032386c27c83bb8ed691}{dwDTERate}}), ls.\mbox{\hyperlink{structusb__cdc__line__state_a4f67939a661da7a8371dc4aaa6866910}{bCharFormat}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00625}00625             ls.\mbox{\hyperlink{structusb__cdc__line__state_a156e5156770b10c17cfd9c09df9e4f9a}{bParityType}}, ls.\mbox{\hyperlink{structusb__cdc__line__state_ad5fc6589c8ae8050dceefd02fb5d1795}{bDataBits}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00627}00627         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00628}00628         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_a69d03fdec775449020196faf0f353104}{UCDC\_SET\_LINE\_CODING}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00629}00629         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00630}00630         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[0] = sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00631}00631         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[1] = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00632}00632         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \textcolor{keyword}{sizeof}(ls));}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00633}00633 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00634}00634         \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00635}00635             \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \&ls, 0, 1000);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00636}00636 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00637}00637 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00638}00638 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00639}\mbox{\hyperlink{umodem_8c_a09e1d0f6824d4cd694348e9a193574a2}{00639}} \mbox{\hyperlink{umodem_8c_a09e1d0f6824d4cd694348e9a193574a2}{umodem\_ioctl}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint32\_t cmd, caddr\_t data,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00640}00640     \textcolor{keywordtype}{int} flag, \textcolor{keyword}{struct} thread *td)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00641}00641 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00642}00642         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00643}00643         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00645}00645         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}cmd=0x\%08x\(\backslash\)n"{}}, cmd);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00646}00646 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00647}00647         \textcolor{keywordflow}{switch} (cmd) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00648}00648         \textcolor{keywordflow}{case} \mbox{\hyperlink{usb__ioctl_8h_aa2462cd4446bc448a1d3f57e79975f7b}{USB\_GET\_CM\_OVER\_DATA}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00649}00649                 *(\textcolor{keywordtype}{int} *)data = sc-\/>\mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{sc\_cm\_over\_data}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00650}00650                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00651}00651 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00652}00652         \textcolor{keywordflow}{case} \mbox{\hyperlink{usb__ioctl_8h_ae778100c386d6214b1040727ca9ff2b8}{USB\_SET\_CM\_OVER\_DATA}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00653}00653                 if (*(\textcolor{keywordtype}{int} *)data != sc-\/>\mbox{\hyperlink{structumodem__softc_a50081a505451fac670200a0c794aadd0}{sc\_cm\_over\_data}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00654}00654                         \textcolor{comment}{/* XXX change it */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00655}00655                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00656}00656                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00657}00657 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00658}00658         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00659}00659                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}unknown\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00660}00660                 \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = ENOIOCTL;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00661}00661                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00662}00662         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00663}00663 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00664}00664         \textcolor{keywordflow}{return} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00665}00665 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00666}00666 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00667}00667 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00668}\mbox{\hyperlink{umodem_8c_a08f557bf9cc8b1f7bceffbd7f109a388}{00668}} \mbox{\hyperlink{umodem_8c_a08f557bf9cc8b1f7bceffbd7f109a388}{umodem\_cfg\_set\_dtr}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t onoff)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00669}00669 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00670}00670         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00671}00671         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00672}00672 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00673}00673         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}onoff=\%d\(\backslash\)n"{}}, onoff);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00674}00674 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00675}00675         \textcolor{keywordflow}{if} (onoff)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00676}00676                 sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}} |= \mbox{\hyperlink{usb__cdc_8h_a373874c95486fe85d0f9f59ee8e8e302}{UCDC\_LINE\_DTR}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00677}00677         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00678}00678                 sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}} \&= \string~UCDC\_LINE\_DTR;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00679}00679 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00680}00680         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00681}00681         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_a7280ec82adcbae23dd6617088338241f}{UCDC\_SET\_CONTROL\_LINE\_STATE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00682}00682         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00683}00683         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[0] = sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00684}00684         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[1] = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00685}00685         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00686}00686 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00687}00687         \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00688}00688             \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, NULL, 0, 1000);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00689}00689 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00690}00690 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00691}00691 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00692}\mbox{\hyperlink{umodem_8c_a6e2be7254ddecd49b02f89f2a1d7e449}{00692}} \mbox{\hyperlink{umodem_8c_a6e2be7254ddecd49b02f89f2a1d7e449}{umodem\_cfg\_set\_rts}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t onoff)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00693}00693 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00694}00694         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00695}00695         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00696}00696 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00697}00697         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}onoff=\%d\(\backslash\)n"{}}, onoff);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00698}00698 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00699}00699         \textcolor{keywordflow}{if} (onoff)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00700}00700                 sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}} |= \mbox{\hyperlink{usb__cdc_8h_a032795f114229b3db0c5881d27b0a63a}{UCDC\_LINE\_RTS}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00701}00701         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00702}00702                 sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}} \&= \string~UCDC\_LINE\_RTS;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00703}00703 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00704}00704         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00705}00705         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_a7280ec82adcbae23dd6617088338241f}{UCDC\_SET\_CONTROL\_LINE\_STATE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00706}00706         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, sc-\/>\mbox{\hyperlink{structumodem__softc_a926da0b0f1751f15054609f9a966ba3c}{sc\_line}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00707}00707         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[0] = sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00708}00708         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[1] = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00709}00709         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00710}00710 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00711}00711         \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00712}00712             \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, NULL, 0, 1000);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00713}00713 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00714}00714 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00715}00715 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00716}\mbox{\hyperlink{umodem_8c_a0c2e92da009d5b82f80d13c2f9ee608a}{00716}} \mbox{\hyperlink{umodem_8c_a0c2e92da009d5b82f80d13c2f9ee608a}{umodem\_cfg\_set\_break}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom, uint8\_t onoff)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00717}00717 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00718}00718         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00719}00719         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00720}00720         uint16\_t temp;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00721}00721 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00722}00722         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}onoff=\%d\(\backslash\)n"{}}, onoff);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00723}00723 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00724}00724         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structumodem__softc_a0d06136c6620397e0ee59199b29efaf1}{sc\_acm\_cap}} \& \mbox{\hyperlink{usb__cdc_8h_adcf9df4b0d684742502fbcf9c6fe429b}{USB\_CDC\_ACM\_HAS\_BREAK}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00725}00725                 temp = onoff ? \mbox{\hyperlink{usb__cdc_8h_a13409c2ddc271b12e5c3260dbacbf3cd}{UCDC\_BREAK\_ON}} : \mbox{\hyperlink{usb__cdc_8h_aa957f902d206b9ccb115c0806f661851}{UCDC\_BREAK\_OFF}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00726}00726 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00727}00727                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00728}00728                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_af23f60ca2e3bc8cf5b8f6e65e2bde6cf}{UCDC\_SEND\_BREAK}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00729}00729                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, temp);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00730}00730                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[0] = sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00731}00731                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[1] = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00732}00732                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00733}00733 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00734}00734                 \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a206da76f57460db0f013cc0f45d57ced}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00735}00735                     \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, NULL, 0, 1000);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00736}00736         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00737}00737 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00738}00738 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00739}00739 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00740}\mbox{\hyperlink{umodem_8c_a6c582495baff2b2996a6ea7f17db7ca0}{00740}} \mbox{\hyperlink{umodem_8c_aaaeb2c6ff8b7d424f388740ec4745534}{umodem\_intr\_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{umodem_8c_source_l00741}00741 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00742}00742         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00743}00743 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00744}00744         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00745}00745 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00746}00746         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00747}00747         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00748}00748 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00749}00749                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}Transferred \%d bytes\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00750}00750 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00751}00751                 \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00752}00752         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00753}00753 tr\_setup:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00754}00754                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00755}00755 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00756}00756         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00757}00757                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00758}00758                         \textcolor{comment}{/* start clear stall */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00759}00759                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00760}00760                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00761}00761                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00762}00762                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00763}00763         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00764}00764 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00765}00765 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00766}00766 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00767}\mbox{\hyperlink{umodem_8c_a8ad62758d8f35e351bd144573af9bbd4}{00767}} \mbox{\hyperlink{umodem_8c_ac8741afef4bcfec3b7a2880f2aafe674}{umodem\_intr\_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{umodem_8c_source_l00768}00768 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00769}00769         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__notification}{usb\_cdc\_notification}} pkt;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00770}00770         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00771}00771         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00772}00772         uint16\_t wLen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00773}00773         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00774}00774 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00775}00775         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00776}00776 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00777}00777         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00778}00778         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00779}00779 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00780}00780                 \textcolor{keywordflow}{if} (actlen < 8) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00781}00781                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}received short packet, "{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00782}00782                             \textcolor{stringliteral}{"{}\%d bytes\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00783}00783                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00784}00784                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00785}00785                 \textcolor{keywordflow}{if} (actlen > (\textcolor{keywordtype}{int})\textcolor{keyword}{sizeof}(pkt)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00786}00786                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}truncating message\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00787}00787                         actlen = \textcolor{keyword}{sizeof}(pkt);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00788}00788                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00789}00789                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00790}00790                 \mbox{\hyperlink{usb__busdma_8c_af52eece45b7868dbf58386f4c9e4eb9a}{usbd\_copy\_out}}(pc, 0, \&pkt, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00791}00791 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00792}00792                 actlen -\/= 8;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00793}00793 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00794}00794                 wLen = \mbox{\hyperlink{usb__endian_8h_aa3860f9452db3a5d865cc943e2f01829}{UGETW}}(pkt.\mbox{\hyperlink{structusb__cdc__notification_a9bf1a0e6989aecf882d04d82ef787625}{wLength}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00795}00795                 \textcolor{keywordflow}{if} (actlen > wLen) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00796}00796                         actlen = wLen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00797}00797                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00798}00798                 \textcolor{keywordflow}{if} (pkt.\mbox{\hyperlink{structusb__cdc__notification_a956434b04ed592ffd848605ef105aa4b}{bmRequestType}} != \mbox{\hyperlink{usb__cdc_8h_aeeb3b3e13ab188b5882880409a5aee9c}{UCDC\_NOTIFICATION}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00799}00799                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}unknown message type, "{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00800}00800                             \textcolor{stringliteral}{"{}0x\%02x, on notify pipe!\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00801}00801                             pkt.\mbox{\hyperlink{structusb__cdc__notification_a956434b04ed592ffd848605ef105aa4b}{bmRequestType}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00802}00802                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00803}00803                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00804}00804                 \textcolor{keywordflow}{switch} (pkt.\mbox{\hyperlink{structusb__cdc__notification_a32918901ab265858379b6966f5af9b35}{bNotification}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00805}00805                 \textcolor{keywordflow}{case} \mbox{\hyperlink{usb__cdc_8h_a577dbc9d5a7dd197a05358461a16ae1e}{UCDC\_N\_SERIAL\_STATE}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00806}00806                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00807}00807 \textcolor{comment}{                         * Set the serial state in ucom driver based on}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00808}00808 \textcolor{comment}{                         * the bits from the notify message}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00809}00809 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00810}00810                         \textcolor{keywordflow}{if} (actlen < 2) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00811}00811                                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}invalid notification "{}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00812}00812                                     \textcolor{stringliteral}{"{}length, \%d bytes!\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00813}00813                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00814}00814                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00815}00815                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}notify bytes = \%02x\%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00816}00816                             pkt.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0],}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00817}00817                             pkt.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[1]);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00818}00818 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00819}00819                         \textcolor{comment}{/* Currently, lsr is always zero. */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00820}00820                         sc-\/>\mbox{\hyperlink{structumodem__softc_a7d756adc1ab92b8ac41067c15b22dfea}{sc\_lsr}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00821}00821                         sc-\/>\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00822}00822 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00823}00823                         \textcolor{keywordflow}{if} (pkt.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_ac831e547acd6bb392c12aff51af84624}{UCDC\_N\_SERIAL\_RI}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00824}00824                                 sc-\/>\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}} |= SER\_RI;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00825}00825                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00826}00826                         \textcolor{keywordflow}{if} (pkt.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_a8c17c3b28a6826ccc18b7482b82fb71f}{UCDC\_N\_SERIAL\_DSR}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00827}00827                                 sc-\/>\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}} |= SER\_DSR;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00828}00828                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00829}00829                         \textcolor{keywordflow}{if} (pkt.\mbox{\hyperlink{structusb__cdc__notification_a0f25498e230ab17e05cafbcdbbe15413}{data}}[0] \& \mbox{\hyperlink{usb__cdc_8h_a65bb615bd98c66a111a0a283e85f3e77}{UCDC\_N\_SERIAL\_DCD}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00830}00830                                 sc-\/>\mbox{\hyperlink{structumodem__softc_a3a852649b22c7e762853815b387b3e41}{sc\_msr}} |= SER\_DCD;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00831}00831                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00832}00832                         \mbox{\hyperlink{usb__serial_8c_a0cb07518ed43ec742a628e47a9d97281}{ucom\_status\_change}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00833}00833                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00834}00834 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00835}00835                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00836}00836                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}unknown notify message: 0x\%02x\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00837}00837                             pkt.\mbox{\hyperlink{structusb__cdc__notification_a32918901ab265858379b6966f5af9b35}{bNotification}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00838}00838                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00839}00839                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00840}00840 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00841}00841         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00842}00842 tr\_setup:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00843}00843                 \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{umodem_8c_source_l00844}00844                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00845}00845                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00846}00846 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00847}00847         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00848}00848                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00849}00849                         \textcolor{comment}{/* try to clear stall first */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00850}00850                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00851}00851                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00852}00852                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00853}00853                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00854}00854         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00855}00855 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00856}00856 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00857}00857 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00858}\mbox{\hyperlink{umodem_8c_a75aef2b0d11e61aa70b1a02a00fa59b3}{00858}} \mbox{\hyperlink{umodem_8c_a1bd45e9812900e75f81d07060c44a364}{umodem\_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{umodem_8c_source_l00859}00859 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00860}00860         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00861}00861         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00862}00862         uint32\_t actlen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00863}00863 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00864}00864         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00865}00865         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00866}00866         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00867}00867 tr\_setup:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00868}00868                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00869}00869                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a014a131e1bce5fb84d1788e48a69733f}{ucom\_get\_data}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, pc, 0,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00870}00870                     \mbox{\hyperlink{umodem_8c_af621910bb0c23bbb1279c708bd053fe1}{UMODEM\_BUF\_SIZE}}, \&actlen)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00871}00871                         \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, 0, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00872}00872                         \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00873}00873                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00874}00874                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00875}00875 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00876}00876         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00877}00877                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00878}00878                         \textcolor{comment}{/* try to clear stall first */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00879}00879                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00880}00880                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00881}00881                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00882}00882                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00883}00883         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00884}00884 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00885}00885 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00886}00886 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00887}\mbox{\hyperlink{umodem_8c_ae9ddbabf035998ee61c9c7d166cb454e}{00887}} \mbox{\hyperlink{umodem_8c_ae9fa59a604623434cdd4b0b21edeea8f}{umodem\_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{umodem_8c_source_l00888}00888 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00889}00889         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00890}00890         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00891}00891         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00892}00892 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00893}00893         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00894}00894 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00895}00895         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00896}00896         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00897}00897 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00898}00898                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}actlen=\%d\(\backslash\)n"{}}, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00899}00899 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00900}00900                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00901}00901                 \mbox{\hyperlink{usb__serial_8c_af96494685ba012ad6a1c2e18b783e185}{ucom\_put\_data}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}}, pc, 0, actlen);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00902}00902 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00903}00903         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00904}00904 tr\_setup:}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00905}00905                 \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{umodem_8c_source_l00906}00906                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00907}00907                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00908}00908 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00909}00909         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00910}00910                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00911}00911                         \textcolor{comment}{/* try to clear stall first */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00912}00912                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00913}00913                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00914}00914                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00915}00915                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00916}00916         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00917}00917 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00918}00918 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00919}00919 \textcolor{keyword}{static} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00920}\mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{00920}} \mbox{\hyperlink{umodem_8c_a62024211158c65738bef9c4d62f67616}{umodem\_get\_desc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa, uint8\_t type, uint8\_t subtype)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00921}00921 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00922}00922         \textcolor{keywordflow}{return} (\mbox{\hyperlink{usb__device_8c_a6cad4345e7f3c057be6067849349d082}{usbd\_find\_descriptor}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, NULL, uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00923}00923             type, 0xFF, subtype, 0xFF));}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00924}00924 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00925}00925 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00926}00926 \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00927}\mbox{\hyperlink{umodem_8c_a530f336c357cdd7c99e59bc1807da837}{00927}} \mbox{\hyperlink{umodem_8c_a530f336c357cdd7c99e59bc1807da837}{umodem\_set\_comm\_feature}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, uint8\_t iface\_no,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00928}00928     uint16\_t feature, uint16\_t state)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00929}00929 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00930}00930         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00931}00931         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__cdc__abstract__state}{usb\_cdc\_abstract\_state}} ast;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00932}00932 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00933}00933         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}feature=\%d state=\%d\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00934}00934             feature, state);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00935}00935 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00936}00936         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00937}00937         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb__cdc_8h_add19c09b8848bc63f8bc98da71ff3165}{UCDC\_SET\_COMM\_FEATURE}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00938}00938         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, feature);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00939}00939         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[0] = iface\_no;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00940}00940         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex[1] = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00941}00941         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \mbox{\hyperlink{usb__cdc_8h_a7760c97a10488de94d08d6fdf79bd835}{UCDC\_ABSTRACT\_STATE\_LENGTH}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00942}00942         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(ast.\mbox{\hyperlink{structusb__cdc__abstract__state_a52ce6630cf9aed62711d9379de368448}{wState}}, state);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00943}00943 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00944}00944         \textcolor{keywordflow}{return} (\mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \&ast));}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00945}00945 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00946}00946 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00947}00947 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00948}\mbox{\hyperlink{umodem_8c_af149fe83ed6ee13cc74f5da64b329ded}{00948}} \mbox{\hyperlink{umodem_8c_a89ac9df44f5a591071b56d140edd7aa6}{umodem\_detach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00949}00949 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00950}00950         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00951}00951 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00952}00952         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}sc=\%p\(\backslash\)n"{}}, sc);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00953}00953 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00954}00954         \mbox{\hyperlink{usb__serial_8c_abcceb7ddf05b758da5f3ada77a962ad1}{ucom\_detach}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}}, \&sc-\/>\mbox{\hyperlink{structumodem__softc_aa74811d92749908e66a0613714f1e6e9}{sc\_ucom}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00955}00955         \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}, \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00956}00956 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00957}00957         device\_claim\_softc(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00958}00958 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00959}00959         \mbox{\hyperlink{umodem_8c_ac3bca544e058f7323390d69d46f68b9e}{umodem\_free\_softc}}(sc);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00960}00960 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00961}00961         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00962}00962 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00963}00963 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00964}\mbox{\hyperlink{umodem_8c_ad0b55bfe38114b2909231e0b3ac43a30}{00964}} \mbox{\hyperlink{umodem_8c_ad0b55bfe38114b2909231e0b3ac43a30}{UCOM\_UNLOAD\_DRAIN}}(umodem);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00965}00965 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00966}00966 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00967}\mbox{\hyperlink{umodem_8c_ac3bca544e058f7323390d69d46f68b9e}{00967}} \mbox{\hyperlink{umodem_8c_ac3bca544e058f7323390d69d46f68b9e}{umodem\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00968}00968 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00969}00969         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a27ca652272693169923a38646505d083}{ucom\_unref}}(\&sc-\/>\mbox{\hyperlink{structumodem__softc_aa1b9234ed2328eaa6c93babfa18d1bd5}{sc\_super\_ucom}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00970}00970                 mtx\_destroy(\&sc-\/>\mbox{\hyperlink{structumodem__softc_ac8317f4800e1f91e82bf7550c9904f9f}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00971}00971                 device\_free\_softc(sc);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00972}00972         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00973}00973 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00974}00974 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00975}00975 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00976}\mbox{\hyperlink{umodem_8c_a7ab37ea0f05664c10297223f621c2f76}{00976}} \mbox{\hyperlink{umodem_8c_a7ab37ea0f05664c10297223f621c2f76}{umodem\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00977}00977 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00978}00978         \mbox{\hyperlink{umodem_8c_ac3bca544e058f7323390d69d46f68b9e}{umodem\_free\_softc}}(ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00979}00979 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00980}00980 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00981}00981 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00982}\mbox{\hyperlink{umodem_8c_a8443dd23062cd42966e6d7ff33405f26}{00982}} \mbox{\hyperlink{umodem_8c_a8443dd23062cd42966e6d7ff33405f26}{umodem\_poll}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00983}00983 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00984}00984         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00985}00985         \mbox{\hyperlink{usb__transfer_8c_ab2036eadf83fca25cf0d8cdec16d7227}{usbd\_transfer\_poll}}(sc-\/>\mbox{\hyperlink{structumodem__softc_a13fed54fbf00ee17914362302e0e344e}{sc\_xfer}}, \mbox{\hyperlink{umodem_8c_af8654c714018c6241d9ebd01f3fb5a26a6234f768713f542994cd5078b9c196b8}{UMODEM\_N\_TRANSFER}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00986}00986 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00987}00987 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00988}00988 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00989}\mbox{\hyperlink{umodem_8c_a3fb547c665356a03f40e340feb4ed829}{00989}} \mbox{\hyperlink{umodem_8c_a72165ba972dafa9b19f45a63052ed769}{umodem\_handle\_request}}(device\_t dev,}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00990}00990     \textcolor{keyword}{const} \textcolor{keywordtype}{void} *preq, \textcolor{keywordtype}{void} **\mbox{\hyperlink{usb__if_8m_a074c17a419327b41805af2dd7cb152e7}{pptr}}, uint16\_t *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}},}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00991}00991     uint16\_t \mbox{\hyperlink{usb__if_8m_ac681806181c80437cfab37335f62ff39}{offset}}, uint8\_t *\mbox{\hyperlink{usb__if_8m_a8a16a0091a5793ece040278427496b23}{pstate}})}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00992}00992 \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00993}00993         \textcolor{keyword}{struct }\mbox{\hyperlink{structumodem__softc}{umodem\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00994}00994         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} *\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}} = preq;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00995}00995         uint8\_t is\_complete = *\mbox{\hyperlink{usb__if_8m_a8a16a0091a5793ece040278427496b23}{pstate}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00996}00996 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00997}00997         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}sc=\%p\(\backslash\)n"{}}, sc);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00998}00998 }
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l00999}00999         \textcolor{keywordflow}{if} (!is\_complete) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01000}01000                 \textcolor{keywordflow}{if} ((\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bmRequestType == \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01001}01001                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bRequest == \mbox{\hyperlink{usb__cdc_8h_a69d03fdec775449020196faf0f353104}{UCDC\_SET\_LINE\_CODING}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01002}01002                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[0] == sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01003}01003                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[1] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01004}01004                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wValue[0] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01005}01005                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wValue[1] == 0x00)) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01006}01006                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__if_8m_ac681806181c80437cfab37335f62ff39}{offset}} == 0) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01007}01007                                 *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = \textcolor{keyword}{sizeof}(sc-\/>\mbox{\hyperlink{structumodem__softc_af624914117e63700944933ac723b0156}{sc\_line\_coding}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01008}01008                                 *\mbox{\hyperlink{usb__if_8m_a074c17a419327b41805af2dd7cb152e7}{pptr}} = \&sc-\/>\mbox{\hyperlink{structumodem__softc_af624914117e63700944933ac723b0156}{sc\_line\_coding}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01009}01009                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01010}01010                                 *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01011}01011                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01012}01012                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01013}01013                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bmRequestType == \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01014}01014                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[0] == sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01015}01015                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[1] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01016}01016                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bRequest == \mbox{\hyperlink{usb__cdc_8h_add19c09b8848bc63f8bc98da71ff3165}{UCDC\_SET\_COMM\_FEATURE}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01017}01017                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__if_8m_ac681806181c80437cfab37335f62ff39}{offset}} == 0) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01018}01018                                 *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = \textcolor{keyword}{sizeof}(sc-\/>\mbox{\hyperlink{structumodem__softc_a0836018f2a407ce899aa9ca35c2f9ece}{sc\_abstract\_state}});}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01019}01019                                 *\mbox{\hyperlink{usb__if_8m_a074c17a419327b41805af2dd7cb152e7}{pptr}} = \&sc-\/>\mbox{\hyperlink{structumodem__softc_a0836018f2a407ce899aa9ca35c2f9ece}{sc\_abstract\_state}};}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01020}01020                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01021}01021                                 *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01022}01022                         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01023}01023                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01024}01024                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bmRequestType == \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01025}01025                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[0] == sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01026}01026                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[1] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01027}01027                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bRequest == \mbox{\hyperlink{usb__cdc_8h_a7280ec82adcbae23dd6617088338241f}{UCDC\_SET\_CONTROL\_LINE\_STATE}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01028}01028                         *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01029}01029                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01030}01030                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} ((\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bmRequestType == \mbox{\hyperlink{usb_8h_ac338c3af82b085859b50582e10fa7cb7}{UT\_WRITE\_CLASS\_INTERFACE}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01031}01031                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[0] == sc-\/>\mbox{\hyperlink{structumodem__softc_aa93c6ccfca7ce23d1ac927a0437ac9af}{sc\_ctrl\_iface\_no}}) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01032}01032                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[1] == 0x00) \&\&}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01033}01033                     (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bRequest == \mbox{\hyperlink{usb__cdc_8h_af23f60ca2e3bc8cf5b8f6e65e2bde6cf}{UCDC\_SEND\_BREAK}})) \{}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01034}01034                         *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = 0;}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01035}01035                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01036}01036                 \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01037}01037         \}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01038}01038         \textcolor{keywordflow}{return} (ENXIO);                 \textcolor{comment}{/* use builtin handler */}}
\DoxyCodeLine{\Hypertarget{umodem_8c_source_l01039}01039 \}}

\end{DoxyCode}
