Loading...
Searching...
No Matches
usb.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 Koen Zandberg <koen@bergzand.net>
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser General
5 * Public License v2.1. See the file LICENSE in the top level directory for
6 * more details.
7 */
20#ifndef USB_H
21#define USB_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#include "board.h"
28
35/* These can be overridden by boards that should come up with their board
36 * supplier VID/PID pair. Boards should only override this if the RIOT built-in
37 * peripherals are compatible with whatever is usually shipped with that pair
38 * */
39#ifndef INTERNAL_PERIPHERAL_VID
41#define INTERNAL_PERIPHERAL_VID (0x1209)
42#endif
43#ifndef INTERNAL_PERIPHERAL_PID
45#define INTERNAL_PERIPHERAL_PID (0x7D00)
46#endif
47
48#if !(defined(CONFIG_USB_VID) && defined(CONFIG_USB_PID))
49#ifdef USB_H_USER_IS_RIOT_INTERNAL
50#define CONFIG_USB_VID INTERNAL_PERIPHERAL_VID
51#define CONFIG_USB_PID INTERNAL_PERIPHERAL_PID
52#else
53#error Please configure your vendor and product IDs. For development, you may \
54 set USB_VID=${USB_VID_TESTING} USB_PID=${USB_PID_TESTING}.
55#endif
56#else
57#if CONFIG_USB_VID == INTERNAL_PERIPHERAL_VID && \
58 CONFIG_USB_PID == INTERNAL_PERIPHERAL_PID
59#error Please configure your vendor and product IDs differently than the \
60 INTERNAL_PERIPHERAL_* settings. For development, you may set \
61 USB_VID=${USB_VID_TESTING} \
62 USB_PID=${USB_PID_TESTING}.
63#endif
64#endif /* !(defined(CONFIG_USB_VID) && defined(CONFIG_USB_PID)) */
65
72#ifdef DOXYGEN
73#define CONFIG_USB_VID
74#endif
75
82#ifdef DOXYGEN
83#define CONFIG_USB_PID
84#endif
85
89#ifndef CONFIG_USB_MANUF_STR
90#define CONFIG_USB_MANUF_STR "RIOT-os.org"
91#endif
92
96#ifndef CONFIG_USB_PRODUCT_STR
97#define CONFIG_USB_PRODUCT_STR RIOT_BOARD
98#endif
99
103#ifndef CONFIG_USB_CONFIGURATION_STR
104#define CONFIG_USB_CONFIGURATION_STR "USB config"
105#endif
106
116#ifdef DOXYGEN
117#define CONFIG_USB_SERIAL_STR "RIOT-12345"
118#endif
119
129#if !defined(CONFIG_USB_SERIAL_STR) && !defined(CONFIG_USB_SERIAL_BYTE_LENGTH)
130#define CONFIG_USB_SERIAL_BYTE_LENGTH 8
131#endif
132
139#ifndef CONFIG_USB_PRODUCT_BCDVERSION
140#define CONFIG_USB_PRODUCT_BCDVERSION 0x0100
141#endif
142
146#ifndef CONFIG_USB_SPEC_BCDVERSION
147#if defined(CONFIG_USB_SPEC_BCDVERSION_1_1)
148#define CONFIG_USB_SPEC_BCDVERSION 0x0110
149#elif defined(CONFIG_USB_SPEC_BCDVERSION_2_0)
150#define CONFIG_USB_SPEC_BCDVERSION 0x0200
151#else
152#define CONFIG_USB_SPEC_BCDVERSION 0x0200
153#endif
154#endif
155
159#ifndef CONFIG_USB_SELF_POWERED
160#define CONFIG_USB_SELF_POWERED (0)
161#endif
162
166#ifndef CONFIG_USB_REM_WAKEUP
167#define CONFIG_USB_REM_WAKEUP (0)
168#endif
169
173#ifndef CONFIG_USB_MAX_POWER
174#define CONFIG_USB_MAX_POWER (100)
175#endif
176
180#ifndef CONFIG_USB_DEFAULT_LANGID
181#define CONFIG_USB_DEFAULT_LANGID 0x0409 /* EN-US */
182#endif
209#ifdef DOXYGEN
210#define USB_H_USER_IS_RIOT_INTERNAL
211#endif
217typedef enum {
218 USB_VERSION_1x, /* USB 1.0 or 1.1 device */
219 USB_VERSION_20, /* USB 2.0 device */
221
225typedef enum {
226 USB_SPEED_LOW, /* Low speed (1.5Mbit/s) */
227 USB_SPEED_FULL, /* Full speed (12Mbit/s) */
228 USB_SPEED_HIGH, /* High speed (480Mbit/s) */
230
241
249
253#define USB_ENDPOINT_INTERRUPT_FS_MAX_SIZE (64)
254
258#define USB_ENDPOINT_INTERRUPT_HS_MAX_SIZE (1024)
259
263#define USB_ENDPOINT_BULK_FS_MAX_SIZE (64)
264
268#define USB_ENDPOINT_BULK_HS_MAX_SIZE (512)
269
270#ifdef __cplusplus
271}
272#endif
273
274#endif /* USB_H */
usb_version_t
USB version definitions.
Definition usb.h:217
usb_ep_dir_t
USB endpoint directions.
Definition usb.h:245
usb_ep_type_t
USB endpoint types.
Definition usb.h:234
usb_speed_t
USB speed definitions.
Definition usb.h:225
@ USB_EP_DIR_OUT
Host out, device in.
Definition usb.h:246
@ USB_EP_DIR_IN
Host in, device out.
Definition usb.h:247
@ USB_EP_TYPE_NONE
Unused endpoint
Definition usb.h:235
@ USB_EP_TYPE_CONTROL
Control type
Definition usb.h:236
@ USB_EP_TYPE_BULK
Bulk type
Definition usb.h:238
@ USB_EP_TYPE_INTERRUPT
Interrupt type
Definition usb.h:237
@ USB_EP_TYPE_ISOCHRONOUS
Isochronous type
Definition usb.h:239