4#if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
7#include "usb/usb_host.h"
14static const char *
const TAG =
"usb_host";
17static const uint8_t USB_RECIP_DEVICE = 0;
18static const uint8_t USB_RECIP_INTERFACE = 1;
19static const uint8_t USB_RECIP_ENDPOINT = 2;
20static const uint8_t USB_TYPE_STANDARD = 0 << 5;
21static const uint8_t USB_TYPE_CLASS = 1 << 5;
22static const uint8_t USB_TYPE_VENDOR = 2 << 5;
23static const uint8_t USB_DIR_MASK = 1 << 7;
24static const uint8_t USB_DIR_IN = 1 << 7;
25static const uint8_t USB_DIR_OUT = 0;
26static const size_t SETUP_PACKET_SIZE = 8;
28static const size_t MAX_REQUESTS = 16;
70 for (
size_t i = 0; i != MAX_REQUESTS; i++)
71 this->
trq_pool_.push_back(&this->requests_[i]);
73 void setup()
override;
85 const std::vector<uint8_t> &data = {});
106 void loop()
override;
107 void setup()
override;
TransferRequest * get_trq_()
USBClient(uint16_t vid, uint16_t pid)
usb_host_client_handle_t handle_
void on_opened(uint8_t addr)
TransferRequest requests_[MAX_REQUESTS]
void transfer_in(uint8_t ep_address, const transfer_cb_t &callback, uint16_t length)
Performs a transfer input operation.
void transfer_out(uint8_t ep_address, const transfer_cb_t &callback, const uint8_t *data, uint16_t length)
Performs an output transfer operation.
float get_setup_priority() const override
void dump_config() override
std::list< TransferRequest * > trq_pool_
void control_transfer_callback(const usb_transfer_t *xfer) const
void release_trq(TransferRequest *trq)
virtual void on_connected()
virtual void disconnect()
virtual void on_disconnected()
bool control_transfer(uint8_t type, uint8_t request, uint16_t value, uint16_t index, const transfer_cb_t &callback, const std::vector< uint8_t > &data={})
void on_removed(usb_device_handle_t handle)
usb_device_handle_t device_handle_
std::vector< USBClient * > clients_
float get_setup_priority() const override
const float BUS
For communication buses like i2c/spi.
const float IO
For components that represent GPIO pins like PCF8573.
std::function< void(const TransferStatus &)> transfer_cb_t
Providing packet encoding functions for exchanging data with a remote host.
usb_transfer_t * transfer