Framework for HID keyboard -- not much there yet
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3245 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
40471f14d2
commit
155d12d968
@ -1419,3 +1419,10 @@
|
||||
Mass Storage Class.
|
||||
|
||||
5.17 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
|
||||
* include/nuttx/usb -- rename usb_storage.h to storage.h.
|
||||
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices.
|
||||
* drivers/usbhost/usbhost_skeleton.c -- Template for new class drivers
|
||||
* include/nuttx/usb/hid.h and drivers/usbhost/usbhost_hidkbd.c -- Initial
|
||||
files for HID keyboard support. These are mostly empty files on the
|
||||
initial checkin.
|
||||
|
@ -8,7 +8,7 @@
|
||||
<tr align="center" bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
||||
<p>Last Updated: January 10, 2011</p>
|
||||
<p>Last Updated: January 11, 2011</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -2101,6 +2101,14 @@ buildroot-1.8 2009-12-21 <spudmonkey@racsa.co.cr>
|
||||
<ul><pre>
|
||||
nuttx-5.17 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
|
||||
* include/nuttx/usb -- rename usb_storage.h to storage.h.
|
||||
* arch/arm/src/lpc17xx/lpc17_usbhost.c -- Add support for low-speed devices.
|
||||
* drivers/usbhost/usbhost_skeleton.c -- Template for new class drivers
|
||||
* include/nuttx/usb/hid.h and drivers/usbhost/usbhost_hidkbd.c -- Initial
|
||||
files for HID keyboard support. These are mostly empty files on the
|
||||
initial checkin.
|
||||
|
||||
|
||||
pascal-2.1 2010-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
|
||||
buildroot-1.9 2010-xx-xx <spudmonkey@racsa.co.cr>
|
||||
|
@ -38,5 +38,5 @@ USBHOST_CSRCS =
|
||||
|
||||
ifeq ($(CONFIG_USBHOST),y)
|
||||
USBHOST_CSRCS += usbhost_registry.c usbhost_registerclass.c usbhost_findclass.c
|
||||
USBHOST_CSRCS += usbhost_enumerate.c usbhost_storage.c
|
||||
USBHOST_CSRCS += usbhost_enumerate.c usbhost_storage.c usbhost_hidkbd.c
|
||||
endif
|
||||
|
1039
drivers/usbhost/usbhost_hidkbd.c
Normal file
1039
drivers/usbhost/usbhost_hidkbd.c
Normal file
File diff suppressed because it is too large
Load Diff
1038
drivers/usbhost/usbhost_skeleton.c
Normal file
1038
drivers/usbhost/usbhost_skeleton.c
Normal file
File diff suppressed because it is too large
Load Diff
190
include/nuttx/usb/hid.h
Executable file
190
include/nuttx/usb/hid.h
Executable file
@ -0,0 +1,190 @@
|
||||
/****************************************************************************
|
||||
* include/nuttx/usb/hid.h
|
||||
*
|
||||
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||
*
|
||||
* References:
|
||||
* Universal Serial Bus (USB), Device Class Definition for Human Interface
|
||||
* Devices (HID), Firmware Specification—6/27/01, Version 1.11.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __INCLUDE_NUTTX_USB_HID_H
|
||||
#define __INCLUDE_NUTTX_USB_HID_H
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Preprocessor definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Subclass and Protocol ****************************************************/
|
||||
/* Subclass codes (4.2) */
|
||||
|
||||
#define USBHID_SUBCLASS_NONE 0 /* No subclass */
|
||||
#define USBHID_SUBCLASS_BOOTIF 1 /* Boot Interface Subclass */
|
||||
|
||||
/* A variety of protocols are supported HID devices. The protocol member of
|
||||
* an Interface descriptor only has meaning if the subclass member declares
|
||||
* that the device supports a boot interface, otherwise it is 0. (4.3)
|
||||
*/
|
||||
|
||||
#define USBHID_PROTOCOL_NONE 0
|
||||
#define USBHID_PROTOCOL_KEYBOARD 1
|
||||
#define USBHID_PROTOCOL_MOUSE 2
|
||||
|
||||
/* HID Descriptor ***********************************************************/
|
||||
|
||||
#define USBHID_COUNTRY_NONE 0x00 /* Not Supported */
|
||||
#define USBHID_COUNTRY_ARABIC 0x01 /* Arabic */
|
||||
#define USBHID_COUNTRY_BELGIAN 0x02 /* Belgian */
|
||||
#define USBHID_COUNTRY_CANADA 0x03 /* Canadian-Bilingual */
|
||||
#define USBHID_COUNTRY_CANADRFR 0x04 /* Canadian-French */
|
||||
#define USBHID_COUNTRY_CZECH 0x05 /* Czech Republic */
|
||||
#define USBHID_COUNTRY_DANISH 0x06 /* Danish */
|
||||
#define USBHID_COUNTRY_FINNISH 0x07 /* Finnish */
|
||||
#define USBHID_COUNTRY_FRENCH 0x08 /* French */
|
||||
#define USBHID_COUNTRY_GERMAN 0x09 /* German */
|
||||
#define USBHID_COUNTRY_GREEK 0x10 /* Greek */
|
||||
#define USBHID_COUNTRY_HEBREW 0x11 /* Hebrew */
|
||||
#define USBHID_COUNTRY_HUNGARY 0x12 /* Hungary */
|
||||
#define USBHID_COUNTRY_ISO 0x13 /* International (ISO) */
|
||||
#define USBHID_COUNTRY_ITALIAN 0x14 /* Italian */
|
||||
#define USBHID_COUNTRY_JAPAN 0x15 /* Japan (Katakana) */
|
||||
#define USBHID_COUNTRY_KOREAN 0x16 /* Korean */
|
||||
#define USBHID_COUNTRY_LATINAM 0x17 /* Latin American */
|
||||
#define USBHID_COUNTRY_DUTCH 0x18 /* Netherlands/Dutch */
|
||||
#define USBHID_COUNTRY_NORWEGIAN 0x19 /* Norwegian */
|
||||
#define USBHID_COUNTRY_PERSIAN 0x20 /* Persian (Farsi) */
|
||||
#define USBHID_COUNTRY_POLAND 0x21 /* Poland */
|
||||
#define USBHID_COUNTRY_PORTUGUESE 0x22 /* Portuguese */
|
||||
#define USBHID_COUNTRY_RUSSIA 0x23 /* Russia */
|
||||
#define USBHID_COUNTRY_SLOVAKIA 0x24 /* Slovakia */
|
||||
#define USBHID_COUNTRY_SPANISH 0x25 /* Spanish */
|
||||
#define USBHID_COUNTRY_SWEDISH 0x26 /* Swedish */
|
||||
#define USBHID_COUNTRY_SWISSFR 0x27 /* Swiss/French */
|
||||
#define USBHID_COUNTRY_SWISSGR 0x28 /* Swiss/German */
|
||||
#define USBHID_COUNTRY_SWITZERLAND 0x29 /* Switzerland */
|
||||
#define USBHID_COUNTRY_TAIWAN 0x30 /* Taiwan */
|
||||
#define USBHID_COUNTRY_TURKISHQ 0x31 /* Turkish-Q */
|
||||
#define USBHID_COUNTRY_UK 0x32 /* UK */
|
||||
#define USBHID_COUNTRY_US 0x33 /* US */
|
||||
#define USBHID_COUNTRY_YUGOSLAVIA 0x34 /* Yugoslavia */
|
||||
#define USBHID_COUNTRY_TURKISHF 0x35 /* Turkish-F */
|
||||
|
||||
/* Main Items (6.2.2.4) */
|
||||
|
||||
#define USBHID_MAIN_SIZE(pfx) ((pfx) & 3)
|
||||
#define USBHID_MAIN_INPUT_PREFIX 0x80
|
||||
#define USBHID_MAIN_INPUT_CONSTANT (1 << 0) /* Constant(1) vs Data(0) */
|
||||
#define USBHID_MAIN_INPUT_VARIABLE (1 << 1) /* Variable(1) vs Array(0) */
|
||||
#define USBHID_MAIN_INPUT_RELATIVE (1 << 2) /* Relative(1) vs Absolute(0) */
|
||||
#define USBHID_MAIN_INPUT_WRAP (1 << 3) /* Wrap(1) vs No Wrap(0) */
|
||||
#define USBHID_MAIN_INPUT_NONLINEAR (1 << 4) /* Non Linear(1) vs Linear(0) */
|
||||
#define USBHID_MAIN_INPUT_NOPREFERRED (1 << 5) /* No Preferred (1) vs Preferred State(0) */
|
||||
#define USBHID_MAIN_INPUT_NULLSTATE (1 << 6) /* Null state(1) vs No Null position(0) */
|
||||
#define USBHID_MAIN_INPUT_BUFFEREDBYTES (1 << 8) /* Buffered Bytes(1) vs Bit Field(0) */
|
||||
|
||||
#define USBHID_MAIN_OUTPUT_PREFIX 0x90
|
||||
#define USBHID_MAIN_OUTPUT_CONSTANT (1 << 0) /* Constant(1) vs Data(0) */
|
||||
#define USBHID_MAIN_OUTPUT_VARIABLE (1 << 1) /* Variable(1) vs Array(0) */
|
||||
#define USBHID_MAIN_OUTPUT_RELATIVE (1 << 2) /* Relative(1) vs Absolute(0) */
|
||||
#define USBHID_MAIN_OUTPUT_WRAP (1 << 3) /* Wrap(1) vs No Wrap(0) */
|
||||
#define USBHID_MAIN_OUTPUT_NONLINEAR (1 << 4) /* Non Linear(1) vs Linear(0) */
|
||||
#define USBHID_MAIN_OUTPUT_NOPREFERRED (1 << 5) /* No Preferred (1) vs Preferred State(0) */
|
||||
#define USBHID_MAIN_OUTPUT_NULLSTATE (1 << 6) /* Null state(1) vs No Null position(0) */
|
||||
#define USBHID_MAIN_OUTPUT_VOLATILE (1 << 7) /* Volatile(1) vs Non volatile(0) */
|
||||
#define USBHID_MAIN_OUTPUT_BUFFEREDBYTES (1 << 8) /* Buffered Bytes(1) vs Bit Field(0) */
|
||||
|
||||
#define USBHID_MAIN_FEATURE_PREFIX 0xb0
|
||||
#define USBHID_MAIN_FEATURE_CONSTANT (1 << 0) /* Constant(1) vs Data(0) */
|
||||
#define USBHID_MAIN_FEATURE_VARIABLE (1 << 1) /* Variable(1) vs Array(0) */
|
||||
#define USBHID_MAIN_FEATURE_RELATIVE (1 << 2) /* Relative(1) vs Absolute(0) */
|
||||
#define USBHID_MAIN_FEATURE_WRAP (1 << 3) /* Wrap(1) vs No Wrap(0) */
|
||||
#define USBHID_MAIN_FEATURE_NONLINEAR (1 << 4) /* Non Linear(1) vs Linear(0) */
|
||||
#define USBHID_MAIN_FEATURE_NOPREFERRED (1 << 5) /* No Preferred (1) vs Preferred State(0) */
|
||||
#define USBHID_MAIN_FEATURE_NULLSTATE (1 << 6) /* Null state(1) vs No Null position(0) */
|
||||
#define USBHID_MAIN_FEATURE_VOLATILE (1 << 7) /* Volatile(1) vs Non volatile(0) */
|
||||
#define USBHID_MAIN_FEATURE_BUFFEREDBYTES (1 << 8) /* Buffered Bytes(1) vs Bit Field(0) */
|
||||
|
||||
#define USBHID_MAIN_COLLECTION_PREFIX 0xa0
|
||||
#define USBHID_MAIN_COLLECTION_PHYSICAL 0x00 /* Physical (group of axes) */
|
||||
#define USBHID_MAIN_COLLECTION_APPL 0x01 /* Application (mouse, keyboard) */
|
||||
#define USBHID_MAIN_COLLECTION_LOGICAL 0x02 /* Logical (interrelated data) */
|
||||
#define USBHID_MAIN_COLLECTION_REPORT 0x03 /* Report */
|
||||
#define USBHID_MAIN_COLLECTION_ARRAY 0x04 /* Named Array */
|
||||
#define USBHID_MAIN_COLLECTION_SWITCH 0x05 /* Usage Switch */
|
||||
#define USBHID_MAIN_COLLECTION_MODIFIER 0x06 /* Usage Modifier */
|
||||
|
||||
#define USBHID_MAIN_ENDCOLLECTION_PREFIX 0xc0
|
||||
|
||||
/* Global Items (6.2.2.7) */
|
||||
|
||||
#define USBHID_GLOBAL_SIZE(pfx) ((pfx) & 3)
|
||||
#define USBHID_GLOBAL_USAGEPAGE_PREFIX 0x04 /* Usage Page */
|
||||
#define USBHID_GLOBAL_LOGMINIMUM_PREFIX 0x14 /* Logical Minimum */
|
||||
#define USBHID_GLOBAL_LOGMAXIMUM_PREFIX 0x24 /* Logical Maximum */
|
||||
#define USBHID_GLOBAL_PHYSMINIMUM_PREFIX 0x34 /* Physical Minimum */
|
||||
#define USBHID_GLOBAL_PHYSMAXIMUM_PREFIX 0x44 /* Physical Maximum */
|
||||
#define USBHID_GLOBAL_UNITEXP_PREFIX 0x54 /* Unit Exponent */
|
||||
#define USBHID_GLOBAL_UNIT_PREFIX 0x64 /* Unit */
|
||||
#define USBHID_GLOBAL_REPORTSIZE_PREFIX 0x74 /* Report Size */
|
||||
#define USBHID_GLOBAL_REPORTID_PREFIX 0x84 /*Report ID */
|
||||
#define USBHID_GLOBAL_REPORTCOUNT_PREFIX 0x94 /* Report Count */
|
||||
#define USBHID_GLOBAL_PUSH_PREFIX 0xa4 /* Push */
|
||||
#define USBHID_GLOBAL_Pop_PREFIX 0xb4 /* Pop */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
# define EXTERN extern "C"
|
||||
extern "C" {
|
||||
#else
|
||||
# define EXTERN extern
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCLUDE_NUTTX_USB_HID_H */
|
Loading…
Reference in New Issue
Block a user