\hypertarget{usb__template__cdceem_8c_source}{}\doxysection{usb\+\_\+template\+\_\+cdceem.\+c}
\label{usb__template__cdceem_8c_source}\index{dev/usb/template/usb\_template\_cdceem.c@{dev/usb/template/usb\_template\_cdceem.c}}
\mbox{\hyperlink{usb__template__cdceem_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00001}00001 \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00002}00002 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00003}00003 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2008 Hans Petter Selasky <hselasky@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2018 The FreeBSD Foundation}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00007}00007 \textcolor{comment}{ * Copyright (c) 2019 Edward Tomasz Napierala <trasz@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00008}00008 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00009}00009 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00010}00010 \textcolor{comment}{ * Portions of this software were developed by Edward Tomasz Napierala}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00011}00011 \textcolor{comment}{ * under sponsorship from the FreeBSD Foundation.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00013}00013 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00014}00014 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00015}00015 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00016}00016 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00017}00017 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00018}00018 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00019}00019 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00020}00020 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00021}00021 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00022}00022 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00023}00023 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00024}00024 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00025}00025 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00026}00026 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00027}00027 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00028}00028 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00029}00029 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00030}00030 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00031}00031 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00032}00032 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00033}00033 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00035}00035 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00036}00036 \textcolor{comment}{ * This file contains the USB templates for an USB Mass Storage Device.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00037}00037 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00039}00039 \textcolor{preprocessor}{\#ifdef USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00040}00040 \textcolor{preprocessor}{\#include USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00041}00041 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/stdint.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/stddef.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/types.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <sys/unistd.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <sys/callout.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00060}00060 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__core_8h}{dev/usb/usb\_core.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__ioctl_8h}{dev/usb/usb\_ioctl.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__util_8h}{dev/usb/usb\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00066}00066 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__template_8h}{dev/usb/template/usb\_template.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00068}00068 \textcolor{preprocessor}{\#endif                  }\textcolor{comment}{/* USB\_GLOBAL\_INCLUDE\_FILE */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00070}00070 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00071}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaee67daeaddd994aa2091b7547b53a535}{00071}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaee67daeaddd994aa2091b7547b53a535}{CDCEEM\_LANG\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00072}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eae47bb1983431c70e37d53233cc699807}{00072}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eae47bb1983431c70e37d53233cc699807}{CDCEEM\_INTERFACE\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00073}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea06c20cbb9c8388bba37747822a082fcb}{00073}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea06c20cbb9c8388bba37747822a082fcb}{CDCEEM\_CONFIGURATION\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00074}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaa0235c5d11787384444b298309f4b654}{00074}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaa0235c5d11787384444b298309f4b654}{CDCEEM\_MANUFACTURER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00075}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea47d23e759f437ed500a85af3cc1267d3}{00075}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea47d23e759f437ed500a85af3cc1267d3}{CDCEEM\_PRODUCT\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00076}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea1116faa40ba4461682aef96c6879a163}{00076}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea1116faa40ba4461682aef96c6879a163}{CDCEEM\_SERIAL\_NUMBER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00077}\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea624a0398ef60000fdd43705f07157acd}{00077}}         \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea624a0398ef60000fdd43705f07157acd}{CDCEEM\_MAX\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00078}00078 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00080}\mbox{\hyperlink{usb__template__cdceem_8c_a151f21539428e7402f27ec02221b6192}{00080}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_VENDOR\_ID        USB\_TEMPLATE\_VENDOR}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00081}\mbox{\hyperlink{usb__template__cdceem_8c_a4f849b25e1bcda2e167d80e891464f6d}{00081}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_PRODUCT\_ID       0x27df}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00082}\mbox{\hyperlink{usb__template__cdceem_8c_a72cc6628b1022fc8059bdb7cf2b3d558}{00082}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_INTERFACE        "{}USB CDC EEM Interface"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00083}\mbox{\hyperlink{usb__template__cdceem_8c_a31c31a24e58a9da037f6a4bec490971a}{00083}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_CONFIGURATION    "{}Default Config"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00084}\mbox{\hyperlink{usb__template__cdceem_8c_a33cbfb5eb0464a299c88b0c1d536e2ad}{00084}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_MANUFACTURER     USB\_TEMPLATE\_MANUFACTURER}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00085}\mbox{\hyperlink{usb__template__cdceem_8c_a9424ea151c970c2395e789405722961d}{00085}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_PRODUCT          "{}CDC EEM"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00086}\mbox{\hyperlink{usb__template__cdceem_8c_a7a6741bffa0f6138d9443afdb34a9847}{00086}} \textcolor{preprocessor}{\#define CDCEEM\_DEFAULT\_SERIAL\_NUMBER    "{}March 2008"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00088}\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{00088}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00089}\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{00089}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00090}\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{00090}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00091}\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{00091}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00092}\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{00092}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00093}00093 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00094}\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{00094}} \textcolor{keyword}{static} \textcolor{keyword}{struct }sysctl\_ctx\_list           \mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00096}00096 \textcolor{comment}{/* prototypes */}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00097}00097 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00098}\mbox{\hyperlink{usb__template__cdceem_8c_a7663c1a1774d0e3b8f9eb3bfaf6c8c26}{00098}} \textcolor{keyword}{static} \mbox{\hyperlink{usb__template_8h_ab56131b3dcadea9f2be25f942a4f2af7}{usb\_temp\_get\_string\_desc\_t}} \mbox{\hyperlink{usb__template__cdceem_8c_a7663c1a1774d0e3b8f9eb3bfaf6c8c26}{cdceem\_get\_string\_desc}};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00099}00099 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00100}\mbox{\hyperlink{usb__template__cdceem_8c_a51299a5ce4a0ea953f804633189e181c}{00100}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__packet__size}{usb\_temp\_packet\_size}} \mbox{\hyperlink{usb__template__cdceem_8c_a51299a5ce4a0ea953f804633189e181c}{bulk\_mps}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00101}00101         .\mbox{\hyperlink{structusb__temp__packet__size_a1e72dec91037be6b45fcb2a7b8a6034a}{mps}}[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa0f17d0b9928086c6114fea73e08f1780}{USB\_SPEED\_FULL}}] = 64,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00102}00102         .mps[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa57eeede6d769b09c01ac9c9c62fef8c9}{USB\_SPEED\_HIGH}}] = 512,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00103}00103 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00104}00104 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00105}\mbox{\hyperlink{usb__template__cdceem_8c_a87d44dd5841ee9dfecb83a292752acb8}{00105}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} \mbox{\hyperlink{usb__template__cdceem_8c_a87d44dd5841ee9dfecb83a292752acb8}{bulk\_in\_ep}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00106}00106         .\mbox{\hyperlink{structusb__temp__endpoint__desc_a81880a9d278c78c45b0012c1c8a65067}{pPacketSize}} = \&\mbox{\hyperlink{usb__template__cdceem_8c_a51299a5ce4a0ea953f804633189e181c}{bulk\_mps}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00107}00107 \textcolor{preprocessor}{\#ifdef USB\_HIP\_IN\_EP\_0}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00108}00108         .bEndpointAddress = USB\_HIP\_IN\_EP\_0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00109}00109 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00110}00110         .bEndpointAddress = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00111}00111 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00112}00112         .bmAttributes = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00113}00113 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00114}00114 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00115}\mbox{\hyperlink{usb__template__cdceem_8c_a7875b7badc71c3105e10cb98eb1e2d38}{00115}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} \mbox{\hyperlink{usb__template__cdceem_8c_a7875b7badc71c3105e10cb98eb1e2d38}{bulk\_out\_ep}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00116}00116         .\mbox{\hyperlink{structusb__temp__endpoint__desc_a81880a9d278c78c45b0012c1c8a65067}{pPacketSize}} = \&\mbox{\hyperlink{usb__template__cdceem_8c_a51299a5ce4a0ea953f804633189e181c}{bulk\_mps}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00117}00117 \textcolor{preprocessor}{\#ifdef USB\_HIP\_OUT\_EP\_0}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00118}00118         .bEndpointAddress = USB\_HIP\_OUT\_EP\_0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00119}00119 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00120}00120         .bEndpointAddress = \mbox{\hyperlink{usb_8h_a9a98e1bc9388db2ab5213e9d6496e851}{UE\_DIR\_OUT}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00121}00121 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00122}00122         .bmAttributes = \mbox{\hyperlink{usb_8h_a25240fc009aa67bb7a2b635d2e9401e4}{UE\_BULK}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00123}00123 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00125}\mbox{\hyperlink{usb__template__cdceem_8c_ae4317df1e8aada71fcf108e3c5994a14}{00125}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} *\mbox{\hyperlink{usb__template__cdceem_8c_ae4317df1e8aada71fcf108e3c5994a14}{cdceem\_data\_endpoints}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00126}00126         \&\mbox{\hyperlink{usb__template__cdceem_8c_a87d44dd5841ee9dfecb83a292752acb8}{bulk\_in\_ep}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00127}00127         \&\mbox{\hyperlink{usb__template__cdceem_8c_a7875b7badc71c3105e10cb98eb1e2d38}{bulk\_out\_ep}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00128}00128         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00129}00129 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00130}00130 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00131}\mbox{\hyperlink{usb__template__cdceem_8c_a4362045ee1494093f932f1eea77fd1cd}{00131}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} \mbox{\hyperlink{usb__template__cdceem_8c_a4362045ee1494093f932f1eea77fd1cd}{cdceem\_data\_interface}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00132}00132         .\mbox{\hyperlink{structusb__temp__interface__desc_a4644da9b53684d59fb37172855476f4e}{ppEndpoints}} = \mbox{\hyperlink{usb__template__cdceem_8c_ae4317df1e8aada71fcf108e3c5994a14}{cdceem\_data\_endpoints}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00133}00133         .bInterfaceClass = \mbox{\hyperlink{usb_8h_a7ee8a2a46bb5ed7942883b57b7d866a1}{UICLASS\_CDC}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00134}00134         .bInterfaceSubClass = \mbox{\hyperlink{usb_8h_a7e289a1435f6a435d1b2b1f9644fa4a0}{UISUBCLASS\_ETHERNET\_EMULATION\_MODEL}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00135}00135         .bInterfaceProtocol = \mbox{\hyperlink{usb_8h_a6ae371ce728cf1a0ffe094545e5ba412}{UIPROTO\_CDC\_EEM}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00136}00136         .iInterface = \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eae47bb1983431c70e37d53233cc699807}{CDCEEM\_INTERFACE\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00137}00137 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00139}\mbox{\hyperlink{usb__template__cdceem_8c_a008bbd13ba877fd8975778299dd56be4}{00139}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} *\mbox{\hyperlink{usb__template__cdceem_8c_a008bbd13ba877fd8975778299dd56be4}{cdceem\_interfaces}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00140}00140         \&\mbox{\hyperlink{usb__template__cdceem_8c_a4362045ee1494093f932f1eea77fd1cd}{cdceem\_data\_interface}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00141}00141         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00142}00142 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00144}\mbox{\hyperlink{usb__template__cdceem_8c_a4c71fba74ba9fb129633a1ff48162643}{00144}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} \mbox{\hyperlink{usb__template__cdceem_8c_a4c71fba74ba9fb129633a1ff48162643}{cdceem\_config\_desc}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00145}00145         .\mbox{\hyperlink{structusb__temp__config__desc_a2b5fac2213f207fc7ab491eadd3e1c04}{ppIfaceDesc}} = \mbox{\hyperlink{usb__template__cdceem_8c_a008bbd13ba877fd8975778299dd56be4}{cdceem\_interfaces}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00146}00146         .bmAttributes = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00147}00147         .bMaxPower = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00148}00148         .iConfiguration = \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea06c20cbb9c8388bba37747822a082fcb}{CDCEEM\_CONFIGURATION\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00149}00149 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00150}00150 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00151}\mbox{\hyperlink{usb__template__cdceem_8c_a96d8ebb33a4ce92863f2bf007a93b18e}{00151}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} *\mbox{\hyperlink{usb__template__cdceem_8c_a96d8ebb33a4ce92863f2bf007a93b18e}{cdceem\_configs}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00152}00152         \&\mbox{\hyperlink{usb__template__cdceem_8c_a4c71fba74ba9fb129633a1ff48162643}{cdceem\_config\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00153}00153         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00154}00154 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00155}00155 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00156}\mbox{\hyperlink{usb__template_8h_a21fa41850851cbd6a414d004b1d751a7}{00156}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template__cdceem_8c_a21fa41850851cbd6a414d004b1d751a7}{usb\_template\_cdceem}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00157}00157         .\mbox{\hyperlink{structusb__temp__device__desc_a38087eafc51aa5ee939e61f10bf87fb2}{getStringDesc}} = \&\mbox{\hyperlink{usb__template__cdceem_8c_a7663c1a1774d0e3b8f9eb3bfaf6c8c26}{cdceem\_get\_string\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00158}00158         .ppConfigDesc = \mbox{\hyperlink{usb__template__cdceem_8c_a96d8ebb33a4ce92863f2bf007a93b18e}{cdceem\_configs}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00159}00159         .idVendor = \mbox{\hyperlink{usb__template__cdceem_8c_a151f21539428e7402f27ec02221b6192}{CDCEEM\_DEFAULT\_VENDOR\_ID}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00160}00160         .idProduct = \mbox{\hyperlink{usb__template__cdceem_8c_a4f849b25e1bcda2e167d80e891464f6d}{CDCEEM\_DEFAULT\_PRODUCT\_ID}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00161}00161         .bcdDevice = 0x0100,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00162}00162         .bDeviceClass = \mbox{\hyperlink{usb_8h_afb401cd4f795d145dcfb80ab08f383bb}{UDCLASS\_COMM}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00163}00163         .bDeviceSubClass = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00164}00164         .bDeviceProtocol = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00165}00165         .iManufacturer = \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaa0235c5d11787384444b298309f4b654}{CDCEEM\_MANUFACTURER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00166}00166         .iProduct = \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea47d23e759f437ed500a85af3cc1267d3}{CDCEEM\_PRODUCT\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00167}00167         .iSerialNumber = \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea1116faa40ba4461682aef96c6879a163}{CDCEEM\_SERIAL\_NUMBER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00168}00168 \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00169}00169 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00170}00170 \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00171}00171 \textcolor{comment}{ *      cdceem\_get\_string\_desc}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00172}00172 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00173}00173 \textcolor{comment}{ * Return values:}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00174}00174 \textcolor{comment}{ * NULL: Failure. No such string.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00175}00175 \textcolor{comment}{ * Else: Success. Pointer to string descriptor is returned.}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00176}00176 \textcolor{comment}{ *-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00177}00177 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00178}\mbox{\hyperlink{usb__template__cdceem_8c_a26d05c246d73dc516893d4a53c53a356}{00178}} \mbox{\hyperlink{usb__template__cdceem_8c_a7663c1a1774d0e3b8f9eb3bfaf6c8c26}{cdceem\_get\_string\_desc}}(uint16\_t lang\_id, uint8\_t string\_index)}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00179}00179 \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00180}00180         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *ptr[\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea624a0398ef60000fdd43705f07157acd}{CDCEEM\_MAX\_INDEX}}] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00181}00181                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaee67daeaddd994aa2091b7547b53a535}{CDCEEM\_LANG\_INDEX}}] = \&\mbox{\hyperlink{usb__core_8c_ae7a7499adfcbdfc7011bb2f90217b482}{usb\_string\_lang\_en}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00182}00182                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eae47bb1983431c70e37d53233cc699807}{CDCEEM\_INTERFACE\_INDEX}}] = \&\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00183}00183                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea06c20cbb9c8388bba37747822a082fcb}{CDCEEM\_CONFIGURATION\_INDEX}}] = \&\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00184}00184                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051eaa0235c5d11787384444b298309f4b654}{CDCEEM\_MANUFACTURER\_INDEX}}] = \&\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00185}00185                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea47d23e759f437ed500a85af3cc1267d3}{CDCEEM\_PRODUCT\_INDEX}}] = \&\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00186}00186                 [\mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea1116faa40ba4461682aef96c6879a163}{CDCEEM\_SERIAL\_NUMBER\_INDEX}}] = \&\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00187}00187         \};}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00188}00188 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00189}00189         \textcolor{keywordflow}{if} (string\_index == 0) \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00190}00190                 \textcolor{keywordflow}{return} (\&\mbox{\hyperlink{usb__core_8c_ae7a7499adfcbdfc7011bb2f90217b482}{usb\_string\_lang\_en}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00191}00191         \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00192}00192         \textcolor{keywordflow}{if} (lang\_id != 0x0409) \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00193}00193                 \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00194}00194         \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00195}00195         \textcolor{keywordflow}{if} (string\_index < \mbox{\hyperlink{usb__template__cdceem_8c_a7859c0a3efa8b1c360f5c2376baf051ea624a0398ef60000fdd43705f07157acd}{CDCEEM\_MAX\_INDEX}}) \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00196}00196                 \textcolor{keywordflow}{return} (ptr[string\_index]);}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00197}00197         \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00198}00198         \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00199}00199 \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00200}00200 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00201}00201 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00202}\mbox{\hyperlink{usb__template__cdceem_8c_a17980c19cadaf2babd114bd37add8188}{00202}} \mbox{\hyperlink{usb__template__cdceem_8c_a17980c19cadaf2babd114bd37add8188}{cdceem\_init}}(\textcolor{keywordtype}{void} *arg \_\_unused)}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00203}00203 \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00204}00204         \textcolor{keyword}{struct }sysctl\_oid *parent;}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00205}00205         \textcolor{keywordtype}{char} parent\_name[3];}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00206}00206 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00207}00207         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}}),}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00208}00208             \mbox{\hyperlink{usb__template__cdceem_8c_a72cc6628b1022fc8059bdb7cf2b3d558}{CDCEEM\_DEFAULT\_INTERFACE}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00209}00209         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}}),}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00210}00210             \mbox{\hyperlink{usb__template__cdceem_8c_a31c31a24e58a9da037f6a4bec490971a}{CDCEEM\_DEFAULT\_CONFIGURATION}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00211}00211         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}}),}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00212}00212             \mbox{\hyperlink{usb__template__cdceem_8c_a33cbfb5eb0464a299c88b0c1d536e2ad}{CDCEEM\_DEFAULT\_MANUFACTURER}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00213}00213         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}}),}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00214}00214             \mbox{\hyperlink{usb__template__cdceem_8c_a9424ea151c970c2395e789405722961d}{CDCEEM\_DEFAULT\_PRODUCT}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00215}00215         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}}),}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00216}00216             \mbox{\hyperlink{usb__template__cdceem_8c_a7a6741bffa0f6138d9443afdb34a9847}{CDCEEM\_DEFAULT\_SERIAL\_NUMBER}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00217}00217 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00218}00218         snprintf(parent\_name, \textcolor{keyword}{sizeof}(parent\_name), \textcolor{stringliteral}{"{}\%d"{}}, \mbox{\hyperlink{usb__ioctl_8h_a950bf8e3371138ceb9649d45e9a96340a393c7e708726d4dbbf1a6215b33034c5}{USB\_TEMP\_CDCEEM}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00219}00219         sysctl\_ctx\_init(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00220}00220 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00221}00221         parent = SYSCTL\_ADD\_NODE(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00222}00222             SYSCTL\_STATIC\_CHILDREN(\_hw\_usb\_templates), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00223}00223             parent\_name, CTLFLAG\_RW | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00224}00224             0, \textcolor{stringliteral}{"{}USB CDC EEM device side template"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00225}00225         SYSCTL\_ADD\_U16(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00226}00226             \textcolor{stringliteral}{"{}vendor\_id"{}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00227}00227             \&\mbox{\hyperlink{usb__template__cdceem_8c_a21fa41850851cbd6a414d004b1d751a7}{usb\_template\_cdceem}}.\mbox{\hyperlink{structusb__temp__device__desc_a857be9aeaae625cebc6e227bf7a5cf39}{idVendor}}, 1, \textcolor{stringliteral}{"{}Vendor identifier"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00228}00228         SYSCTL\_ADD\_U16(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00229}00229             \textcolor{stringliteral}{"{}product\_id"{}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00230}00230             \&\mbox{\hyperlink{usb__template__cdceem_8c_a21fa41850851cbd6a414d004b1d751a7}{usb\_template\_cdceem}}.\mbox{\hyperlink{structusb__temp__device__desc_a494cea07a085ef1e5e5a884246403c5f}{idProduct}}, 1, \textcolor{stringliteral}{"{}Product identifier"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00231}00231 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00232}00232         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00233}00233             \textcolor{stringliteral}{"{}interface"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00234}00234             \&\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a34abb2a501ceb8d8311d76d7164fe76b}{cdceem\_interface}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00235}00235             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Interface string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00236}00236         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00237}00237             \textcolor{stringliteral}{"{}configuration"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00238}00238             \&\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a5d63d2897451480fdef0ab54612335ab}{cdceem\_configuration}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00239}00239             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Configuration string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00240}00240 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00241}00241         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00242}00242             \textcolor{stringliteral}{"{}manufacturer"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00243}00243             \&\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_af0fac7a351710b25b3382fc51f7bf6d2}{cdceem\_manufacturer}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00244}00244             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Manufacturer string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00245}00245         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00246}00246             \textcolor{stringliteral}{"{}product"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00247}00247             \&\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a1511381f22b18edf27ffd0ff70c01cc4}{cdceem\_product}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00248}00248             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Product string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00249}00249         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00250}00250             \textcolor{stringliteral}{"{}serial\_number"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00251}00251             \&\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__cdceem_8c_a654c7927cb071f9bd89d16daacf16b0e}{cdceem\_serial\_number}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00252}00252             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Serial number string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00253}00253 \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00254}00254 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00255}00255 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00256}\mbox{\hyperlink{usb__template__cdceem_8c_a182cf425197f61f08893b1bb048c2d9f}{00256}} \mbox{\hyperlink{usb__template__cdceem_8c_a182cf425197f61f08893b1bb048c2d9f}{cdceem\_uninit}}(\textcolor{keywordtype}{void} *arg \_\_unused)}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00257}00257 \{}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00258}00258 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00259}00259         sysctl\_ctx\_free(\&\mbox{\hyperlink{usb__template__cdceem_8c_ad80884f90ce307eb08c6c4d4b03ce5b9}{cdceem\_ctx\_list}});}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00260}00260 \}}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00261}00261 }
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00262}\mbox{\hyperlink{usb__template__cdceem_8c_aae12aa60d620e9b03f2e578770b56605}{00262}} \mbox{\hyperlink{usb__template__cdceem_8c_aae12aa60d620e9b03f2e578770b56605}{SYSINIT}}(\mbox{\hyperlink{usb__template__cdceem_8c_a17980c19cadaf2babd114bd37add8188}{cdceem\_init}}, SI\_SUB\_LOCK, SI\_ORDER\_FIRST, \mbox{\hyperlink{usb__template__cdceem_8c_a17980c19cadaf2babd114bd37add8188}{cdceem\_init}}, NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__cdceem_8c_source_l00263}\mbox{\hyperlink{usb__template__cdceem_8c_aeebe62cf5e7a5dc6de61ae24a4204bd2}{00263}} \mbox{\hyperlink{usb__template__cdceem_8c_aeebe62cf5e7a5dc6de61ae24a4204bd2}{SYSUNINIT}}(\mbox{\hyperlink{usb__template__cdceem_8c_a182cf425197f61f08893b1bb048c2d9f}{cdceem\_uninit}}, SI\_SUB\_LOCK, SI\_ORDER\_FIRST, \mbox{\hyperlink{usb__template__cdceem_8c_a182cf425197f61f08893b1bb048c2d9f}{cdceem\_uninit}}, NULL);}

\end{DoxyCode}
