\hypertarget{usb__template__kbd_8c_source}{}\doxysection{usb\+\_\+template\+\_\+kbd.\+c}
\label{usb__template__kbd_8c_source}\index{dev/usb/template/usb\_template\_kbd.c@{dev/usb/template/usb\_template\_kbd.c}}
\mbox{\hyperlink{usb__template__kbd_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00001}00001 \textcolor{comment}{/* \$FreeBSD\$ */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00002}00002 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00003}00003 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00004}00004 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2010 Hans Petter Selasky}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2018 The FreeBSD Foundation}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00007}00007 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00008}00008 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00009}00009 \textcolor{comment}{ * Portions of this software were developed by Edward Tomasz Napierala}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00010}00010 \textcolor{comment}{ * under sponsorship from the FreeBSD Foundation.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00011}00011 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00012}00012 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00013}00013 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00014}00014 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00015}00015 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00016}00016 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00017}00017 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00018}00018 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00019}00019 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00020}00020 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00021}00021 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00022}00022 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00023}00023 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00024}00024 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00025}00025 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00026}00026 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00027}00027 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00028}00028 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00029}00029 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00030}00030 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00031}00031 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00032}00032 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00034}00034 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00035}00035 \textcolor{comment}{ * This file contains the USB template for an USB Keyboard Device.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00036}00036 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00038}00038 \textcolor{preprocessor}{\#ifdef USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00039}00039 \textcolor{preprocessor}{\#include USB\_GLOBAL\_INCLUDE\_FILE}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00040}00040 \textcolor{preprocessor}{\#else}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/stdint.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/stddef.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/types.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/bus.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/module.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <sys/condvar.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/sx.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <sys/unistd.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <sys/callout.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00057}00057 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <sys/priv.h>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb_8h}{dev/usb/usb.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usbdi_8h}{dev/usb/usbdi.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00062}00062 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__core_8h}{dev/usb/usb\_core.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__cdc_8h}{dev/usb/usb\_cdc.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__ioctl_8h}{dev/usb/usb\_ioctl.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__util_8h}{dev/usb/usb\_util.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00066}00066 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{usb__template_8h}{dev/usb/template/usb\_template.h}}>}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00068}00068 \textcolor{preprocessor}{\#endif                  }\textcolor{comment}{/* USB\_GLOBAL\_INCLUDE\_FILE */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00070}00070 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00071}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a6517fb2e9128523188c2cb2cbebda571}{00071}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a6517fb2e9128523188c2cb2cbebda571}{KBD\_LANG\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00072}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7abe71a1a3d949a4d2c6bbbf6785f73acd}{00072}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7abe71a1a3d949a4d2c6bbbf6785f73acd}{KBD\_INTERFACE\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00073}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7ad0d0e13c1c8ab32140ba8023615713b3}{00073}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7ad0d0e13c1c8ab32140ba8023615713b3}{KBD\_MANUFACTURER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00074}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2ad8ccbc1bcaeea6a5a8dcf39421f1b8}{00074}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2ad8ccbc1bcaeea6a5a8dcf39421f1b8}{KBD\_PRODUCT\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00075}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2b78cd1ca992eb80c469af81bb3ec7e7}{00075}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2b78cd1ca992eb80c469af81bb3ec7e7}{KBD\_SERIAL\_NUMBER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00076}\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7af6899495f5f396cfdd0ce5e8dc729fb9}{00076}}         \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7af6899495f5f396cfdd0ce5e8dc729fb9}{KBD\_MAX\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00077}00077 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00078}00078 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00079}\mbox{\hyperlink{usb__template__kbd_8c_a06035cc6591e6c0cf6d20330dfb0ec84}{00079}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_VENDOR\_ID           USB\_TEMPLATE\_VENDOR}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00080}\mbox{\hyperlink{usb__template__kbd_8c_aef91e4d24bc1b7a7ce35d0af5eb07a73}{00080}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_PRODUCT\_ID          0x27db}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00081}\mbox{\hyperlink{usb__template__kbd_8c_a60c1e8e6b56b3b94b371584a98b1d9db}{00081}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_INTERFACE           "{}Keyboard Interface"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00082}\mbox{\hyperlink{usb__template__kbd_8c_a0b965dd585feb4bfb73ef4a268920c42}{00082}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_MANUFACTURER        USB\_TEMPLATE\_MANUFACTURER}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00083}\mbox{\hyperlink{usb__template__kbd_8c_ad1846f9e6ea950266ff1b46d195db607}{00083}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_PRODUCT             "{}Keyboard Test Device"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00084}\mbox{\hyperlink{usb__template__kbd_8c_a7c72c1177353dda6dc93d47bd08d3c19}{00084}} \textcolor{preprocessor}{\#define KBD\_DEFAULT\_SERIAL\_NUMBER       "{}March 2008"{}}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00085}00085 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00086}\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{00086}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00087}\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{00087}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00088}\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{00088}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00089}\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{00089}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__string__descriptor}{usb\_string\_descriptor}}        \mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00090}00090 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00091}\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{00091}} \textcolor{keyword}{static} \textcolor{keyword}{struct }sysctl\_ctx\_list           \mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00092}00092 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00093}00093 \textcolor{comment}{/* prototypes */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00094}00094 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00095}\mbox{\hyperlink{usb__template__kbd_8c_a9b9f034aa04da1011ae6e016cd143ca9}{00095}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__packet__size}{usb\_temp\_packet\_size}} \mbox{\hyperlink{usb__template__kbd_8c_a9b9f034aa04da1011ae6e016cd143ca9}{keyboard\_intr\_mps}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00096}00096         .\mbox{\hyperlink{structusb__temp__packet__size_a1e72dec91037be6b45fcb2a7b8a6034a}{mps}}[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa0ec4f8f66feaf7ee8f2ee618302e9470}{USB\_SPEED\_LOW}}] = 16,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00097}00097         .mps[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa0f17d0b9928086c6114fea73e08f1780}{USB\_SPEED\_FULL}}] = 16,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00098}00098         .mps[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa57eeede6d769b09c01ac9c9c62fef8c9}{USB\_SPEED\_HIGH}}] = 16,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00099}00099 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00101}\mbox{\hyperlink{usb__template__kbd_8c_ad14de96d7497b374d98bf20490caa48f}{00101}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interval}{usb\_temp\_interval}} \mbox{\hyperlink{usb__template__kbd_8c_ad14de96d7497b374d98bf20490caa48f}{keyboard\_intr\_interval}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00102}00102         .\mbox{\hyperlink{structusb__temp__interval_a5cd37cfd16db2cf6c5c87e30cbd678c1}{bInterval}}[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa0ec4f8f66feaf7ee8f2ee618302e9470}{USB\_SPEED\_LOW}}] = 2,    \textcolor{comment}{/* 2 ms */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00103}00103         .bInterval[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa0f17d0b9928086c6114fea73e08f1780}{USB\_SPEED\_FULL}}] = 2,   \textcolor{comment}{/* 2 ms */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00104}00104         .bInterval[\mbox{\hyperlink{usb_8h_a97e7c882fa8cd21898173a29471616ffa57eeede6d769b09c01ac9c9c62fef8c9}{USB\_SPEED\_HIGH}}] = 5,   \textcolor{comment}{/* 2 ms */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00105}00105 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00106}00106 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00107}00107 \textcolor{comment}{/* The following HID descriptor was dumped from a HP keyboard. */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00109}\mbox{\hyperlink{usb__template__kbd_8c_a8b7afb2da6e2dd0bc1b062d50101a5b8}{00109}} \textcolor{keyword}{static} uint8\_t \mbox{\hyperlink{usb__template__kbd_8c_a8b7afb2da6e2dd0bc1b062d50101a5b8}{keyboard\_hid\_descriptor}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00110}00110         0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00111}00111         0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00112}00112         0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x95, 0x01,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00113}00113         0x75, 0x08, 0x81, 0x01, 0x95, 0x03, 0x75, 0x01,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00114}00114         0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x91, 0x02,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00115}00115         0x95, 0x05, 0x75, 0x01, 0x91, 0x01, 0x95, 0x06,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00116}00116         0x75, 0x08, 0x15, 0x00, 0x26, 0xff, 0x00, 0x05,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00117}00117         0x07, 0x19, 0x00, 0x2a, 0xff, 0x00, 0x81, 0x00,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00118}00118         0xc0}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00119}00119 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00121}\mbox{\hyperlink{usb__template__kbd_8c_a903bfd275b995599b4ccde34b97aac0b}{00121}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} \mbox{\hyperlink{usb__template__kbd_8c_a903bfd275b995599b4ccde34b97aac0b}{keyboard\_ep\_0}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00122}00122         .\mbox{\hyperlink{structusb__temp__endpoint__desc_ac747053bd19d3c55d2d8fda43db33cf3}{ppRawDesc}} = NULL,             \textcolor{comment}{/* no raw descriptors */}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00123}00123         .pPacketSize = \&\mbox{\hyperlink{usb__template__kbd_8c_a9b9f034aa04da1011ae6e016cd143ca9}{keyboard\_intr\_mps}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00124}00124         .pIntervals = \&\mbox{\hyperlink{usb__template__kbd_8c_ad14de96d7497b374d98bf20490caa48f}{keyboard\_intr\_interval}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00125}00125         .bEndpointAddress = \mbox{\hyperlink{usb_8h_a72bb077a860132c175c166f344c75893}{UE\_DIR\_IN}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00126}00126         .bmAttributes = \mbox{\hyperlink{usb_8h_a01e28e87ad16f6dfffefc6ccab08baed}{UE\_INTERRUPT}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00127}00127 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00128}00128 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00129}\mbox{\hyperlink{usb__template__kbd_8c_a95197c92e596e66ccec973312868a222}{00129}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__endpoint__desc}{usb\_temp\_endpoint\_desc}} *\mbox{\hyperlink{usb__template__kbd_8c_a95197c92e596e66ccec973312868a222}{keyboard\_endpoints}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00130}00130         \&\mbox{\hyperlink{usb__template__kbd_8c_a903bfd275b995599b4ccde34b97aac0b}{keyboard\_ep\_0}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00131}00131         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00132}00132 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00133}00133 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00134}\mbox{\hyperlink{usb__template__kbd_8c_a3d246e7911ae95b9df59c6ffc155e4af}{00134}} \textcolor{keyword}{static} \textcolor{keyword}{const} uint8\_t \mbox{\hyperlink{usb__template__kbd_8c_a3d246e7911ae95b9df59c6ffc155e4af}{keyboard\_raw\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00135}00135         0x09, 0x21, 0x10, 0x01, 0x00, 0x01, 0x22, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a8b7afb2da6e2dd0bc1b062d50101a5b8}{keyboard\_hid\_descriptor}}),}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00136}00136         0x00}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00137}00137 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00139}\mbox{\hyperlink{usb__template__kbd_8c_ab253193a11de7521e148b891b2479ea8}{00139}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *\mbox{\hyperlink{usb__template__kbd_8c_ab253193a11de7521e148b891b2479ea8}{keyboard\_iface\_0\_desc}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00140}00140         \mbox{\hyperlink{usb__template__kbd_8c_a3d246e7911ae95b9df59c6ffc155e4af}{keyboard\_raw\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00141}00141         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00142}00142 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00144}\mbox{\hyperlink{usb__template__kbd_8c_aa42586988654e4cb5cc4ed94321a08ad}{00144}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} \mbox{\hyperlink{usb__template__kbd_8c_aa42586988654e4cb5cc4ed94321a08ad}{keyboard\_iface\_0}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00145}00145         .\mbox{\hyperlink{structusb__temp__interface__desc_abe7e968425fd9c2f434a4b8cbd2fd1bf}{ppRawDesc}} = \mbox{\hyperlink{usb__template__kbd_8c_ab253193a11de7521e148b891b2479ea8}{keyboard\_iface\_0\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00146}00146         .ppEndpoints = \mbox{\hyperlink{usb__template__kbd_8c_a95197c92e596e66ccec973312868a222}{keyboard\_endpoints}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00147}00147         .bInterfaceClass = \mbox{\hyperlink{usb_8h_a77eca6d49a1f0f93fb31aad0ef2f33b4}{UICLASS\_HID}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00148}00148         .bInterfaceSubClass = \mbox{\hyperlink{usb_8h_a52fa495c7147e166f647c179db74b0bd}{UISUBCLASS\_BOOT}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00149}00149         .bInterfaceProtocol = \mbox{\hyperlink{usb_8h_afb41e8c64624580d7d4e14c7122d5183}{UIPROTO\_BOOT\_KEYBOARD}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00150}00150         .iInterface = \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7abe71a1a3d949a4d2c6bbbf6785f73acd}{KBD\_INTERFACE\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00151}00151 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00153}\mbox{\hyperlink{usb__template__kbd_8c_ac15437405b90971a8d26ca6722144ed2}{00153}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__interface__desc}{usb\_temp\_interface\_desc}} *\mbox{\hyperlink{usb__template__kbd_8c_ac15437405b90971a8d26ca6722144ed2}{keyboard\_interfaces}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00154}00154         \&\mbox{\hyperlink{usb__template__kbd_8c_aa42586988654e4cb5cc4ed94321a08ad}{keyboard\_iface\_0}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00155}00155         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00156}00156 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00157}00157 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00158}\mbox{\hyperlink{usb__template__kbd_8c_af9ed0854225bfeb11d5685977e09abd0}{00158}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} \mbox{\hyperlink{usb__template__kbd_8c_af9ed0854225bfeb11d5685977e09abd0}{keyboard\_config\_desc}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00159}00159         .\mbox{\hyperlink{structusb__temp__config__desc_a2b5fac2213f207fc7ab491eadd3e1c04}{ppIfaceDesc}} = \mbox{\hyperlink{usb__template__kbd_8c_ac15437405b90971a8d26ca6722144ed2}{keyboard\_interfaces}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00160}00160         .bmAttributes = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00161}00161         .bMaxPower = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00162}00162         .iConfiguration = \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2ad8ccbc1bcaeea6a5a8dcf39421f1b8}{KBD\_PRODUCT\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00163}00163 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00164}00164 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00165}\mbox{\hyperlink{usb__template__kbd_8c_a9e3aa2ac58c4d63e3b5a54198e051896}{00165}} \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__config__desc}{usb\_temp\_config\_desc}} *\mbox{\hyperlink{usb__template__kbd_8c_a9e3aa2ac58c4d63e3b5a54198e051896}{keyboard\_configs}}[] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00166}00166         \&\mbox{\hyperlink{usb__template__kbd_8c_af9ed0854225bfeb11d5685977e09abd0}{keyboard\_config\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00167}00167         NULL,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00168}00168 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00169}00169 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00170}\mbox{\hyperlink{usb__template__kbd_8c_aabcc99aec1e75311ae627b5459c34a86}{00170}} \textcolor{keyword}{static} \mbox{\hyperlink{usb__template_8h_ab56131b3dcadea9f2be25f942a4f2af7}{usb\_temp\_get\_string\_desc\_t}} \mbox{\hyperlink{usb__template__kbd_8c_aabcc99aec1e75311ae627b5459c34a86}{keyboard\_get\_string\_desc}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00171}\mbox{\hyperlink{usb__template__kbd_8c_a1c96b8187221f382d5a834b0f1f00392}{00171}} \textcolor{keyword}{static} \mbox{\hyperlink{usb__template_8h_ab111925929cf0aecdc4029bf4fe9a869}{usb\_temp\_get\_vendor\_desc\_t}} \mbox{\hyperlink{usb__template__kbd_8c_a1c96b8187221f382d5a834b0f1f00392}{keyboard\_get\_vendor\_desc}};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00172}00172 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00173}\mbox{\hyperlink{usb__template_8h_aedc880ca8b7086b12a1272d153255c2b}{00173}} \textcolor{keyword}{struct }\mbox{\hyperlink{structusb__temp__device__desc}{usb\_temp\_device\_desc}} \mbox{\hyperlink{usb__template__kbd_8c_aedc880ca8b7086b12a1272d153255c2b}{usb\_template\_kbd}} = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00174}00174         .\mbox{\hyperlink{structusb__temp__device__desc_a38087eafc51aa5ee939e61f10bf87fb2}{getStringDesc}} = \&\mbox{\hyperlink{usb__template__kbd_8c_aabcc99aec1e75311ae627b5459c34a86}{keyboard\_get\_string\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00175}00175         .getVendorDesc = \&\mbox{\hyperlink{usb__template__kbd_8c_a1c96b8187221f382d5a834b0f1f00392}{keyboard\_get\_vendor\_desc}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00176}00176         .ppConfigDesc = \mbox{\hyperlink{usb__template__kbd_8c_a9e3aa2ac58c4d63e3b5a54198e051896}{keyboard\_configs}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00177}00177         .idVendor = \mbox{\hyperlink{usb__template__kbd_8c_a06035cc6591e6c0cf6d20330dfb0ec84}{KBD\_DEFAULT\_VENDOR\_ID}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00178}00178         .idProduct = \mbox{\hyperlink{usb__template__kbd_8c_aef91e4d24bc1b7a7ce35d0af5eb07a73}{KBD\_DEFAULT\_PRODUCT\_ID}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00179}00179         .bcdDevice = 0x0100,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00180}00180         .bDeviceClass = \mbox{\hyperlink{usb_8h_afb401cd4f795d145dcfb80ab08f383bb}{UDCLASS\_COMM}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00181}00181         .bDeviceSubClass = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00182}00182         .bDeviceProtocol = 0,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00183}00183         .iManufacturer = \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7ad0d0e13c1c8ab32140ba8023615713b3}{KBD\_MANUFACTURER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00184}00184         .iProduct = \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2ad8ccbc1bcaeea6a5a8dcf39421f1b8}{KBD\_PRODUCT\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00185}00185         .iSerialNumber = \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2b78cd1ca992eb80c469af81bb3ec7e7}{KBD\_SERIAL\_NUMBER\_INDEX}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00186}00186 \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00187}00187 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00188}00188 \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00189}00189 \textcolor{comment}{ *      keyboard\_get\_vendor\_desc}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00190}00190 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00191}00191 \textcolor{comment}{ * Return values:}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00192}00192 \textcolor{comment}{ * NULL: Failure. No such vendor descriptor.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00193}00193 \textcolor{comment}{ * Else: Success. Pointer to vendor descriptor is returned.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00194}00194 \textcolor{comment}{ *-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00195}00195 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00196}\mbox{\hyperlink{usb__template__kbd_8c_a8e34875802033f3e06539e367c6ab4d8}{00196}} \mbox{\hyperlink{usb__template__kbd_8c_a1c96b8187221f382d5a834b0f1f00392}{keyboard\_get\_vendor\_desc}}(\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__kbd_8c_source_l00197}00197 \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00198}00198         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bmRequestType == 0x81) \&\& (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>bRequest == 0x06) \&\&}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00199}00199             (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wValue[0] == 0x00) \&\& (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wValue[1] == 0x22) \&\&}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00200}00200             (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[1] == 0) \&\& (\mbox{\hyperlink{usb__if_8m_accfb270fc1884a0d1e4b9a0fb6234f14}{req}}-\/>wIndex[0] == 0)) \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00201}00201                 *\mbox{\hyperlink{usb__if_8m_aaba3806a5156b2c2a6d6f95f0d95ed03}{plen}} = \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a8b7afb2da6e2dd0bc1b062d50101a5b8}{keyboard\_hid\_descriptor}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00202}00202                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{usb__template__kbd_8c_a8b7afb2da6e2dd0bc1b062d50101a5b8}{keyboard\_hid\_descriptor}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00203}00203         \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00204}00204         \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00205}00205 \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00206}00206 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00207}00207 \textcolor{comment}{/*-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00208}00208 \textcolor{comment}{ *      keyboard\_get\_string\_desc}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00209}00209 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00210}00210 \textcolor{comment}{ * Return values:}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00211}00211 \textcolor{comment}{ * NULL: Failure. No such string.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00212}00212 \textcolor{comment}{ * Else: Success. Pointer to string descriptor is returned.}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00213}00213 \textcolor{comment}{ *-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/*/}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00214}00214 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00215}\mbox{\hyperlink{usb__template__kbd_8c_ad0c2e8e4b7d9a434597d413deab60d1d}{00215}} \mbox{\hyperlink{usb__template__kbd_8c_aabcc99aec1e75311ae627b5459c34a86}{keyboard\_get\_string\_desc}}(uint16\_t lang\_id, uint8\_t string\_index)}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00216}00216 \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00217}00217         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{void} *ptr[\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7af6899495f5f396cfdd0ce5e8dc729fb9}{KBD\_MAX\_INDEX}}] = \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00218}00218                 [\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a6517fb2e9128523188c2cb2cbebda571}{KBD\_LANG\_INDEX}}] = \&\mbox{\hyperlink{usb__core_8c_ae7a7499adfcbdfc7011bb2f90217b482}{usb\_string\_lang\_en}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00219}00219                 [\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7abe71a1a3d949a4d2c6bbbf6785f73acd}{KBD\_INTERFACE\_INDEX}}] = \&\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00220}00220                 [\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7ad0d0e13c1c8ab32140ba8023615713b3}{KBD\_MANUFACTURER\_INDEX}}] = \&\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00221}00221                 [\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2ad8ccbc1bcaeea6a5a8dcf39421f1b8}{KBD\_PRODUCT\_INDEX}}] = \&\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00222}00222                 [\mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7a2b78cd1ca992eb80c469af81bb3ec7e7}{KBD\_SERIAL\_NUMBER\_INDEX}}] = \&\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00223}00223         \};}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00224}00224 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00225}00225         \textcolor{keywordflow}{if} (string\_index == 0) \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00226}00226                 \textcolor{keywordflow}{return} (\&\mbox{\hyperlink{usb__core_8c_ae7a7499adfcbdfc7011bb2f90217b482}{usb\_string\_lang\_en}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00227}00227         \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00228}00228         \textcolor{keywordflow}{if} (lang\_id != 0x0409) \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00229}00229                 \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00230}00230         \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00231}00231         \textcolor{keywordflow}{if} (string\_index < \mbox{\hyperlink{usb__template__kbd_8c_a79e9f285d34216706a748fd7ba8941b7af6899495f5f396cfdd0ce5e8dc729fb9}{KBD\_MAX\_INDEX}}) \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00232}00232                 \textcolor{keywordflow}{return} (ptr[string\_index]);}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00233}00233         \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00234}00234         \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00235}00235 \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00236}00236 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00237}00237 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00238}\mbox{\hyperlink{usb__template__kbd_8c_a176bfdaeb645a7d6a2d57fa5d6090658}{00238}} \mbox{\hyperlink{usb__template__kbd_8c_a176bfdaeb645a7d6a2d57fa5d6090658}{kbd\_init}}(\textcolor{keywordtype}{void} *arg \_\_unused)}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00239}00239 \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00240}00240         \textcolor{keyword}{struct }sysctl\_oid *parent;}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00241}00241         \textcolor{keywordtype}{char} parent\_name[3];}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00243}00243         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}}),}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00244}00244             \mbox{\hyperlink{usb__template__kbd_8c_a60c1e8e6b56b3b94b371584a98b1d9db}{KBD\_DEFAULT\_INTERFACE}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00245}00245         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}}),}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00246}00246             \mbox{\hyperlink{usb__template__kbd_8c_a0b965dd585feb4bfb73ef4a268920c42}{KBD\_DEFAULT\_MANUFACTURER}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00247}00247         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}}),}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00248}00248             \mbox{\hyperlink{usb__template__kbd_8c_ad1846f9e6ea950266ff1b46d195db607}{KBD\_DEFAULT\_PRODUCT}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00249}00249         \mbox{\hyperlink{usb__util_8c_a7e0b76fa91e891e0439d03afad4fc889}{usb\_make\_str\_desc}}(\&\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}}),}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00250}00250             \mbox{\hyperlink{usb__template__kbd_8c_a7c72c1177353dda6dc93d47bd08d3c19}{KBD\_DEFAULT\_SERIAL\_NUMBER}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00251}00251 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00252}00252         snprintf(parent\_name, \textcolor{keyword}{sizeof}(parent\_name), \textcolor{stringliteral}{"{}\%d"{}}, \mbox{\hyperlink{usb__ioctl_8h_a950bf8e3371138ceb9649d45e9a96340af00107ec3a9665afe5f51b70a5d33edb}{USB\_TEMP\_KBD}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00253}00253         sysctl\_ctx\_init(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00254}00254 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00255}00255         parent = SYSCTL\_ADD\_NODE(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00256}00256             SYSCTL\_STATIC\_CHILDREN(\_hw\_usb\_templates), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00257}00257             parent\_name, CTLFLAG\_RW | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00258}00258             0, \textcolor{stringliteral}{"{}USB Keyboard device side template"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00259}00259         SYSCTL\_ADD\_U16(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00260}00260             \textcolor{stringliteral}{"{}vendor\_id"{}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00261}00261             \&\mbox{\hyperlink{usb__template__kbd_8c_aedc880ca8b7086b12a1272d153255c2b}{usb\_template\_kbd}}.\mbox{\hyperlink{structusb__temp__device__desc_a857be9aeaae625cebc6e227bf7a5cf39}{idVendor}}, 1, \textcolor{stringliteral}{"{}Vendor identifier"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00262}00262         SYSCTL\_ADD\_U16(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00263}00263             \textcolor{stringliteral}{"{}product\_id"{}}, CTLFLAG\_RWTUN,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00264}00264             \&\mbox{\hyperlink{usb__template__kbd_8c_aedc880ca8b7086b12a1272d153255c2b}{usb\_template\_kbd}}.\mbox{\hyperlink{structusb__temp__device__desc_a494cea07a085ef1e5e5a884246403c5f}{idProduct}}, 1, \textcolor{stringliteral}{"{}Product identifier"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00265}00265 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00266}00266         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00267}00267             \textcolor{stringliteral}{"{}interface"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00268}00268             \&\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a80602335a30f52c4dba3f5c810cebe43}{kbd\_interface}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00269}00269             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Interface string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00270}00270 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00271}00271         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00272}00272             \textcolor{stringliteral}{"{}manufacturer"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00273}00273             \&\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a266f652108c243bb95c4cc60510f8f4b}{kbd\_manufacturer}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00274}00274             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Manufacturer string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00275}00275         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00276}00276             \textcolor{stringliteral}{"{}product"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00277}00277             \&\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a675b6b3c07b6e218b9e439b48f7b836f}{kbd\_product}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00278}00278             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Product string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00279}00279         SYSCTL\_ADD\_PROC(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}}, SYSCTL\_CHILDREN(parent), OID\_AUTO,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00280}00280             \textcolor{stringliteral}{"{}serial\_number"{}}, CTLTYPE\_STRING | CTLFLAG\_RWTUN | CTLFLAG\_MPSAFE,}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00281}00281             \&\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}}, \textcolor{keyword}{sizeof}(\mbox{\hyperlink{usb__template__kbd_8c_a7ea8ae3521e70a55e8f55beeb907ab6f}{kbd\_serial\_number}}), \mbox{\hyperlink{usb__template_8c_ac1536ea79836e5972f25ba49ab7d0b40}{usb\_temp\_sysctl}},}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00282}00282             \textcolor{stringliteral}{"{}A"{}}, \textcolor{stringliteral}{"{}Serial number string"{}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00283}00283 \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00284}00284 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00285}00285 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00286}\mbox{\hyperlink{usb__template__kbd_8c_ae21ce7ceedf27afc1c33725b8a06e404}{00286}} \mbox{\hyperlink{usb__template__kbd_8c_ae21ce7ceedf27afc1c33725b8a06e404}{kbd\_uninit}}(\textcolor{keywordtype}{void} *arg \_\_unused)}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00287}00287 \{}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00288}00288 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00289}00289         sysctl\_ctx\_free(\&\mbox{\hyperlink{usb__template__kbd_8c_ac5cf49dd81879bae6d8b5d6dc8c8c2cf}{kbd\_ctx\_list}});}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00290}00290 \}}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00291}00291 }
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00292}\mbox{\hyperlink{usb__template__kbd_8c_a1a1817c0df1dc36a5ae9c974f2acc899}{00292}} \mbox{\hyperlink{usb__template__kbd_8c_a1a1817c0df1dc36a5ae9c974f2acc899}{SYSINIT}}(\mbox{\hyperlink{usb__template__kbd_8c_a176bfdaeb645a7d6a2d57fa5d6090658}{kbd\_init}}, SI\_SUB\_LOCK, SI\_ORDER\_FIRST, \mbox{\hyperlink{usb__template__kbd_8c_a176bfdaeb645a7d6a2d57fa5d6090658}{kbd\_init}}, NULL);}
\DoxyCodeLine{\Hypertarget{usb__template__kbd_8c_source_l00293}\mbox{\hyperlink{usb__template__kbd_8c_ac1bf9e6da0c7e13b63a1b31b6a718355}{00293}} \mbox{\hyperlink{usb__template__kbd_8c_ac1bf9e6da0c7e13b63a1b31b6a718355}{SYSUNINIT}}(\mbox{\hyperlink{usb__template__kbd_8c_ae21ce7ceedf27afc1c33725b8a06e404}{kbd\_uninit}}, SI\_SUB\_LOCK, SI\_ORDER\_FIRST, \mbox{\hyperlink{usb__template__kbd_8c_ae21ce7ceedf27afc1c33725b8a06e404}{kbd\_uninit}}, NULL);}

\end{DoxyCode}
