LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
HIDClassHost.h
Go to the documentation of this file.
1
/*
2
* @brief Host mode driver for the library USB HID Class driver
3
*
4
* @note
5
* Copyright(C) NXP Semiconductors, 2012
6
* Copyright(C) Dean Camera, 2011, 2012
7
* All rights reserved.
8
*
9
* @par
10
* Software that is described herein is for illustrative purposes only
11
* which provides customers with programming information regarding the
12
* LPC products. This software is supplied "AS IS" without any warranties of
13
* any kind, and NXP Semiconductors and its licensor disclaim any and
14
* all warranties, express or implied, including all implied warranties of
15
* merchantability, fitness for a particular purpose and non-infringement of
16
* intellectual property rights. NXP Semiconductors assumes no responsibility
17
* or liability for the use of the software, conveys no license or rights under any
18
* patent, copyright, mask work right, or any other intellectual property rights in
19
* or to any products. NXP Semiconductors reserves the right to make changes
20
* in the software without notification. NXP Semiconductors also makes no
21
* representation or warranty that such application will be suitable for the
22
* specified use without further testing or modification.
23
*
24
* @par
25
* Permission to use, copy, modify, and distribute this software and its
26
* documentation is hereby granted, under NXP Semiconductors' and its
27
* licensor's relevant copyrights in the software, without fee, provided that it
28
* is used in conjunction with NXP Semiconductors microcontrollers. This
29
* copyright, permission, and disclaimer notice must appear in all copies of
30
* this code.
31
*/
32
46
#ifndef __HID_CLASS_HOST_H__
47
#define __HID_CLASS_HOST_H__
48
49
/* Includes: */
50
#include "../../USB.h"
51
#include "../Common/HIDClassCommon.h"
52
53
/* Enable C linkage for C++ Compilers: */
54
#if defined(__cplusplus)
55
extern
"C"
{
56
#endif
57
58
/* Preprocessor Checks: */
59
#if !defined(__INCLUDE_FROM_HID_DRIVER)
60
#error Do not include this file directly. Include LPCUSBlib/Drivers/USB.h instead.
61
#endif
62
63
/* Public Interface - May be used in end-application: */
64
/* Macros: */
66
#define HID_ERROR_LOGICAL 0x80
67
68
/* Type Defines: */
75
typedef
struct
76
{
77
struct
78
{
79
uint8_t
DataINPipeNumber
;
80
bool
DataINPipeDoubleBank
;
82
uint8_t
DataOUTPipeNumber
;
83
bool
DataOUTPipeDoubleBank
;
85
uint8_t HIDInterfaceProtocol;
89
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
90
HID_ReportInfo_t
* HIDParserData;
96
#endif
97
98
uint8_t
PortNumber
;
100
} Config;
103
struct
104
{
105
bool
IsActive;
109
uint8_t
InterfaceNumber
;
111
uint16_t
DataINPipeSize
;
112
uint16_t
DataOUTPipeSize
;
114
bool
SupportsBootProtocol;
117
bool
DeviceUsesOUTPipe;
120
bool
UsingBootProtocol
;
121
uint16_t
HIDReportSize
;
123
uint8_t
LargestReportSize
;
124
} State;
128
}
USB_ClassInfo_HID_Host_t
;
129
130
/* Enums: */
132
enum
HID_Host_EnumerationFailure_ErrorCodes_t
133
{
134
HID_ENUMERROR_NoError
= 0,
135
HID_ENUMERROR_InvalidConfigDescriptor
= 1,
136
HID_ENUMERROR_NoCompatibleInterfaceFound
= 2,
137
HID_ENUMERROR_PipeConfigurationFailed
= 3,
138
};
139
140
/* Function Prototypes: */
156
uint8_t
HID_Host_ConfigurePipes
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo,
157
uint16_t ConfigDescriptorSize,
158
void
* DeviceConfigDescriptor)
ATTR_NON_NULL_PTR_ARG
(1)
ATTR_NON_NULL_PTR_ARG
(3);
159
160
174
uint8_t
HID_Host_ReceiveReport
(
USB_ClassInfo_HID_Host_t
* const HIDInterfaceInfo,
175
void
* Buffer)
ATTR_NON_NULL_PTR_ARG
(1)
ATTR_NON_NULL_PTR_ARG
(2);
176
177
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
178
191
uint8_t
HID_Host_ReceiveReportByID
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo,
192
const
uint8_t ReportID,
193
void
* Buffer)
ATTR_NON_NULL_PTR_ARG
(1) ATTR_NON_NULL_PTR_ARG(3);
194
#endif
195
214
uint8_t
HID_Host_SendReportByID
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo,
215
#
if
!defined(HID_HOST_BOOT_PROTOCOL_ONLY)
216
const
uint8_t ReportID,
217
#endif
218
const
uint8_t ReportType,
219
void
* Buffer,
220
const
uint16_t ReportSize)
ATTR_NON_NULL_PTR_ARG
(1)
221
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
222
ATTR_NON_NULL_PTR_ARG
(4);
223
#else
224
ATTR_NON_NULL_PTR_ARG
(3);
225
#endif
226
236
bool
HID_Host_IsReportReceived
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo)
ATTR_NON_NULL_PTR_ARG
(1);
237
248
uint8_t
HID_Host_SetBootProtocol
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo)
ATTR_NON_NULL_PTR_ARG
(1);
249
259
uint8_t
HID_Host_SetIdlePeriod
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo,
260
const
uint16_t MS)
ATTR_NON_NULL_PTR_ARG
(1);
261
262
#if !defined(HID_HOST_BOOT_PROTOCOL_ONLY)
263
279
uint8_t
HID_Host_SetReportProtocol
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo)
ATTR_NON_NULL_PTR_ARG
(1);
280
#endif
281
282
/* Inline Functions: */
290
static
inline
void
HID_Host_USBTask
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo)
ATTR_NON_NULL_PTR_ARG
(1);
291
static
inline
void
HID_Host_USBTask
(
USB_ClassInfo_HID_Host_t
*
const
HIDInterfaceInfo)
292
{
293
(void)HIDInterfaceInfo;
294
}
295
296
/* Private Interface - For use in library only: */
297
#if !defined(__DOXYGEN__)
298
/* Function Prototypes: */
299
#if defined(__INCLUDE_FROM_HID_HOST_C)
300
static
uint8_t
DCOMP_HID_Host_NextHIDInterface
(
void
*
const
CurrentDescriptor)
301
ATTR_WARN_UNUSED_RESULT
ATTR_NON_NULL_PTR_ARG
(1);
302
static
uint8_t
DCOMP_HID_Host_NextHIDDescriptor
(
void
*
const
CurrentDescriptor)
303
ATTR_WARN_UNUSED_RESULT
ATTR_NON_NULL_PTR_ARG
(1);
304
static
uint8_t
DCOMP_HID_Host_NextHIDInterfaceEndpoint
(
void
*
const
CurrentDescriptor)
305
ATTR_WARN_UNUSED_RESULT
ATTR_NON_NULL_PTR_ARG
(1);
306
#endif
307
#endif
308
309
/* Disable C linkage for C++ Compilers: */
310
#if defined(__cplusplus)
311
}
312
#endif
313
314
#endif
315
software
LPCUSBLib
Drivers
USB
Class
Host
HIDClassHost.h
Generated on Fri Nov 16 2012 13:36:45 for LPCOpen Platform by
1.8.2