| /* |
| * Copyright (c) 2022 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_USBD_CONFIG_H |
| #define ZEPHYR_INCLUDE_USBD_CONFIG_H |
| |
| #include <zephyr/usb/usbd.h> |
| |
| /** |
| * @brief Get configuration descriptor bConfigurationValue value |
| * |
| * @param[in] cfg_nd Pointer to a configuration node structure |
| * |
| * @return bConfigurationValue value |
| */ |
| static inline uint8_t usbd_config_get_value(const struct usbd_config_node *const cfg_nd) |
| { |
| struct usb_cfg_descriptor *cfg_desc = cfg_nd->desc; |
| |
| return cfg_desc->bConfigurationValue; |
| } |
| |
| /** |
| * @brief Set configuration descriptor bConfigurationValue value |
| * |
| * @param[in] cfg_nd Pointer to a configuration node structure |
| */ |
| static inline void usbd_config_set_value(const struct usbd_config_node *const cfg_nd, |
| const uint8_t value) |
| { |
| struct usb_cfg_descriptor *cfg_desc = cfg_nd->desc; |
| |
| cfg_desc->bConfigurationValue = value; |
| } |
| |
| /** |
| * @brief Get configuration node |
| * |
| * Get configuration node with desired configuration number. |
| * |
| * @param[in] ctx Pointer to USB device support context |
| * @param[in] cfg Configuration number (bConfigurationValue) |
| * |
| * @return pointer to configuration node or NULL if does not exist |
| */ |
| struct usbd_config_node *usbd_config_get(struct usbd_contex *uds_ctx, |
| uint8_t cfg); |
| |
| /** |
| * @brief Get selected configuration node |
| * |
| * Get configuration node based on configuration selected by the host. |
| * |
| * @param[in] ctx Pointer to USB device support context |
| * |
| * @return pointer to configuration node or NULL if does not exist |
| */ |
| struct usbd_config_node *usbd_config_get_current(struct usbd_contex *uds_ctx); |
| |
| /** |
| * @brief Check whether a configuration exist |
| * |
| * @param[in] ctx Pointer to USB device support context |
| * @param[in] cfg Configuration number (bConfigurationValue) |
| * |
| * @return True if a configuration exist. |
| */ |
| bool usbd_config_exist(struct usbd_contex *const uds_ctx, |
| const uint8_t cfg); |
| |
| /** |
| * @brief Setup new USB device configuration |
| * |
| * This function disables all active endpoints of current configuration |
| * and enables all interface alternate 0 endpoints of a new configuration. |
| * Determined to be called Set Configuration request. |
| * |
| * @param[in] ctx Pointer to USB device support context |
| * @param[in] new_cfg New configuration number (bConfigurationValue) |
| * |
| * @return 0 on success, other values on fail. |
| */ |
| int usbd_config_set(struct usbd_contex *uds_ctx, uint8_t new_cfg); |
| |
| #endif /* ZEPHYR_INCLUDE_USBD_CONFIG_H */ |