\hypertarget{usb__template_8h_source}{}\doxysection{usb\+\_\+template.\+h}
\label{usb__template_8h_source}\index{dev/usb/template/usb\_template.h@{dev/usb/template/usb\_template.h}}
\mbox{\hyperlink{usb__template_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00001}00001 \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00002}00002 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00003}00003 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2007 Hans Petter Selasky <hselasky@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00006}00006 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00008}00008 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00009}00009 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00010}00010 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00011}00011 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00012}00012 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00013}00013 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00014}00014 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00015}00015 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00016}00016 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00017}00017 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00018}00018 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00019}00019 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00020}00020 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00021}00021 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00022}00022 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00023}00023 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00024}00024 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00025}00025 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00026}00026 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00027}00027 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00028}00028 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00029}00029 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00030}00030 \textcolor{comment}{/* USB templates are used to build up real USB descriptors */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00031}00031 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef \_USB\_TEMPLATE\_H\_}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00033}00033 \textcolor{preprocessor}{\#define \_USB\_TEMPLATE\_H\_}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00035}00035 \textcolor{preprocessor}{\#ifndef USB\_TEMPLATE\_VENDOR}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00036}00036 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00037}00037 \textcolor{comment}{ * https://github.com/obdev/v-\/usb/blob/master/usbdrv/USB-\/IDs-\/for-\/free.txt}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00038}00038 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00039}\mbox{\hyperlink{usb__template_8h_a4eb1c883c2f66f7f4ae94383fd6e01e3}{00039}} \textcolor{preprocessor}{\#define USB\_TEMPLATE\_VENDOR             0x16c0}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00040}\mbox{\hyperlink{usb__template_8h_a1a5f2918512e51fd0164ca8208965e24}{00040}} \textcolor{preprocessor}{\#define USB\_TEMPLATE\_MANUFACTURER       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00041}00041 \textcolor{preprocessor}{        "{}The FreeBSD Project (https://www.FreeBSD.org)"{}}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00042}00042 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00043}00043 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00044}\mbox{\hyperlink{usb__template_8h_ab56131b3dcadea9f2be25f942a4f2af7}{00044}} \textcolor{keyword}{typedef} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *(\mbox{\hyperlink{usb__template_8h_ab56131b3dcadea9f2be25f942a4f2af7}{usb\_temp\_get\_string\_desc\_t}})(uint16\_t lang\_id, uint8\_t string\_index);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00045}\mbox{\hyperlink{usb__template_8h_ab111925929cf0aecdc4029bf4fe9a869}{00045}} \textcolor{keyword}{typedef} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *(\mbox{\hyperlink{usb__template_8h_ab111925929cf0aecdc4029bf4fe9a869}{usb\_temp\_get\_vendor\_desc\_t}})(\textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device__request}{usb\_device\_request}} *\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}, uint16\_t *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}});}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00046}00046 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00047}\mbox{\hyperlink{structusb__temp__packet__size}{00047}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__packet__size}{usb\_temp\_packet\_size}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00048}\mbox{\hyperlink{structusb__temp__packet__size_a1e72dec91037be6b45fcb2a7b8a6034a}{00048}}         uint16\_t \mbox{\hyperlink{structusb__temp__packet__size_a1e72dec91037be6b45fcb2a7b8a6034a}{mps}}[\mbox{\hyperlink{usb_8h_a3c4bce858023c9ab927edf6d748809ce}{USB\_SPEED\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00049}00049 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00050}00050 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00051}\mbox{\hyperlink{structusb__temp__interval}{00051}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interval}{usb\_temp\_interval}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00052}\mbox{\hyperlink{structusb__temp__interval_a5cd37cfd16db2cf6c5c87e30cbd678c1}{00052}}         uint8\_t \mbox{\hyperlink{structusb__temp__interval_a5cd37cfd16db2cf6c5c87e30cbd678c1}{bInterval}}[\mbox{\hyperlink{usb_8h_a3c4bce858023c9ab927edf6d748809ce}{USB\_SPEED\_MAX}}];}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00053}00053 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00054}00054 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00055}\mbox{\hyperlink{structusb__temp__endpoint__desc}{00055}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00056}\mbox{\hyperlink{structusb__temp__endpoint__desc_ac747053bd19d3c55d2d8fda43db33cf3}{00056}}         \textcolor{keyword}{const} \textcolor{keywordtype}{void} **\mbox{\hyperlink{structusb__temp__endpoint__desc_ac747053bd19d3c55d2d8fda43db33cf3}{ppRawDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00057}\mbox{\hyperlink{structusb__temp__endpoint__desc_a81880a9d278c78c45b0012c1c8a65067}{00057}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__packet__size}{usb\_temp\_packet\_size}} *\mbox{\hyperlink{structusb__temp__endpoint__desc_a81880a9d278c78c45b0012c1c8a65067}{pPacketSize}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00058}\mbox{\hyperlink{structusb__temp__endpoint__desc_a89f35bb7c2ca426dbbf971bbdef6a47a}{00058}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interval}{usb\_temp\_interval}} *\mbox{\hyperlink{structusb__temp__endpoint__desc_a89f35bb7c2ca426dbbf971bbdef6a47a}{pIntervals}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00059}00059         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00060}00060 \textcolor{comment}{         * If (bEndpointAddress \& UE\_ADDR) is non-\/zero the endpoint number}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00061}00061 \textcolor{comment}{         * is pre-\/selected for this endpoint descriptor. Else an endpoint}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00062}00062 \textcolor{comment}{         * number is automatically chosen.}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00063}00063 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00064}\mbox{\hyperlink{structusb__temp__endpoint__desc_a1171071edeae811aa5fea8cea33c1434}{00064}}         uint8\_t \mbox{\hyperlink{structusb__temp__endpoint__desc_a1171071edeae811aa5fea8cea33c1434}{bEndpointAddress}};       \textcolor{comment}{/* UE\_DIR\_IN or UE\_DIR\_OUT */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00065}\mbox{\hyperlink{structusb__temp__endpoint__desc_aeaac8c1344c9abc1f26e3b1d3696f91f}{00065}}         uint8\_t \mbox{\hyperlink{structusb__temp__endpoint__desc_aeaac8c1344c9abc1f26e3b1d3696f91f}{bmAttributes}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00066}00066 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00068}\mbox{\hyperlink{structusb__temp__interface__desc}{00068}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00069}\mbox{\hyperlink{structusb__temp__interface__desc_abe7e968425fd9c2f434a4b8cbd2fd1bf}{00069}}         \textcolor{keyword}{const} \textcolor{keywordtype}{void} **\mbox{\hyperlink{structusb__temp__interface__desc_abe7e968425fd9c2f434a4b8cbd2fd1bf}{ppRawDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00070}\mbox{\hyperlink{structusb__temp__interface__desc_a4644da9b53684d59fb37172855476f4e}{00070}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} **\mbox{\hyperlink{structusb__temp__interface__desc_a4644da9b53684d59fb37172855476f4e}{ppEndpoints}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00071}\mbox{\hyperlink{structusb__temp__interface__desc_ae178a2bf1149c5722c1883c3875567f8}{00071}}         uint8\_t \mbox{\hyperlink{structusb__temp__interface__desc_ae178a2bf1149c5722c1883c3875567f8}{bInterfaceClass}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00072}\mbox{\hyperlink{structusb__temp__interface__desc_ad14be05a1c70fd2d0d07fba4c3212554}{00072}}         uint8\_t \mbox{\hyperlink{structusb__temp__interface__desc_ad14be05a1c70fd2d0d07fba4c3212554}{bInterfaceSubClass}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00073}\mbox{\hyperlink{structusb__temp__interface__desc_a636b4822d3dd9f6f3c284489668bf1a4}{00073}}         uint8\_t \mbox{\hyperlink{structusb__temp__interface__desc_a636b4822d3dd9f6f3c284489668bf1a4}{bInterfaceProtocol}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00074}\mbox{\hyperlink{structusb__temp__interface__desc_a41265b656acb9737684bde87eb343331}{00074}}         uint8\_t \mbox{\hyperlink{structusb__temp__interface__desc_a41265b656acb9737684bde87eb343331}{iInterface}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00075}\mbox{\hyperlink{structusb__temp__interface__desc_ae9a225c37a754193479e3249c20b1e7f}{00075}}         uint8\_t \mbox{\hyperlink{structusb__temp__interface__desc_ae9a225c37a754193479e3249c20b1e7f}{isAltInterface}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00076}00076 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00077}00077 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00078}\mbox{\hyperlink{structusb__temp__config__desc}{00078}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00079}\mbox{\hyperlink{structusb__temp__config__desc_a2b5fac2213f207fc7ab491eadd3e1c04}{00079}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} **\mbox{\hyperlink{structusb__temp__config__desc_a2b5fac2213f207fc7ab491eadd3e1c04}{ppIfaceDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00080}\mbox{\hyperlink{structusb__temp__config__desc_ab1793702b7b669df6cff962eccc9b61c}{00080}}         uint8\_t \mbox{\hyperlink{structusb__temp__config__desc_ab1793702b7b669df6cff962eccc9b61c}{bmAttributes}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00081}\mbox{\hyperlink{structusb__temp__config__desc_a14aeb906340e9b72f0a5347171062671}{00081}}         uint8\_t \mbox{\hyperlink{structusb__temp__config__desc_a14aeb906340e9b72f0a5347171062671}{bMaxPower}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00082}\mbox{\hyperlink{structusb__temp__config__desc_af8ddf065ce0abb305e2b744be0f5eed0}{00082}}         uint8\_t \mbox{\hyperlink{structusb__temp__config__desc_af8ddf065ce0abb305e2b744be0f5eed0}{iConfiguration}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00083}00083 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00084}00084 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00085}\mbox{\hyperlink{structusb__temp__device__desc}{00085}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00086}\mbox{\hyperlink{structusb__temp__device__desc_a38087eafc51aa5ee939e61f10bf87fb2}{00086}}         \mbox{\hyperlink{usb__template_8h_ab56131b3dcadea9f2be25f942a4f2af7}{usb\_temp\_get\_string\_desc\_t}} *\mbox{\hyperlink{structusb__temp__device__desc_a38087eafc51aa5ee939e61f10bf87fb2}{getStringDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00087}\mbox{\hyperlink{structusb__temp__device__desc_a96879fd3b108dead84bc7cb6748432fa}{00087}}         \mbox{\hyperlink{usb__template_8h_ab111925929cf0aecdc4029bf4fe9a869}{usb\_temp\_get\_vendor\_desc\_t}} *\mbox{\hyperlink{structusb__temp__device__desc_a96879fd3b108dead84bc7cb6748432fa}{getVendorDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00088}\mbox{\hyperlink{structusb__temp__device__desc_a70ed2ac4a671516c58a48d1b3e066789}{00088}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} **\mbox{\hyperlink{structusb__temp__device__desc_a70ed2ac4a671516c58a48d1b3e066789}{ppConfigDesc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00089}\mbox{\hyperlink{structusb__temp__device__desc_a857be9aeaae625cebc6e227bf7a5cf39}{00089}}         uint16\_t \mbox{\hyperlink{structusb__temp__device__desc_a857be9aeaae625cebc6e227bf7a5cf39}{idVendor}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00090}\mbox{\hyperlink{structusb__temp__device__desc_a494cea07a085ef1e5e5a884246403c5f}{00090}}         uint16\_t \mbox{\hyperlink{structusb__temp__device__desc_a494cea07a085ef1e5e5a884246403c5f}{idProduct}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00091}\mbox{\hyperlink{structusb__temp__device__desc_a7294f4d87b41d84f5919472044743391}{00091}}         uint16\_t \mbox{\hyperlink{structusb__temp__device__desc_a7294f4d87b41d84f5919472044743391}{bcdDevice}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00092}\mbox{\hyperlink{structusb__temp__device__desc_a1936b57cb5a4eeab1fda912e2911eba6}{00092}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_a1936b57cb5a4eeab1fda912e2911eba6}{bDeviceClass}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00093}\mbox{\hyperlink{structusb__temp__device__desc_a6319e00aa9780bd0727dbba2bd2b4a48}{00093}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_a6319e00aa9780bd0727dbba2bd2b4a48}{bDeviceSubClass}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00094}\mbox{\hyperlink{structusb__temp__device__desc_a07141e3a9c11818dfd6ff36086a5b5d0}{00094}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_a07141e3a9c11818dfd6ff36086a5b5d0}{bDeviceProtocol}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00095}\mbox{\hyperlink{structusb__temp__device__desc_a5802787f5d68cf94749d575ffa5fb3d3}{00095}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_a5802787f5d68cf94749d575ffa5fb3d3}{iManufacturer}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00096}\mbox{\hyperlink{structusb__temp__device__desc_af636e4d930744c5e5e96704f55162747}{00096}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_af636e4d930744c5e5e96704f55162747}{iProduct}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00097}\mbox{\hyperlink{structusb__temp__device__desc_adb61e135cda1361d81341054d85625e1}{00097}}         uint8\_t \mbox{\hyperlink{structusb__temp__device__desc_adb61e135cda1361d81341054d85625e1}{iSerialNumber}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00098}00098 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00099}00099 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00100}\mbox{\hyperlink{structusb__temp__data}{00100}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__data}{usb\_temp\_data}} \{}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00101}\mbox{\hyperlink{structusb__temp__data_a81c35742896bee8b35972abb9a49f9f7}{00101}}         \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} *\mbox{\hyperlink{structusb__temp__data_a81c35742896bee8b35972abb9a49f9f7}{tdd}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00102}\mbox{\hyperlink{structusb__temp__data_a756792a01ba34e00895b6e1a56b93547}{00102}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__descriptor}{usb\_device\_descriptor}} \mbox{\hyperlink{structusb__temp__data_a756792a01ba34e00895b6e1a56b93547}{udd}};       \textcolor{comment}{/* device descriptor */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00103}\mbox{\hyperlink{structusb__temp__data_aaf24c399c687f121ccf3a1986e4676f9}{00103}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__device__qualifier}{usb\_device\_qualifier}} \mbox{\hyperlink{structusb__temp__data_aaf24c399c687f121ccf3a1986e4676f9}{udq}}; \textcolor{comment}{/* device qualifier */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00104}00104 \};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00105}00105 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00106}00106 \textcolor{comment}{/* prototypes */}}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00107}00107 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00108}00108 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a413ac0cd9b9ca2134584a40cdb06e8a2}{usb\_template\_audio}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00109}00109 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_af29c5e51284e133f290f6dc5e1e44cae}{usb\_template\_cdce}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00110}00110 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_aedc880ca8b7086b12a1272d153255c2b}{usb\_template\_kbd}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00111}00111 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a32b896c86b732a715203c7b1948c6cb9}{usb\_template\_modem}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00112}00112 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a2f61f4a46537c9e66c7e5eade75c92c7}{usb\_template\_mouse}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00113}00113 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_aaa15875bc0e9412eaa4140407bf3afa3}{usb\_template\_msc}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00114}00114 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a2cd386591316db266679b0682c489193}{usb\_template\_mtp}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00115}00115 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a699d47468cb3fa080b845f9ef81e9897}{usb\_template\_phone}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00116}00116 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a6aba6e4f855631d8c6942ff710fcd866}{usb\_template\_serialnet}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00117}00117 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_adca25a20438c06c44568a17e6cbd4209}{usb\_template\_midi}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00118}00118 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a4dcf841fe7e2ceb0b4052bd671ed709c}{usb\_template\_multi}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00119}00119 \textcolor{keyword}{extern} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template_8h_a21fa41850851cbd6a414d004b1d751a7}{usb\_template\_cdceem}};}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00121}00121 \textcolor{keywordtype}{void}            \mbox{\hyperlink{usb__template_8h_ac9d752167a4066535a7fa9bedbcbfd04}{usb\_decode\_str\_desc}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}} *sd,}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00122}00122                     \textcolor{keywordtype}{char} *buf, \textcolor{keywordtype}{size\_t} buflen);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00123}00123 \mbox{\hyperlink{usbdi_8h_a5daf16538c7ea36dad2de85182c72945}{usb\_error\_t}}  \mbox{\hyperlink{usb__template_8h_a0774bf7603669de4ba5852200dca8c11}{usb\_temp\_setup}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *,}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00124}00124                     \textcolor{keyword}{const} \textcolor{keyword}{struct} \mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} *);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00125}00125 \textcolor{keywordtype}{void}            \mbox{\hyperlink{usb__template_8h_a65df10b023c888c03cbc04dc683e36f4}{usb\_temp\_unsetup}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structusb__device}{usb\_device}} *);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00126}00126 \textcolor{keywordtype}{int}             \mbox{\hyperlink{usb__template_8h_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}}(SYSCTL\_HANDLER\_ARGS);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00128}\mbox{\hyperlink{usb__template_8h_adba160627c6633b6f69be05c8e2e5ac2}{00128}} \mbox{\hyperlink{usb__template_8h_adba160627c6633b6f69be05c8e2e5ac2}{SYSCTL\_DECL}}(\_hw\_usb\_templates);}
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00129}00129 }
\DoxyCodeLine{\Hypertarget{usb__template_8h_source_l00130}00130 \textcolor{preprocessor}{\#endif                                  }\textcolor{comment}{/* \_USB\_TEMPLATE\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
