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
24 extern "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
217 typedef enum {
218  USB_VERSION_1x, /* USB 1.0 or 1.1 device */
219  USB_VERSION_20, /* USB 2.0 device */
220 } usb_version_t;
221 
225 typedef 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) */
229 } usb_speed_t;
230 
234 typedef enum {
240 } usb_ep_type_t;
241 
245 typedef enum {
248 } usb_ep_dir_t;
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