Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
usb.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2018 Koen Zandberg <koen@bergzand.net>
3
* SPDX-License-Identifier: LGPL-2.1-only
4
*/
5
6
#pragma once
7
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
24
#include "board.h"
25
32
/* These can be overridden by boards that should come up with their board
33
* supplier VID/PID pair. Boards should only override this if the RIOT built-in
34
* peripherals are compatible with whatever is usually shipped with that pair
35
* */
36
#ifndef INTERNAL_PERIPHERAL_VID
38
#define INTERNAL_PERIPHERAL_VID (0x1209)
39
#endif
40
#ifndef INTERNAL_PERIPHERAL_PID
42
#define INTERNAL_PERIPHERAL_PID (0x7D00)
43
#endif
44
45
#if !(defined(CONFIG_USB_VID) && defined(CONFIG_USB_PID))
46
#ifdef USB_H_USER_IS_RIOT_INTERNAL
47
#define CONFIG_USB_VID INTERNAL_PERIPHERAL_VID
48
#define CONFIG_USB_PID INTERNAL_PERIPHERAL_PID
49
#else
50
#error Please configure your vendor and product IDs. For development, you may \
51
set USB_VID=${USB_VID_TESTING} USB_PID=${USB_PID_TESTING}.
52
#endif
53
#else
54
#if CONFIG_USB_VID == INTERNAL_PERIPHERAL_VID && \
55
CONFIG_USB_PID == INTERNAL_PERIPHERAL_PID
56
#error Please configure your vendor and product IDs differently than the \
57
INTERNAL_PERIPHERAL_* settings. For development, you may set \
58
USB_VID=${USB_VID_TESTING} \
59
USB_PID=${USB_PID_TESTING}.
60
#endif
61
#endif
/* !(defined(CONFIG_USB_VID) && defined(CONFIG_USB_PID)) */
62
69
#ifdef DOXYGEN
70
#define CONFIG_USB_VID
71
#endif
72
79
#ifdef DOXYGEN
80
#define CONFIG_USB_PID
81
#endif
82
86
#ifndef CONFIG_USB_MANUF_STR
87
#define CONFIG_USB_MANUF_STR "RIOT-os.org"
88
#endif
89
93
#ifndef CONFIG_USB_PRODUCT_STR
94
#define CONFIG_USB_PRODUCT_STR RIOT_BOARD
95
#endif
96
100
#ifndef CONFIG_USB_CONFIGURATION_STR
101
#define CONFIG_USB_CONFIGURATION_STR "USB config"
102
#endif
103
113
#ifdef DOXYGEN
114
#define CONFIG_USB_SERIAL_STR "RIOT-12345"
115
#endif
116
126
#if !defined(CONFIG_USB_SERIAL_STR) && !defined(CONFIG_USB_SERIAL_BYTE_LENGTH)
127
#define CONFIG_USB_SERIAL_BYTE_LENGTH 8
128
#endif
129
136
#ifndef CONFIG_USB_PRODUCT_BCDVERSION
137
#define CONFIG_USB_PRODUCT_BCDVERSION 0x0100
138
#endif
139
143
#ifndef CONFIG_USB_SPEC_BCDVERSION
144
#if defined(CONFIG_USB_SPEC_BCDVERSION_1_1)
145
#define CONFIG_USB_SPEC_BCDVERSION 0x0110
146
#elif defined(CONFIG_USB_SPEC_BCDVERSION_2_0)
147
#define CONFIG_USB_SPEC_BCDVERSION 0x0200
148
#else
149
#define CONFIG_USB_SPEC_BCDVERSION 0x0200
150
#endif
151
#endif
152
156
#ifndef CONFIG_USB_SELF_POWERED
157
#define CONFIG_USB_SELF_POWERED (0)
158
#endif
159
163
#ifndef CONFIG_USB_REM_WAKEUP
164
#define CONFIG_USB_REM_WAKEUP (0)
165
#endif
166
170
#ifndef CONFIG_USB_MAX_POWER
171
#define CONFIG_USB_MAX_POWER (100)
172
#endif
173
177
#ifndef CONFIG_USB_DEFAULT_LANGID
178
#define CONFIG_USB_DEFAULT_LANGID 0x0409
/* EN-US */
179
#endif
206
#ifdef DOXYGEN
207
#define USB_H_USER_IS_RIOT_INTERNAL
208
#endif
214
typedef
enum
{
215
USB_VERSION_1x,
/* USB 1.0 or 1.1 device */
216
USB_VERSION_20,
/* USB 2.0 device */
217
}
usb_version_t
;
218
222
typedef
enum
{
223
USB_SPEED_LOW,
/* Low speed (1.5Mbit/s) */
224
USB_SPEED_FULL,
/* Full speed (12Mbit/s) */
225
USB_SPEED_HIGH,
/* High speed (480Mbit/s) */
226
}
usb_speed_t
;
227
231
typedef
enum
{
232
USB_EP_TYPE_NONE
= 0,
233
USB_EP_TYPE_CONTROL
,
234
USB_EP_TYPE_INTERRUPT
,
235
USB_EP_TYPE_BULK
,
236
USB_EP_TYPE_ISOCHRONOUS
,
237
}
usb_ep_type_t
;
238
242
typedef
enum
{
243
USB_EP_DIR_OUT
,
244
USB_EP_DIR_IN
,
245
}
usb_ep_dir_t
;
246
250
#define USB_ENDPOINT_INTERRUPT_FS_MAX_SIZE (64)
251
255
#define USB_ENDPOINT_INTERRUPT_HS_MAX_SIZE (1024)
256
260
#define USB_ENDPOINT_BULK_FS_MAX_SIZE (64)
261
265
#define USB_ENDPOINT_BULK_HS_MAX_SIZE (512)
266
267
#ifdef __cplusplus
268
}
269
#endif
270
usb_version_t
usb_version_t
USB version definitions.
Definition:
usb.h:214
usb_ep_dir_t
usb_ep_dir_t
USB endpoint directions.
Definition:
usb.h:242
usb_ep_type_t
usb_ep_type_t
USB endpoint types.
Definition:
usb.h:231
usb_speed_t
usb_speed_t
USB speed definitions.
Definition:
usb.h:222
USB_EP_DIR_OUT
@ USB_EP_DIR_OUT
Host out, device in.
Definition:
usb.h:243
USB_EP_DIR_IN
@ USB_EP_DIR_IN
Host in, device out.
Definition:
usb.h:244
USB_EP_TYPE_NONE
@ USB_EP_TYPE_NONE
Unused endpoint
Definition:
usb.h:232
USB_EP_TYPE_CONTROL
@ USB_EP_TYPE_CONTROL
Control type
Definition:
usb.h:233
USB_EP_TYPE_BULK
@ USB_EP_TYPE_BULK
Bulk type
Definition:
usb.h:235
USB_EP_TYPE_INTERRUPT
@ USB_EP_TYPE_INTERRUPT
Interrupt type
Definition:
usb.h:234
USB_EP_TYPE_ISOCHRONOUS
@ USB_EP_TYPE_ISOCHRONOUS
Isochronous type
Definition:
usb.h:236
Generated on Mon Nov 24 2025 18:43:16 by
1.9.1