\hypertarget{uvisor_8c_source}{}\doxysection{uvisor.\+c}
\label{uvisor_8c_source}\index{dev/usb/serial/uvisor.c@{dev/usb/serial/uvisor.c}}
\mbox{\hyperlink{uvisor_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00001}00001 \textcolor{comment}{/*      \$NetBSD: uvisor.c,v 1.9 2001/01/23 14:04:14 augustss Exp \$      */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00002}00002 \textcolor{comment}{/*      \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00003}00003 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00004}00004 \textcolor{comment}{/* Also already merged from NetBSD:}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00005}00005 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.12 2001/11/13 06:24:57 lukem Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00006}00006 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.13 2002/02/11 15:11:49 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00007}00007 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.14 2002/02/27 23:00:03 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00008}00008 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.15 2002/06/16 15:01:31 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00009}00009 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.16 2002/07/11 21:14:36 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00010}00010 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.17 2002/08/13 11:38:15 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00011}00011 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.18 2003/02/05 00:50:14 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00012}00012 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.19 2003/02/07 18:12:37 augustss Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00013}00013 \textcolor{comment}{ *      \$NetBSD: uvisor.c,v 1.20 2003/04/11 01:30:10 simonb Exp \$}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00014}00014 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00015}00015 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00016}00016 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00017}00017 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/NetBSD}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00018}00018 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00019}00019 \textcolor{comment}{ * Copyright (c) 2000 The NetBSD Foundation, Inc.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00020}00020 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00021}00021 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00022}00022 \textcolor{comment}{ * This code is derived from software contributed to The NetBSD Foundation}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00023}00023 \textcolor{comment}{ * by Lennart Augustsson (lennart@augustsson.net) at}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00024}00024 \textcolor{comment}{ * Carlstedt Research \& Technology.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00025}00025 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00026}00026 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00027}00027 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00028}00028 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00029}00029 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00030}00030 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00031}00031 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00032}00032 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00033}00033 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00034}00034 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00035}00035 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00036}00036 \textcolor{comment}{ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00037}00037 \textcolor{comment}{ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00038}00038 \textcolor{comment}{ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00039}00039 \textcolor{comment}{ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00040}00040 \textcolor{comment}{ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00041}00041 \textcolor{comment}{ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00042}00042 \textcolor{comment}{ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00043}00043 \textcolor{comment}{ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00044}00044 \textcolor{comment}{ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00045}00045 \textcolor{comment}{ * POSSIBILITY OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00046}00046 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00048}00048 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00049}00049 \textcolor{comment}{ * Handspring Visor (Palmpilot compatible PDA) driver}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00050}00050 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00051}00051 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <sys/stdint.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <sys/stddef.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <sys/types.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00066}00066 \textcolor{preprocessor}{\#include <sys/unistd.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <sys/callout.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00068}00068 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00070}00070 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00071}00071 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00072}00072 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00073}00073 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi__util_8h}{dev/usb/usbdi\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00074}00074 \textcolor{preprocessor}{\#include "{}usbdevs.h"{}}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00076}\mbox{\hyperlink{uvisor_8c_a927dd6f59caf10a2991dfb564bcbb1e1}{00076}} \textcolor{preprocessor}{\#define USB\_DEBUG\_VAR uvisor\_debug}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00077}00077 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__debug_8h}{dev/usb/usb\_debug.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00078}00078 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__process_8h}{dev/usb/usb\_process.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00080}00080 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__serial_8h}{dev/usb/serial/usb\_serial.h}}>}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00081}00081 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00082}00082 \textcolor{preprocessor}{\#ifdef USB\_DEBUG}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00083}00083 \textcolor{keyword}{static} \textcolor{keywordtype}{int} uvisor\_debug = 0;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00084}00084 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00085}00085 \textcolor{keyword}{static} \mbox{\hyperlink{dwc__otg_8c_a58e125bcf985ce2333baef42f97b33b3}{SYSCTL\_NODE}}(\_hw\_usb, OID\_AUTO, uvisor, CTLFLAG\_RW | CTLFLAG\_MPSAFE, 0,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00086}00086     \textcolor{stringliteral}{"{}USB uvisor"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00087}00087 \mbox{\hyperlink{dwc__otg_8c_a83d020f0b15dc2783f3f1a6966c75e36}{SYSCTL\_INT}}(\_hw\_usb\_uvisor, OID\_AUTO, \mbox{\hyperlink{cfumass_8c_ac3e1795766a80ec63b157951b4b9a7d4}{debug}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00088}00088     \&uvisor\_debug, 0, \textcolor{stringliteral}{"{}Debug level"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00089}00089 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00090}00090 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00091}\mbox{\hyperlink{uvisor_8c_ac942451d2d26ef52a975de5a99b35bf1}{00091}} \textcolor{preprocessor}{\#define UVISOR\_CONFIG\_INDEX     0}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00092}\mbox{\hyperlink{uvisor_8c_ab7d1df9a2d1640c1c5eff8b3a51fa15f}{00092}} \textcolor{preprocessor}{\#define UVISOR\_IFACE\_INDEX      0}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00093}00093 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00094}00094 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00095}00095 \textcolor{comment}{ * The following buffer sizes are hardcoded due to the way the Palm}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00096}00096 \textcolor{comment}{ * firmware works. It looks like the device is not short terminating}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00097}00097 \textcolor{comment}{ * the data transferred.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00098}00098 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00099}\mbox{\hyperlink{uvisor_8c_a45c9aac0920fb074bec7a30384dabdef}{00099}} \textcolor{preprocessor}{\#define UVISORIBUFSIZE         0        }\textcolor{comment}{/* Use wMaxPacketSize */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00100}\mbox{\hyperlink{uvisor_8c_a5acd880ce8b5025789c703c66a087857}{00100}} \textcolor{preprocessor}{\#define UVISOROBUFSIZE         32       }\textcolor{comment}{/* bytes */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00101}\mbox{\hyperlink{uvisor_8c_abcd82bcd6a9f4ab2726b0548c648a815}{00101}} \textcolor{preprocessor}{\#define UVISOROFRAMES          32       }\textcolor{comment}{/* units */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00103}00103 \textcolor{comment}{/* From the Linux driver */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00104}00104 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00105}00105 \textcolor{comment}{ * UVISOR\_REQUEST\_BYTES\_AVAILABLE asks the visor for the number of bytes that}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00106}00106 \textcolor{comment}{ * are available to be transferred to the host for the specified endpoint.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00107}00107 \textcolor{comment}{ * Currently this is not used, and always returns 0x0001}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00108}00108 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00109}\mbox{\hyperlink{uvisor_8c_a6e692fffa9320d036f7095fe234fb44a}{00109}} \textcolor{preprocessor}{\#define UVISOR\_REQUEST\_BYTES\_AVAILABLE          0x01}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00111}00111 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00112}00112 \textcolor{comment}{ * UVISOR\_CLOSE\_NOTIFICATION is set to the device to notify it that the host}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00113}00113 \textcolor{comment}{ * is now closing the pipe. An empty packet is sent in response.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00114}00114 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00115}\mbox{\hyperlink{uvisor_8c_a97c50fa12dc9932fcbfa8eeeae66f99d}{00115}} \textcolor{preprocessor}{\#define UVISOR\_CLOSE\_NOTIFICATION               0x02}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00116}00116 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00117}00117 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00118}00118 \textcolor{comment}{ * UVISOR\_GET\_CONNECTION\_INFORMATION is sent by the host during enumeration to}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00119}00119 \textcolor{comment}{ * get the endpoints used by the connection.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00120}00120 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00121}\mbox{\hyperlink{uvisor_8c_a7fb8b4620e8f06a03df914c41095484b}{00121}} \textcolor{preprocessor}{\#define UVISOR\_GET\_CONNECTION\_INFORMATION       0x03}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00122}00122 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00123}00123 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00124}00124 \textcolor{comment}{ * UVISOR\_GET\_CONNECTION\_INFORMATION returns data in the following format}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00125}00125 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00126}\mbox{\hyperlink{uvisor_8c_a7de848226d9e0fe9872991039bab8e08}{00126}} \textcolor{preprocessor}{\#define UVISOR\_MAX\_CONN 8}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00127}\mbox{\hyperlink{structuvisor__connection__info}{00127}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__connection__info}{uvisor\_connection\_info}} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00128}\mbox{\hyperlink{structuvisor__connection__info_ae6e19a0d3f227691652d6c628b1b1da3}{00128}}         \mbox{\hyperlink{usb__endian_8h_ad3086c1130ab6b88c53220166e3b5129}{uWord}}      \mbox{\hyperlink{structuvisor__connection__info_ae6e19a0d3f227691652d6c628b1b1da3}{num\_ports}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00129}00129         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00130}\mbox{\hyperlink{structuvisor__connection__info_aeb62916e635358b0bc9556cf08078944}{00130}}                 \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__connection__info_aeb62916e635358b0bc9556cf08078944}{port\_function\_id}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00131}\mbox{\hyperlink{structuvisor__connection__info_a94d67fca4941afedf2d3788035ef9e68}{00131}}                 \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__connection__info_a94d67fca4941afedf2d3788035ef9e68}{port}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00132}\mbox{\hyperlink{structuvisor__connection__info_a876e2bfc93e4abeb7ef99f820017d357}{00132}}         \} \mbox{\hyperlink{struct____packed}{\_\_packed}} \mbox{\hyperlink{structuvisor__connection__info_a876e2bfc93e4abeb7ef99f820017d357}{connections}}[\mbox{\hyperlink{uvisor_8c_a7de848226d9e0fe9872991039bab8e08}{UVISOR\_MAX\_CONN}}];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00133}\mbox{\hyperlink{uvisor_8c_aff182108876044743ace3b9f5cb1514e}{00133}} \} \mbox{\hyperlink{uvisor_8c_aff182108876044743ace3b9f5cb1514e}{\_\_packed}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00134}00134 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00135}\mbox{\hyperlink{uvisor_8c_aaaabada9fefcb76095ad429c479df212}{00135}} \textcolor{preprocessor}{\#define UVISOR\_CONNECTION\_INFO\_SIZE 18}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00136}00136 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00137}00137 \textcolor{comment}{/* struct uvisor\_connection\_info.connection[x].port defines: */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00138}\mbox{\hyperlink{uvisor_8c_ace1f00757a1761140552ecef6087069e}{00138}} \textcolor{preprocessor}{\#define UVISOR\_ENDPOINT\_1               0x01}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00139}\mbox{\hyperlink{uvisor_8c_afc1d05aa6d903f79a6544f14be220f5e}{00139}} \textcolor{preprocessor}{\#define UVISOR\_ENDPOINT\_2               0x02}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00140}00140 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00141}00141 \textcolor{comment}{/* struct uvisor\_connection\_info.connection[x].port\_function\_id defines: */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00142}\mbox{\hyperlink{uvisor_8c_a8f2dde88679de905669a86f7580cfe4c}{00142}} \textcolor{preprocessor}{\#define UVISOR\_FUNCTION\_GENERIC         0x00}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00143}\mbox{\hyperlink{uvisor_8c_a30863760c56400c9b2c87a892bb96ed9}{00143}} \textcolor{preprocessor}{\#define UVISOR\_FUNCTION\_DEBUGGER        0x01}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00144}\mbox{\hyperlink{uvisor_8c_a0fc594a9b203418b54ef44c83246e0ce}{00144}} \textcolor{preprocessor}{\#define UVISOR\_FUNCTION\_HOTSYNC         0x02}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00145}\mbox{\hyperlink{uvisor_8c_ae3b57f9be44794beea0a86a78a51e495}{00145}} \textcolor{preprocessor}{\#define UVISOR\_FUNCTION\_CONSOLE         0x03}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00146}\mbox{\hyperlink{uvisor_8c_a935c022f67548b615a4863822048b8f4}{00146}} \textcolor{preprocessor}{\#define UVISOR\_FUNCTION\_REMOTE\_FILE\_SYS 0x04}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00147}00147 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00148}00148 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00149}00149 \textcolor{comment}{ * Unknown PalmOS stuff.}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00150}00150 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00151}\mbox{\hyperlink{uvisor_8c_a8e225537da746f7fa7c83c6d3ce22700}{00151}} \textcolor{preprocessor}{\#define UVISOR\_GET\_PALM\_INFORMATION             0x04}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00152}\mbox{\hyperlink{uvisor_8c_afa63480bb65a8f7aeac0ef038a009aa4}{00152}} \textcolor{preprocessor}{\#define UVISOR\_GET\_PALM\_INFORMATION\_LEN         0x44}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00153}00153 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00154}\mbox{\hyperlink{structuvisor__palm__connection__info}{00154}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__palm__connection__info}{uvisor\_palm\_connection\_info}} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00155}\mbox{\hyperlink{structuvisor__palm__connection__info_a0d5c0fa02c4959a4d58bcb589f46fc18}{00155}}         \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__palm__connection__info_a0d5c0fa02c4959a4d58bcb589f46fc18}{num\_ports}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00156}\mbox{\hyperlink{structuvisor__palm__connection__info_ac799e53f32ca7c3aa805a2acdcc0752b}{00156}}         \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__palm__connection__info_ac799e53f32ca7c3aa805a2acdcc0752b}{endpoint\_numbers\_different}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00157}\mbox{\hyperlink{structuvisor__palm__connection__info_abd522e1f28c598102f29a182482b2525}{00157}}         \mbox{\hyperlink{usb__endian_8h_ad3086c1130ab6b88c53220166e3b5129}{uWord}}      \mbox{\hyperlink{structuvisor__palm__connection__info_abd522e1f28c598102f29a182482b2525}{reserved1}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00158}00158         \textcolor{keyword}{struct }\{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00159}\mbox{\hyperlink{structuvisor__palm__connection__info_abaa6b010c4f64bf32a9add7f234d909f}{00159}}                 \mbox{\hyperlink{usb__endian_8h_ae3cbe7723d7e86b29e1b743781b29d6c}{uDWord}}    \mbox{\hyperlink{structuvisor__palm__connection__info_abaa6b010c4f64bf32a9add7f234d909f}{port\_function\_id}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00160}\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{00160}}                 \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00161}\mbox{\hyperlink{structuvisor__palm__connection__info_a96024a8432a328ad71478c2e552432f4}{00161}}                 \mbox{\hyperlink{usb__endian_8h_a4dea376b5cd0c5d694660473f5e7a459}{uByte}}      \mbox{\hyperlink{structuvisor__palm__connection__info_a96024a8432a328ad71478c2e552432f4}{end\_point\_info}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00162}\mbox{\hyperlink{structuvisor__palm__connection__info_a7a1c0f195a00f7d053020a2c87f9df6b}{00162}}                 \mbox{\hyperlink{usb__endian_8h_ad3086c1130ab6b88c53220166e3b5129}{uWord}}      \mbox{\hyperlink{structuvisor__palm__connection__info_a7a1c0f195a00f7d053020a2c87f9df6b}{reserved}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00163}\mbox{\hyperlink{structuvisor__palm__connection__info_ae0aadacc7facf5480fd9e8bab7da4664}{00163}}         \} \mbox{\hyperlink{struct____packed}{\_\_packed}} \mbox{\hyperlink{structuvisor__palm__connection__info_ae0aadacc7facf5480fd9e8bab7da4664}{connections}}[\mbox{\hyperlink{uvisor_8c_a7de848226d9e0fe9872991039bab8e08}{UVISOR\_MAX\_CONN}}];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00164}00164 \} \mbox{\hyperlink{uvisor_8c_aff182108876044743ace3b9f5cb1514e}{\_\_packed}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00165}00165 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00166}00166 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00167}\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62af33b27d5eb2fcaa1e39752e037514aac}{00167}}         \mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62af33b27d5eb2fcaa1e39752e037514aac}{UVISOR\_BULK\_DT\_WR}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00168}\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62aa87eb29e8ce9111ad08a45abff9d3644}{00168}}         \mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62aa87eb29e8ce9111ad08a45abff9d3644}{UVISOR\_BULK\_DT\_RD}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00169}\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{00169}}         \mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00170}00170 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00171}00171 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00172}\mbox{\hyperlink{structuvisor__softc}{00172}} \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00173}\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{00173}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__super__softc}{ucom\_super\_softc}} \mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00174}\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{00174}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__softc}{ucom\_softc}} \mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00176}\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{00176}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__xfer}{usb\_xfer}} *\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}}];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00177}\mbox{\hyperlink{structuvisor__softc_a3eef280f6677a74b0c9c96a303bb3906}{00177}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device}{usb\_device}} *\mbox{\hyperlink{structuvisor__softc_a3eef280f6677a74b0c9c96a303bb3906}{sc\_udev}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00178}\mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{00178}}         \textcolor{keyword}{struct }mtx \mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{sc\_mtx}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00179}00179 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00180}\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{00180}}         uint16\_t \mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00181}\mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{00181}} \textcolor{preprocessor}{\#define UVISOR\_FLAG\_PALM4       0x0001}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00182}\mbox{\hyperlink{uvisor_8c_a2a840464541ef3cbf8e54328fe6f900c}{00182}} \textcolor{preprocessor}{\#define UVISOR\_FLAG\_VISOR       0x0002}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00183}\mbox{\hyperlink{uvisor_8c_a88fb7995519a8017d4ae6dcac35f57ec}{00183}} \textcolor{preprocessor}{\#define UVISOR\_FLAG\_PALM35      0x0004}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00184}\mbox{\hyperlink{uvisor_8c_a2053c94316b798bbe9acea87e44ce931}{00184}} \textcolor{preprocessor}{\#define UVISOR\_FLAG\_SEND\_NOTIFY 0x0008}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00185}00185 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00186}\mbox{\hyperlink{structuvisor__softc_a7cf8af98849cd2ee5de696b162ebf15b}{00186}}         uint8\_t \mbox{\hyperlink{structuvisor__softc_a7cf8af98849cd2ee5de696b162ebf15b}{sc\_iface\_no}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00187}\mbox{\hyperlink{structuvisor__softc_a90bccf132e06400f8f8ce6f9cb4cae76}{00187}}         uint8\_t \mbox{\hyperlink{structuvisor__softc_a90bccf132e06400f8f8ce6f9cb4cae76}{sc\_iface\_index}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00188}00188 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00189}00189 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00190}00190 \textcolor{comment}{/* prototypes */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00192}\mbox{\hyperlink{uvisor_8c_a72490a520762a3941feb28cafc74f9de}{00192}} \textcolor{keyword}{static} device\_probe\_t \mbox{\hyperlink{uvisor_8c_a72490a520762a3941feb28cafc74f9de}{uvisor\_probe}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00193}\mbox{\hyperlink{uvisor_8c_a29a9aa1c7b69b867a7df136d9ee7a356}{00193}} \textcolor{keyword}{static} device\_attach\_t \mbox{\hyperlink{uvisor_8c_a29a9aa1c7b69b867a7df136d9ee7a356}{uvisor\_attach}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00194}\mbox{\hyperlink{uvisor_8c_a6e92dee9e82f7f2ef250b71131e9ebfb}{00194}} \textcolor{keyword}{static} device\_detach\_t \mbox{\hyperlink{uvisor_8c_a6e92dee9e82f7f2ef250b71131e9ebfb}{uvisor\_detach}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00195}00195 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{uvisor_8c_a414b235abdcc3f0690aeef196341a1d0}{uvisor\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00197}\mbox{\hyperlink{uvisor_8c_afcd020c5bcf0fc76b7ced5774e75a249}{00197}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uvisor_8c_afcd020c5bcf0fc76b7ced5774e75a249}{uvisor\_write\_callback}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00198}\mbox{\hyperlink{uvisor_8c_ae1a7739b3d2f98430359776e202ac103}{00198}} \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_aad1085e1e87347ed71e554c4b0209239}{usb\_callback\_t}} \mbox{\hyperlink{uvisor_8c_ae1a7739b3d2f98430359776e202ac103}{uvisor\_read\_callback}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00199}00199 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00200}00200 \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} \mbox{\hyperlink{uvisor_8c_aff97a24f1d5aaf4a29f9a1688bdce98f}{uvisor\_init}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00201}00201                     \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__config}{usb\_config}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00202}00202 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_aa36530a150f76bb407e2bc68be0ee112}{uvisor\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00203}00203 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_a03aa34754f213cb0c11702f105e09ca1}{uvisor\_cfg\_open}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00204}00204 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_aa23cbf78fcb208d3e5a4dac3a0593752}{uvisor\_cfg\_close}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00205}00205 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_ab46cba9823dd6ed8fee3bc8eb9487aec}{uvisor\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00206}00206 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_a2564407bd2682460f602b56938701761}{uvisor\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00207}00207 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_a4da06b19de94d372393a57eef1668210}{uvisor\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00208}00208 \textcolor{keyword}{static} \textcolor{keywordtype}{void}     \mbox{\hyperlink{uvisor_8c_a67aee5e0b38497768f163c2390d4a704}{uvisor\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00209}00209 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00210}\mbox{\hyperlink{uvisor_8c_a0597f69a02a5ab9224ff7de47eee417b}{00210}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} \mbox{\hyperlink{uvisor_8c_a0597f69a02a5ab9224ff7de47eee417b}{uvisor\_config}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}}] = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00211}00211         [\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62af33b27d5eb2fcaa1e39752e037514aac}{UVISOR\_BULK\_DT\_WR}}] = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00212}00212                 .\mbox{\hyperlink{structusb__config_a5bd5d569870291a54d9bed8377ed8b10}{type}} = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00213}00213                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00214}00214                 .direction = \mbox{\hyperlink{usb_8h_a9a98e1bc9388db2ab5213e9d6496e851}{UE\_DIR\_OUT}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00215}00215                 .bufsize = \mbox{\hyperlink{uvisor_8c_a5acd880ce8b5025789c703c66a087857}{UVISOROBUFSIZE}} * \mbox{\hyperlink{uvisor_8c_abcd82bcd6a9f4ab2726b0548c648a815}{UVISOROFRAMES}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00216}00216                 .frames = \mbox{\hyperlink{uvisor_8c_abcd82bcd6a9f4ab2726b0548c648a815}{UVISOROFRAMES}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00217}00217                 .flags = \{.pipe\_bof = 1,.force\_short\_xfer = 1,\},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00218}00218                 .callback = \&\mbox{\hyperlink{uvisor_8c_afcd020c5bcf0fc76b7ced5774e75a249}{uvisor\_write\_callback}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00219}00219         \},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00220}00220 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00221}00221         [\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62aa87eb29e8ce9111ad08a45abff9d3644}{UVISOR\_BULK\_DT\_RD}}] = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00222}00222                 .type = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00223}00223                 .endpoint = \mbox{\hyperlink{usb_8h_a1e8d1f402536e634471569b83f603197}{UE\_ADDR\_ANY}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00224}00224                 .direction = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00225}00225                 .bufsize = \mbox{\hyperlink{uvisor_8c_a45c9aac0920fb074bec7a30384dabdef}{UVISORIBUFSIZE}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00226}00226                 .flags = \{.pipe\_bof = 1,.short\_xfer\_ok = 1,\},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00227}00227                 .callback = \&\mbox{\hyperlink{uvisor_8c_ae1a7739b3d2f98430359776e202ac103}{uvisor\_read\_callback}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00228}00228         \},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00229}00229 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00230}00230 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00231}\mbox{\hyperlink{uvisor_8c_a2402dd0a05ee884fb49db86278a209fc}{00231}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structucom__callback}{ucom\_callback}} \mbox{\hyperlink{uvisor_8c_a2402dd0a05ee884fb49db86278a209fc}{uvisor\_callback}} = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00232}00232         .\mbox{\hyperlink{structucom__callback_a7d40e9be40ec39b747c99b2726c24ebf}{ucom\_cfg\_open}} = \&\mbox{\hyperlink{uvisor_8c_a03aa34754f213cb0c11702f105e09ca1}{uvisor\_cfg\_open}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00233}00233         .ucom\_cfg\_close = \&\mbox{\hyperlink{uvisor_8c_aa23cbf78fcb208d3e5a4dac3a0593752}{uvisor\_cfg\_close}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00234}00234         .ucom\_start\_read = \&\mbox{\hyperlink{uvisor_8c_ab46cba9823dd6ed8fee3bc8eb9487aec}{uvisor\_start\_read}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00235}00235         .ucom\_stop\_read = \&\mbox{\hyperlink{uvisor_8c_a2564407bd2682460f602b56938701761}{uvisor\_stop\_read}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00236}00236         .ucom\_start\_write = \&\mbox{\hyperlink{uvisor_8c_a4da06b19de94d372393a57eef1668210}{uvisor\_start\_write}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00237}00237         .ucom\_stop\_write = \&\mbox{\hyperlink{uvisor_8c_a67aee5e0b38497768f163c2390d4a704}{uvisor\_stop\_write}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00238}00238         .ucom\_free = \&\mbox{\hyperlink{uvisor_8c_aa36530a150f76bb407e2bc68be0ee112}{uvisor\_free}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00239}00239 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00240}00240 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00241}\mbox{\hyperlink{uvisor_8c_afec93b1b37ecf570dafd056c7e5a942d}{00241}} \textcolor{keyword}{static} device\_method\_t \mbox{\hyperlink{uvisor_8c_afec93b1b37ecf570dafd056c7e5a942d}{uvisor\_methods}}[] = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00242}00242         DEVMETHOD(device\_probe, \mbox{\hyperlink{uvisor_8c_a72490a520762a3941feb28cafc74f9de}{uvisor\_probe}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00243}00243         DEVMETHOD(device\_attach, \mbox{\hyperlink{uvisor_8c_a29a9aa1c7b69b867a7df136d9ee7a356}{uvisor\_attach}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00244}00244         DEVMETHOD(device\_detach, \mbox{\hyperlink{uvisor_8c_a6e92dee9e82f7f2ef250b71131e9ebfb}{uvisor\_detach}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00245}00245         DEVMETHOD\_END}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00246}00246 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00247}00247 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00248}\mbox{\hyperlink{uvisor_8c_ac5fb5ce76e686fb1c55f1a95f22a6e64}{00248}} \textcolor{keyword}{static} devclass\_t \mbox{\hyperlink{uvisor_8c_ac5fb5ce76e686fb1c55f1a95f22a6e64}{uvisor\_devclass}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00249}00249 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00250}\mbox{\hyperlink{uvisor_8c_ad629f829b4e72f7731acc579d40ec8e6}{00250}} \textcolor{keyword}{static} driver\_t \mbox{\hyperlink{uvisor_8c_ad629f829b4e72f7731acc579d40ec8e6}{uvisor\_driver}} = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00251}00251         .name = \textcolor{stringliteral}{"{}uvisor"{}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00252}00252         .methods = \mbox{\hyperlink{uvisor_8c_afec93b1b37ecf570dafd056c7e5a942d}{uvisor\_methods}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00253}00253         .size = \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00254}00254 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00255}00255 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00256}\mbox{\hyperlink{uvisor_8c_af0a35ece89a53cff9ead033ceebe0c80}{00256}} \textcolor{keyword}{static} \textcolor{keyword}{const} \mbox{\hyperlink{usbdi_8h_acf836fd8d6349b66a31f45420728da8d}{STRUCT\_USB\_HOST\_ID}} \mbox{\hyperlink{uvisor_8c_af0a35ece89a53cff9ead033ceebe0c80}{uvisor\_devs}}[] = \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00257}00257 \textcolor{preprocessor}{\#define UVISOR\_DEV(v,p,i) \{ USB\_VPI(USB\_VENDOR\_\#\#v, USB\_PRODUCT\_\#\#v\#\#\_\#\#p, i) \}}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00258}00258         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(ACEECA, MEZ1000, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00259}00259         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(ALPHASMART, DANA\_SYNC, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00260}00260         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(GARMIN, IQUE\_3600, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00261}00261         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(FOSSIL, WRISTPDA, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00262}00262         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(HANDSPRING, VISOR, \mbox{\hyperlink{uvisor_8c_a2a840464541ef3cbf8e54328fe6f900c}{UVISOR\_FLAG\_VISOR}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00263}00263         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(HANDSPRING, TREO, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00264}00264         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(HANDSPRING, TREO600, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00265}00265         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, M500, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00266}00266         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, M505, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00267}00267         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, M515, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00268}00268         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, I705, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00269}00269         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, M125, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00270}00270         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, M130, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00271}00271         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, TUNGSTEN\_Z, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00272}00272         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, TUNGSTEN\_T, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00273}00273         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, ZIRE, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00274}00274         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(PALM, ZIRE31, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00275}00275         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SAMSUNG, I500, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00276}00276         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_40, 0),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00277}00277         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_41, 0),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00278}00278         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_S360, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00279}00279         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_NX60, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00280}00280         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_35, \mbox{\hyperlink{uvisor_8c_a88fb7995519a8017d4ae6dcac35f57ec}{UVISOR\_FLAG\_PALM35}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00281}00281 \textcolor{comment}{/*  UVISOR\_DEV(SONY, CLIE\_25, UVISOR\_FLAG\_PALM4 ), */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00282}00282         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(SONY, CLIE\_TJ37, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00283}00283 \textcolor{comment}{/*  UVISOR\_DEV(SONY, CLIE\_TH55, UVISOR\_FLAG\_PALM4 ), See PR 80935 */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00284}00284         \mbox{\hyperlink{uvisor_8c_af1e417864e58b160b8ef6dc491841aa2}{UVISOR\_DEV}}(TAPWAVE, ZODIAC, \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}),}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00285}00285 \textcolor{preprocessor}{\#undef UVISOR\_DEV}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00286}00286 \};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00287}00287 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00288}\mbox{\hyperlink{uvisor_8c_a4f4b2da94be0c9b7f2f5420e73bfb04f}{00288}} \mbox{\hyperlink{uvisor_8c_a4f4b2da94be0c9b7f2f5420e73bfb04f}{DRIVER\_MODULE}}(uvisor, uhub, \mbox{\hyperlink{uvisor_8c_ad629f829b4e72f7731acc579d40ec8e6}{uvisor\_driver}}, \mbox{\hyperlink{uvisor_8c_ac5fb5ce76e686fb1c55f1a95f22a6e64}{uvisor\_devclass}}, NULL, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00289}\mbox{\hyperlink{uvisor_8c_ad0b4dc6333bc408359725a685a9afcdd}{00289}} \mbox{\hyperlink{uvisor_8c_ad0b4dc6333bc408359725a685a9afcdd}{MODULE\_DEPEND}}(uvisor, ucom, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00290}\mbox{\hyperlink{uvisor_8c_af333f77ae52986a020ce1f4f5d3cafa2}{00290}} \mbox{\hyperlink{uvisor_8c_ad0b4dc6333bc408359725a685a9afcdd}{MODULE\_DEPEND}}(uvisor, \mbox{\hyperlink{usb__if_8m_adfa3f6da9c4881e494b180c4ebb06470}{usb}}, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00291}\mbox{\hyperlink{uvisor_8c_a7027a9eda72cb95777df808cf752ddef}{00291}} \mbox{\hyperlink{uvisor_8c_a7027a9eda72cb95777df808cf752ddef}{MODULE\_VERSION}}(uvisor, 1);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00292}\mbox{\hyperlink{uvisor_8c_ac65b42a2629c7d20d1b5f2204c0737bb}{00292}} \mbox{\hyperlink{uvisor_8c_ac65b42a2629c7d20d1b5f2204c0737bb}{USB\_PNP\_HOST\_INFO}}(\mbox{\hyperlink{uvisor_8c_af0a35ece89a53cff9ead033ceebe0c80}{uvisor\_devs}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00293}00293 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00294}00294 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00295}\mbox{\hyperlink{uvisor_8c_adc73adda3fc3422f6529a82da7a2536e}{00295}} \mbox{\hyperlink{uvisor_8c_a72490a520762a3941feb28cafc74f9de}{uvisor\_probe}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00296}00296 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00297}00297         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00298}00298 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00299}00299         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a246691e99681281d3113d63e81b7e4f0}{usb\_mode}} != \mbox{\hyperlink{usb_8h_a9bc559812598988121896dceb483806ba1c7091216cfa9c9f4a252b0825ed32cb}{USB\_MODE\_HOST}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00300}00300                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00301}00301         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00302}00302         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a9e2af2c9a58f0df11559c7679185b0e8}{bConfigIndex}} != \mbox{\hyperlink{uvisor_8c_ac942451d2d26ef52a975de5a99b35bf1}{UVISOR\_CONFIG\_INDEX}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00303}00303                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00304}00304         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00305}00305         \textcolor{keywordflow}{if} (uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a50a68740a4c82f1a9b999d4a7994b550}{bIfaceIndex}} != \mbox{\hyperlink{uvisor_8c_ab7d1df9a2d1640c1c5eff8b3a51fa15f}{UVISOR\_IFACE\_INDEX}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00306}00306                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00307}00307         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00308}00308         \textcolor{keywordflow}{return} (\mbox{\hyperlink{usb__lookup_8c_aa691ad42d532498716f358cb1c994fb2}{usbd\_lookup\_id\_by\_uaa}}(\mbox{\hyperlink{uvisor_8c_af0a35ece89a53cff9ead033ceebe0c80}{uvisor\_devs}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{uvisor_8c_af0a35ece89a53cff9ead033ceebe0c80}{uvisor\_devs}}), uaa));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00309}00309 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00310}00310 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00311}00311 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00312}\mbox{\hyperlink{uvisor_8c_a74472b9504c6aa9870a23b2127cb1d1f}{00312}} \mbox{\hyperlink{uvisor_8c_a29a9aa1c7b69b867a7df136d9ee7a356}{uvisor\_attach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00313}00313 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00314}00314         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__attach__arg}{usb\_attach\_arg}} *uaa = device\_get\_ivars(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00315}00315         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00316}00316         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__config}{usb\_config}} uvisor\_config\_copy[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}}];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00317}00317         \textcolor{keywordtype}{int} \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00318}00318 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00319}00319         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}sc=\%p\(\backslash\)n"{}}, sc);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00320}00320         memcpy(uvisor\_config\_copy, \mbox{\hyperlink{uvisor_8c_a0597f69a02a5ab9224ff7de47eee417b}{uvisor\_config}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00321}00321             \textcolor{keyword}{sizeof}(uvisor\_config\_copy));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00322}00322 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00323}00323         \mbox{\hyperlink{usb__util_8c_a2f65a197990caa1a69a16691ce4dc66a}{device\_set\_usb\_desc}}(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00324}00324 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00325}00325         mtx\_init(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{sc\_mtx}}, \textcolor{stringliteral}{"{}uvisor"{}}, NULL, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00326}00326         \mbox{\hyperlink{usb__serial_8c_a3533648e606891c90d0267b21b3ba59e}{ucom\_ref}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00327}00327 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00328}00328         sc-\/>\mbox{\hyperlink{structuvisor__softc_a3eef280f6677a74b0c9c96a303bb3906}{sc\_udev}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00329}00329 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00330}00330         \textcolor{comment}{/* configure the device */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00331}00331 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00332}00332         sc-\/>\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}} = \mbox{\hyperlink{usbdi_8h_ad61be4846786fb86de5691968d1e9b66}{USB\_GET\_DRIVER\_INFO}}(uaa);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00333}00333         sc-\/>\mbox{\hyperlink{structuvisor__softc_a7cf8af98849cd2ee5de696b162ebf15b}{sc\_iface\_no}} = uaa-\/>\mbox{\hyperlink{structusb__attach__arg_a66c2afc71fce73cc432f7d58593e1f26}{info}}.\mbox{\hyperlink{structusbd__lookup__info_a268433f99f7bfcc278a619418e3c44fa}{bIfaceNum}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00334}00334         sc-\/>\mbox{\hyperlink{structuvisor__softc_a90bccf132e06400f8f8ce6f9cb4cae76}{sc\_iface\_index}} = \mbox{\hyperlink{uvisor_8c_ab7d1df9a2d1640c1c5eff8b3a51fa15f}{UVISOR\_IFACE\_INDEX}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00336}00336         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{uvisor_8c_aff97a24f1d5aaf4a29f9a1688bdce98f}{uvisor\_init}}(sc, uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, uvisor\_config\_copy);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00337}00337 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00338}00338         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00339}00339                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}init failed, error=\%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00340}00340                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00341}00341                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00342}00342         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00343}00343         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__transfer_8c_a7494c04fae5c5e7ef1af436308670a21}{usbd\_transfer\_setup}}(uaa-\/>\mbox{\hyperlink{structusb__attach__arg_ac86557d3eaf77874d436ce38648b0276}{device}}, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_a90bccf132e06400f8f8ce6f9cb4cae76}{sc\_iface\_index}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00344}00344             sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}, uvisor\_config\_copy, \mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00345}00345             sc, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00346}00346         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00347}00347                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}could not allocate all pipes\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00348}00348                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00349}00349         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00350}00350 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00351}00351         \mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} = \mbox{\hyperlink{usb__serial_8c_a1a14cc63123395507acee783de212d75}{ucom\_attach}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}}, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}}, 1, sc,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00352}00352             \&\mbox{\hyperlink{uvisor_8c_a2402dd0a05ee884fb49db86278a209fc}{uvisor\_callback}}, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00353}00353         \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00354}00354                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}ucom\_attach failed\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00355}00355                 \textcolor{keywordflow}{goto} detach;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00356}00356         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00357}00357         \mbox{\hyperlink{usb__serial_8c_a5fd441bb430a68061e8c933443f1d14f}{ucom\_set\_pnpinfo\_usb}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}}, dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00358}00358 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00359}00359         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00360}00360 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00361}00361 detach:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00362}00362         \mbox{\hyperlink{uvisor_8c_a6e92dee9e82f7f2ef250b71131e9ebfb}{uvisor\_detach}}(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00363}00363         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00364}00364 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00365}00365 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00366}00366 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00367}\mbox{\hyperlink{uvisor_8c_a75c00bc771d703cce12c6cc53e3021c6}{00367}} \mbox{\hyperlink{uvisor_8c_a6e92dee9e82f7f2ef250b71131e9ebfb}{uvisor\_detach}}(device\_t dev)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00368}00368 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00369}00369         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = device\_get\_softc(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00370}00370 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00371}00371         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}sc=\%p\(\backslash\)n"{}}, sc);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00372}00372 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00373}00373         \mbox{\hyperlink{usb__serial_8c_abcceb7ddf05b758da5f3ada77a962ad1}{ucom\_detach}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}}, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00374}00374         \mbox{\hyperlink{usb__transfer_8c_a2f5ab55bfe7f356bb7a7505ff35c9741}{usbd\_transfer\_unsetup}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}, \mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62a28d3adca45e4a435eda9bb9b5d0d4255}{UVISOR\_N\_TRANSFER}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00375}00375 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00376}00376         device\_claim\_softc(dev);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00377}00377 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00378}00378         \mbox{\hyperlink{uvisor_8c_a414b235abdcc3f0690aeef196341a1d0}{uvisor\_free\_softc}}(sc);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00379}00379 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00380}00380         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00381}00381 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00382}00382 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00383}\mbox{\hyperlink{uvisor_8c_a7e85d333cb55977f3fe83c3c0a00df6c}{00383}} \mbox{\hyperlink{uvisor_8c_a7e85d333cb55977f3fe83c3c0a00df6c}{UCOM\_UNLOAD\_DRAIN}}(uvisor);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00385}00385 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00386}\mbox{\hyperlink{uvisor_8c_a414b235abdcc3f0690aeef196341a1d0}{00386}} \mbox{\hyperlink{uvisor_8c_a414b235abdcc3f0690aeef196341a1d0}{uvisor\_free\_softc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00387}00387 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00388}00388         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a27ca652272693169923a38646505d083}{ucom\_unref}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a2824ba239969b6fd62707d9759d2febc}{sc\_super\_ucom}})) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00389}00389                 mtx\_destroy(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_a76fa4b1f05fc767bed72507e3168806a}{sc\_mtx}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00390}00390                 device\_free\_softc(sc);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00391}00391         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00392}00392 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00393}00393 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00394}00394 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00395}\mbox{\hyperlink{uvisor_8c_aa36530a150f76bb407e2bc68be0ee112}{00395}} \mbox{\hyperlink{uvisor_8c_aa36530a150f76bb407e2bc68be0ee112}{uvisor\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00396}00396 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00397}00397         \mbox{\hyperlink{uvisor_8c_a414b235abdcc3f0690aeef196341a1d0}{uvisor\_free\_softc}}(ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00398}00398 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00399}00399 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00400}00400 \textcolor{keyword}{static} \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00401}\mbox{\hyperlink{uvisor_8c_aff97a24f1d5aaf4a29f9a1688bdce98f}{00401}} \mbox{\hyperlink{uvisor_8c_aff97a24f1d5aaf4a29f9a1688bdce98f}{uvisor\_init}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *udev, \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__config}{usb\_config}} *config)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00402}00402 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00403}00403         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} err = 0;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00404}00404         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00405}00405         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__connection__info}{uvisor\_connection\_info}} coninfo;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00406}00406         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__palm__connection__info}{uvisor\_palm\_connection\_info}} pconinfo;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00407}00407         uint16\_t actlen;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00408}00408         uint8\_t buffer[256];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00409}00409 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00410}00410         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}} \& \mbox{\hyperlink{uvisor_8c_a2a840464541ef3cbf8e54328fe6f900c}{UVISOR\_FLAG\_VISOR}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00411}00411                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}getting connection info\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00412}00412                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6d4986afd33a38b0d2740c9e99515672}{UT\_READ\_VENDOR\_ENDPOINT}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00413}00413                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{uvisor_8c_a7fb8b4620e8f06a03df914c41095484b}{UVISOR\_GET\_CONNECTION\_INFORMATION}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00414}00414                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00415}00415                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00416}00416                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \mbox{\hyperlink{uvisor_8c_aaaabada9fefcb76095ad429c479df212}{UVISOR\_CONNECTION\_INFO\_SIZE}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00417}00417                 err = \mbox{\hyperlink{usb__request_8c_ae914a46bd63666caf7f4d8c182fa5e71}{usbd\_do\_request\_flags}}(udev, NULL,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00418}00418                     \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \&coninfo, \mbox{\hyperlink{usbdi_8h_a7d5cf39b730f3e4d901208079a7340ab}{USB\_SHORT\_XFER\_OK}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00419}00419                     \&actlen, \mbox{\hyperlink{usbdi_8h_a07bf0b2ba580cae69a6c567c40d64b1c}{USB\_DEFAULT\_TIMEOUT}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00420}00420 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00421}00421                 \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00422}00422                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00423}00423                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00424}00424         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00425}00425 \textcolor{preprocessor}{\#ifdef USB\_DEBUG}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00426}00426         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}} \& \mbox{\hyperlink{uvisor_8c_a2a840464541ef3cbf8e54328fe6f900c}{UVISOR\_FLAG\_VISOR}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00427}00427                 uint16\_t i, np;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00428}00428                 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00429}00429 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00430}00430                 np = \mbox{\hyperlink{usb__endian_8h_aa3860f9452db3a5d865cc943e2f01829}{UGETW}}(coninfo.\mbox{\hyperlink{structuvisor__connection__info_ae6e19a0d3f227691652d6c628b1b1da3}{num\_ports}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00431}00431                 \textcolor{keywordflow}{if} (np > \mbox{\hyperlink{uvisor_8c_a7de848226d9e0fe9872991039bab8e08}{UVISOR\_MAX\_CONN}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00432}00432                         np = \mbox{\hyperlink{uvisor_8c_a7de848226d9e0fe9872991039bab8e08}{UVISOR\_MAX\_CONN}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00433}00433                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00434}00434                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}Number of ports: \%d\(\backslash\)n"{}}, np);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00435}00435 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00436}00436                 \textcolor{keywordflow}{for} (i = 0; i < np; ++i) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00437}00437                         \textcolor{keywordflow}{switch} (coninfo.\mbox{\hyperlink{structuvisor__connection__info_a876e2bfc93e4abeb7ef99f820017d357}{connections}}[i].\mbox{\hyperlink{structuvisor__connection__info_aeb62916e635358b0bc9556cf08078944}{port\_function\_id}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00438}00438                         \textcolor{keywordflow}{case} \mbox{\hyperlink{uvisor_8c_a8f2dde88679de905669a86f7580cfe4c}{UVISOR\_FUNCTION\_GENERIC}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00439}00439                                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \textcolor{stringliteral}{"{}Generic"{}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00440}00440                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00441}00441                         \textcolor{keywordflow}{case} \mbox{\hyperlink{uvisor_8c_a30863760c56400c9b2c87a892bb96ed9}{UVISOR\_FUNCTION\_DEBUGGER}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00442}00442                                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \textcolor{stringliteral}{"{}Debugger"{}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00443}00443                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00444}00444                         \textcolor{keywordflow}{case} \mbox{\hyperlink{uvisor_8c_a0fc594a9b203418b54ef44c83246e0ce}{UVISOR\_FUNCTION\_HOTSYNC}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00445}00445                                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \textcolor{stringliteral}{"{}HotSync"{}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00446}00446                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00447}00447                         \textcolor{keywordflow}{case} \mbox{\hyperlink{uvisor_8c_a935c022f67548b615a4863822048b8f4}{UVISOR\_FUNCTION\_REMOTE\_FILE\_SYS}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00448}00448                                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \textcolor{stringliteral}{"{}Remote File System"{}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00449}00449                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00450}00450                         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00451}00451                                 \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}} = \textcolor{stringliteral}{"{}unknown"{}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00452}00452                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00453}00453                         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00454}00454                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}Port \%d is for \%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00455}00455                             coninfo.\mbox{\hyperlink{structuvisor__connection__info_a876e2bfc93e4abeb7ef99f820017d357}{connections}}[i].\mbox{\hyperlink{structuvisor__connection__info_a94d67fca4941afedf2d3788035ef9e68}{port}}, \mbox{\hyperlink{usb__device_8h_ab3a00cd7fdc532cb4cd4d59733b440bf}{desc}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00456}00456                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00457}00457         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00458}00458 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00459}00459 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00460}00460         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}} \& \mbox{\hyperlink{uvisor_8c_aab93851f5ca97dc3bb30c76588c5e513}{UVISOR\_FLAG\_PALM4}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00461}00461                 uint8\_t \mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00462}00462 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00463}00463                 \textcolor{comment}{/* Palm OS 4.0 Hack */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00464}00464                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6d4986afd33a38b0d2740c9e99515672}{UT\_READ\_VENDOR\_ENDPOINT}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00465}00465                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{uvisor_8c_a8e225537da746f7fa7c83c6d3ce22700}{UVISOR\_GET\_PALM\_INFORMATION}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00466}00466                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00467}00467                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00468}00468                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \mbox{\hyperlink{uvisor_8c_afa63480bb65a8f7aeac0ef038a009aa4}{UVISOR\_GET\_PALM\_INFORMATION\_LEN}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00469}00469 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00470}00470                 err = \mbox{\hyperlink{usb__request_8c_ae914a46bd63666caf7f4d8c182fa5e71}{usbd\_do\_request\_flags}}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00471}00471                     (udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \&pconinfo, \mbox{\hyperlink{usbdi_8h_a7d5cf39b730f3e4d901208079a7340ab}{USB\_SHORT\_XFER\_OK}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00472}00472                     \&actlen, \mbox{\hyperlink{usbdi_8h_a07bf0b2ba580cae69a6c567c40d64b1c}{USB\_DEFAULT\_TIMEOUT}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00473}00473 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00474}00474                 \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00475}00475                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00476}00476                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00477}00477                 \textcolor{keywordflow}{if} (actlen < 12) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00478}00478                         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}too little data\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00479}00479                         err = \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945ac568d752239d287fca75588222df1bdf}{USB\_ERR\_INVAL}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00480}00480                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00481}00481                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00482}00482                 \textcolor{keywordflow}{if} (pconinfo.\mbox{\hyperlink{structuvisor__palm__connection__info_ac799e53f32ca7c3aa805a2acdcc0752b}{endpoint\_numbers\_different}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00483}00483                         \mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} = pconinfo.\mbox{\hyperlink{structuvisor__palm__connection__info_ae0aadacc7facf5480fd9e8bab7da4664}{connections}}[0].\mbox{\hyperlink{structuvisor__palm__connection__info_a96024a8432a328ad71478c2e552432f4}{end\_point\_info}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00484}00484                         config[0].endpoint = (\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} \& 0xF);    \textcolor{comment}{/* output */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00485}00485                         config[1].endpoint = (\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} >> 4);     \textcolor{comment}{/* input */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00486}00486                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00487}00487                         \mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} = pconinfo.\mbox{\hyperlink{structuvisor__palm__connection__info_ae0aadacc7facf5480fd9e8bab7da4664}{connections}}[0].\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00488}00488                         config[0].endpoint = (\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} \& 0xF);    \textcolor{comment}{/* output */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00489}00489                         config[1].endpoint = (\mbox{\hyperlink{structuvisor__palm__connection__info_a7e85bd6c615fd7b506f8ad4cea16278f}{port}} \& 0xF);    \textcolor{comment}{/* input */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00490}00490                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00491}00491 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00492}00492                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6d4986afd33a38b0d2740c9e99515672}{UT\_READ\_VENDOR\_ENDPOINT}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00493}00493                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{uvisor_8c_a8e225537da746f7fa7c83c6d3ce22700}{UVISOR\_GET\_PALM\_INFORMATION}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00494}00494                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00495}00495                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00496}00496                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \mbox{\hyperlink{uvisor_8c_afa63480bb65a8f7aeac0ef038a009aa4}{UVISOR\_GET\_PALM\_INFORMATION\_LEN}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00497}00497                 err = \mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(udev, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, buffer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00498}00498                 \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00499}00499                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00500}00500                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00501}00501 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00502}00502         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00503}00503         \textcolor{keywordflow}{if} (sc-\/>\mbox{\hyperlink{structuvisor__softc_aee5ea99dd65d1be388a4153b3b149ada}{sc\_flag}} \& \mbox{\hyperlink{uvisor_8c_a88fb7995519a8017d4ae6dcac35f57ec}{UVISOR\_FLAG\_PALM35}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00504}00504                 \textcolor{comment}{/* get the config number */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00505}00505                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}getting config info\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00506}00506                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_af5074f22163b18c7987cd3ef324cd4e0}{UT\_READ}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00507}00507                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb_8h_a27856773c79338192e9fc272942ffb2a}{UR\_GET\_CONFIG}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00508}00508                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00509}00509                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00510}00510                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 1);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00511}00511 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00512}00512                 err = \mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, buffer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00513}00513                 \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00514}00514                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00515}00515                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00516}00516                 \textcolor{comment}{/* get the interface number */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00517}00517                 \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}get the interface number\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00518}00518                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a760afaa5e388cb04e742b564e4c509f3}{UT\_READ\_DEVICE}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00519}00519                 \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{usb_8h_a3654eeeab796d0863e7527e3aac772fe}{UR\_GET\_INTERFACE}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00520}00520                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00521}00521                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00522}00522                 \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, 1);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00523}00523                 err = \mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, buffer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00524}00524                 \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00525}00525                         \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00526}00526                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00527}00527         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00528}00528 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00529}00529         \mbox{\hyperlink{usb__endian_8h_ad3086c1130ab6b88c53220166e3b5129}{uWord}} wAvail;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00530}00530 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00531}00531         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}getting available bytes\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00532}00532         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6d4986afd33a38b0d2740c9e99515672}{UT\_READ\_VENDOR\_ENDPOINT}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00533}00533         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{uvisor_8c_a6e692fffa9320d036f7095fe234fb44a}{UVISOR\_REQUEST\_BYTES\_AVAILABLE}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00534}00534         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00535}00535         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 5);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00536}00536         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \textcolor{keyword}{sizeof}(wAvail));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00537}00537         err = \mbox{\hyperlink{usbdi_8h_adf0c9751da27fa2e6a3b52a9bfd5f7d1}{usbd\_do\_request}}(udev, NULL, \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, \&wAvail);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00538}00538         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00539}00539                 \textcolor{keywordflow}{goto} done;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00540}00540         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00541}00541         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}avail=\%d\(\backslash\)n"{}}, \mbox{\hyperlink{usb__endian_8h_aa3860f9452db3a5d865cc943e2f01829}{UGETW}}(wAvail));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00542}00542 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00543}00543 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00544}00544         \mbox{\hyperlink{umass_8c_aa786fc43d4857c3ab9f2c777b4e6f9c5}{DPRINTF}}(\textcolor{stringliteral}{"{}done\(\backslash\)n"{}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00545}00545 done:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00546}00546         \textcolor{keywordflow}{return} (err);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00547}00547 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00548}00548 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00549}00549 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00550}\mbox{\hyperlink{uvisor_8c_a03aa34754f213cb0c11702f105e09ca1}{00550}} \mbox{\hyperlink{uvisor_8c_a03aa34754f213cb0c11702f105e09ca1}{uvisor\_cfg\_open}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00551}00551 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00552}00552         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00553}00553 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00554}00554 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00555}00555 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00556}\mbox{\hyperlink{uvisor_8c_aa23cbf78fcb208d3e5a4dac3a0593752}{00556}} \mbox{\hyperlink{uvisor_8c_aa23cbf78fcb208d3e5a4dac3a0593752}{uvisor\_cfg\_close}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00557}00557 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00558}00558         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00559}00559         uint8\_t buffer[\mbox{\hyperlink{uvisor_8c_aaaabada9fefcb76095ad429c479df212}{UVISOR\_CONNECTION\_INFO\_SIZE}}];}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00560}00560         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00561}00561         \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}} err;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00562}00562 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00563}00563         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bmRequestType = \mbox{\hyperlink{usb_8h_a6d4986afd33a38b0d2740c9e99515672}{UT\_READ\_VENDOR\_ENDPOINT}};  \textcolor{comment}{/* XXX read? */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00564}00564         \mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.bRequest = \mbox{\hyperlink{uvisor_8c_a97c50fa12dc9932fcbfa8eeeae66f99d}{UVISOR\_CLOSE\_NOTIFICATION}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00565}00565         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wValue, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00566}00566         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wIndex, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00567}00567         \mbox{\hyperlink{usb__endian_8h_a69f5ba903a605cb9dc7eed2ad905f2dc}{USETW}}(\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}.wLength, \mbox{\hyperlink{uvisor_8c_aaaabada9fefcb76095ad429c479df212}{UVISOR\_CONNECTION\_INFO\_SIZE}});}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00568}00568 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00569}00569         err = \mbox{\hyperlink{usb__serial_8h_aef1b97ecbf82451d6b353c561648b24f}{ucom\_cfg\_do\_request}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a3eef280f6677a74b0c9c96a303bb3906}{sc\_udev}}, \&sc-\/>\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}}, }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00570}00570             \&\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, buffer, 0, 1000);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00571}00571         \textcolor{keywordflow}{if} (err) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00572}00572                 DPRINTFN(0, \textcolor{stringliteral}{"{}close notification failed, error=\%s\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00573}00573                     \mbox{\hyperlink{usb__error_8c_a2391eb446dce3e4368cacf781857774e}{usbd\_errstr}}(err));}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00574}00574         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00575}00575 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00576}00576 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00577}00577 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00578}\mbox{\hyperlink{uvisor_8c_ab46cba9823dd6ed8fee3bc8eb9487aec}{00578}} \mbox{\hyperlink{uvisor_8c_ab46cba9823dd6ed8fee3bc8eb9487aec}{uvisor\_start\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00579}00579 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00580}00580         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00581}00581 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00582}00582         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62aa87eb29e8ce9111ad08a45abff9d3644}{UVISOR\_BULK\_DT\_RD}}]);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00583}00583 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00584}00584 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00585}00585 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00586}\mbox{\hyperlink{uvisor_8c_a2564407bd2682460f602b56938701761}{00586}} \mbox{\hyperlink{uvisor_8c_a2564407bd2682460f602b56938701761}{uvisor\_stop\_read}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00587}00587 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00588}00588         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00589}00589 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00590}00590         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62aa87eb29e8ce9111ad08a45abff9d3644}{UVISOR\_BULK\_DT\_RD}}]);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00591}00591 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00592}00592 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00593}00593 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00594}\mbox{\hyperlink{uvisor_8c_a4da06b19de94d372393a57eef1668210}{00594}} \mbox{\hyperlink{uvisor_8c_a4da06b19de94d372393a57eef1668210}{uvisor\_start\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00595}00595 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00596}00596         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00597}00597 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00598}00598         \mbox{\hyperlink{usb__transfer_8c_a7a1f2d22a70b832e8cc31366adec443d}{usbd\_transfer\_start}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62af33b27d5eb2fcaa1e39752e037514aac}{UVISOR\_BULK\_DT\_WR}}]);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00599}00599 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00600}00600 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00601}00601 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00602}\mbox{\hyperlink{uvisor_8c_a67aee5e0b38497768f163c2390d4a704}{00602}} \mbox{\hyperlink{uvisor_8c_a67aee5e0b38497768f163c2390d4a704}{uvisor\_stop\_write}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structucom__softc}{ucom\_softc}} *ucom)}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00603}00603 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00604}00604         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = ucom-\/>\mbox{\hyperlink{structucom__softc_a4ebbc8663d0291bf6e0ffb93cc2dc70e}{sc\_parent}};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00605}00605 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00606}00606         \mbox{\hyperlink{usb__transfer_8c_abe245d973df0cfd6fb96b884d33ebce3}{usbd\_transfer\_stop}}(sc-\/>\mbox{\hyperlink{structuvisor__softc_a643529125a5d95d9143f205ecd96fbd3}{sc\_xfer}}[\mbox{\hyperlink{uvisor_8c_a8628933cde20921c453a6d2607bdad62af33b27d5eb2fcaa1e39752e037514aac}{UVISOR\_BULK\_DT\_WR}}]);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00607}00607 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00608}00608 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00609}00609 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00610}\mbox{\hyperlink{uvisor_8c_a094754546571ed94d43e1eea0cb9e965}{00610}} \mbox{\hyperlink{uvisor_8c_afcd020c5bcf0fc76b7ced5774e75a249}{uvisor\_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{uvisor_8c_source_l00611}00611 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00612}00612         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00613}00613         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00614}00614         uint32\_t actlen;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00615}00615         uint8\_t x;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00616}00616 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00617}00617         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00618}00618         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00619}00619         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00620}00620 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00621}00621                 \textcolor{keywordflow}{for} (x = 0; x != \mbox{\hyperlink{uvisor_8c_abcd82bcd6a9f4ab2726b0548c648a815}{UVISOROFRAMES}}; x++) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00622}00622                         \mbox{\hyperlink{usb__transfer_8c_aa9f706e03ede8468e81331de474aebb4}{usbd\_xfer\_set\_frame\_offset}}(xfer, }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00623}00623                             x * \mbox{\hyperlink{uvisor_8c_a5acd880ce8b5025789c703c66a087857}{UVISOROBUFSIZE}}, x);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00624}00624 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00625}00625                         pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, x);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00626}00626                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{usb__serial_8c_a014a131e1bce5fb84d1788e48a69733f}{ucom\_get\_data}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}}, pc, 0,}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00627}00627                             \mbox{\hyperlink{uvisor_8c_a5acd880ce8b5025789c703c66a087857}{UVISOROBUFSIZE}}, \&actlen)) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00628}00628                                 \mbox{\hyperlink{usb__transfer_8c_a31786497f0f4222203b1e993d52af753}{usbd\_xfer\_set\_frame\_len}}(xfer, x, actlen);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00629}00629                         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00630}00630                                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00631}00631                         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00632}00632                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00633}00633                 \textcolor{comment}{/* check for data */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00634}00634                 \textcolor{keywordflow}{if} (x != 0) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00635}00635                         \mbox{\hyperlink{usb__transfer_8c_a10f82b008c3a5311e5210e44beaca014}{usbd\_xfer\_set\_frames}}(xfer, x);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00636}00636                         \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00637}00637                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00638}00638                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00639}00639 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00640}00640         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00641}00641                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00642}00642                         \textcolor{comment}{/* try to clear stall first */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00643}00643                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00644}00644                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00645}00645                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00646}00646                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00647}00647         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00648}00648 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00649}00649 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00650}00650 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00651}\mbox{\hyperlink{uvisor_8c_a1862c6f1c322bb2681871f54185c1b53}{00651}} \mbox{\hyperlink{uvisor_8c_ae1a7739b3d2f98430359776e202ac103}{uvisor\_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{uvisor_8c_source_l00652}00652 \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00653}00653         \textcolor{keyword}{struct }\mbox{\hyperlink{structuvisor__softc}{uvisor\_softc}} *sc = \mbox{\hyperlink{usb__transfer_8c_ab75ef6d82c4a000a3d16c133d1d589b0}{usbd\_xfer\_softc}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00654}00654         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__page__cache}{usb\_page\_cache}} *pc;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00655}00655         \textcolor{keywordtype}{int} actlen;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00656}00656 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00657}00657         \mbox{\hyperlink{usb__transfer_8c_ac0c68320222f26c2a3eba47b46c47899}{usbd\_xfer\_status}}(xfer, \&actlen, NULL, NULL, NULL);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00658}00658 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00659}00659         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{usbdi_8h_adc2dd35bd0dd6a42d3abd4230796a7b0}{USB\_GET\_STATE}}(xfer)) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00660}00660         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a8f0386217ba77be3e47721fae9aa9b3d}{USB\_ST\_TRANSFERRED}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00661}00661                 pc = \mbox{\hyperlink{usb__transfer_8c_a6e66695b916f0770a259bed959c21555}{usbd\_xfer\_get\_frame}}(xfer, 0);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00662}00662                 \mbox{\hyperlink{usb__serial_8c_af96494685ba012ad6a1c2e18b783e185}{ucom\_put\_data}}(\&sc-\/>\mbox{\hyperlink{structuvisor__softc_af75675d51598b7e5cc6e53fb5343285a}{sc\_ucom}}, pc, 0, actlen);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00663}00663 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00664}00664         \textcolor{keywordflow}{case} \mbox{\hyperlink{usbdi_8h_a3aa7120c3ecab31972b8fe219530f552}{USB\_ST\_SETUP}}:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00665}00665 tr\_setup:}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00666}00666                 \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{uvisor_8c_source_l00667}00667                 \mbox{\hyperlink{usb__transfer_8c_a10c440b0b97cac293b4df9d558f15bac}{usbd\_transfer\_submit}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00668}00668                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00669}00669 }
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00670}00670         \textcolor{keywordflow}{default}:                        \textcolor{comment}{/* Error */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00671}00671                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{if__runreg_8h_a9f8f252ecb5b3fb46dafe827231faf70}{error}} != \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945abe72c3e4b6644141519a28f1ef97f717}{USB\_ERR\_CANCELLED}}) \{}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00672}00672                         \textcolor{comment}{/* try to clear stall first */}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00673}00673                         \mbox{\hyperlink{usb__transfer_8c_abadf9cb2f8e81a5133af0c8030039de3}{usbd\_xfer\_set\_stall}}(xfer);}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00674}00674                         \textcolor{keywordflow}{goto} tr\_setup;}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00675}00675                 \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00676}00676                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00677}00677         \}}
\DoxyCodeLine{\Hypertarget{uvisor_8c_source_l00678}00678 \}}

\end{DoxyCode}
