mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-03 15:04:39 +00:00
feat(us/host): set device cfg during enumeration
- user callback funciton to set device configuration as a part of usb_host_install - callback provides device descriptor of a device being enumerated - user can set which cfg descriptor the USB device will be set with - user can filter device enumeration - Kconfig menu to enable callback function - usb_host_lib example demonstration
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -106,6 +106,8 @@ typedef struct {
|
||||
set this if they want to use an external USB PHY. Otherwise, the USB Host Library
|
||||
will automatically configure the internal USB PHY */
|
||||
int intr_flags; /**< Interrupt flags for the underlying ISR used by the USB Host stack */
|
||||
usb_host_enum_filter_cb_t enum_filter_cb; /**< Enumeration filter callback. Enable CONFIG_USB_HOST_ENABLE_ENUM_FILTER_CALLBACK
|
||||
to use this feature. Set to NULL otherwise. */
|
||||
} usb_host_config_t;
|
||||
|
||||
/**
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -10,6 +10,7 @@ Warning: The USB Host Library API is still a beta version and may be subject to
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "usb/usb_types_ch9.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -46,6 +47,29 @@ typedef enum {
|
||||
*/
|
||||
typedef struct usb_device_handle_s *usb_device_handle_t;
|
||||
|
||||
/**
|
||||
* @brief Enumeration filter callback
|
||||
*
|
||||
* This callback is called at the beginning of the enumeration process for a newly attached device.
|
||||
* Through this callback, users are able to:
|
||||
*
|
||||
* - filter which devices should be enumerated
|
||||
* - select the configuration number to use when enumerating the device
|
||||
*
|
||||
* The device descriptor is passed to this callback to allow users to filter devices based on
|
||||
* Vendor ID, Product ID, and class code.
|
||||
*
|
||||
* @attention This callback must be non-blocking
|
||||
* @attention This callback must not submit any USB transfers
|
||||
* @param[in] dev_desc Device descriptor of the device to enumerate
|
||||
* @param[out] bConfigurationValue Configuration number to use when enumerating the device (starts with 1)
|
||||
*
|
||||
* @return bool
|
||||
* - true: USB device will be enumerated
|
||||
* - false: USB device will not be enumerated
|
||||
*/
|
||||
typedef bool (*usb_host_enum_filter_cb_t)(const usb_device_desc_t *dev_desc, uint8_t *bConfigurationValue);
|
||||
|
||||
/**
|
||||
* @brief Basic information of an enumerated device
|
||||
*/
|
||||
|
Reference in New Issue
Block a user