diff --git a/sys/include/usb/usbopt.h b/sys/include/usb/usbopt.h new file mode 100644 index 0000000000..672fb280d2 --- /dev/null +++ b/sys/include/usb/usbopt.h @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2018 Koen Zandberg + * + * This file is subject to the terms and conditions of the GNU Lesser General + * Public License v2.1. See the file LICENSE in the top level directory for + * more details. + */ +/** + * @defgroup usb_usbopt usbopt - Configuration options for USB APIs + * @ingroup usb + * @brief List of available configuration options for the + * @ref drivers_periph_usbdev + * @{ + * + * @file + * @brief Definition of global USB peripheral and USB peripheral endpoint + * configuration options. + * + * @author Koen Zandberg + */ + +#ifndef USB_USBOPT_H +#define USB_USBOPT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief List of configuration settings for USB peripherals + * + * The data type specified in parentheses for each individual option is the + * data type to use for the argument when getting/setting the value of the option. + */ +typedef enum { + + /** + * @brief (uint8_t) USB device address, limited to 7 bit by the protocol + */ + USBOPT_ADDRESS, + + /** + * @brief (usbopt_enable_t) Attach/detach USB peripheral to host + * + * In practice this happens by enabling or disabling the pull-up resistor + * on one of the data lines. + */ + USBOPT_ATTACH, + + /** + * @brief (usbopt_enable_t) Whether a USB host connection is detected + * + * Setting this option must return -ENOTSUP + */ + USBOPT_CONNECTED, + + /** + * @brief (usb_version_t) Highest USB version supported by peripheral + * + * Setting this option must return -ENOTSUP + */ + USBOPT_MAX_VERSION, + + /** + * @brief (usb_version_t) Highest USB speed supported by peripheral + * + * Setting this option must return -ENOTSUP + */ + USBOPT_MAX_SPEED, + + /* expand list if required */ +} usbopt_t; + +/** + * @brief List of configuration settings for USB peripheral endpoints + * + * The data type specified in parentheses for each individual option is the + * data type to use for the argument when getting/setting the value of the option. + */ +typedef enum { + + /** + * @brief (usbopt_enable_t) Enable or disable the endpoint + */ + USBOPT_EP_ENABLE, + + /** + * @brief (usbopt_enable_t) Enable or disable stall replies for endpoint + */ + USBOPT_EP_STALL, + + /** + * @brief (usbopt_enable_t) Signal data ready or not ready anymore + */ + USBOPT_EP_READY, + + /** + * @brief (size_t) Retrieve number of bytes available on endpoint. + */ + USBOPT_EP_AVAILABLE, + + /* expand list if required */ +} usbopt_ep_t; + +/** + * @brief Binary parameter for enabling and disabling options + */ +typedef enum +{ + USBOPT_DISABLE = 0, /**< disable a given option */ + USBOPT_ENABLE = 1, /**< enable a given option */ +} usbopt_enable_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* USB_USBOPT_H */ +/** @} */