ESPHome 2025.12.0-dev
Loading...
Searching...
No Matches
tinyusb_component.h
Go to the documentation of this file.
1#pragma once
2#if defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
4
5#include "tinyusb.h"
6#include "tusb.h"
7
8namespace esphome::tinyusb {
9
19
20static const char *DEFAULT_USB_STR = "ESPHome";
21
22class TinyUSB : public Component {
23 public:
24 void setup() override;
25 void dump_config() override;
26 float get_setup_priority() const override { return setup_priority::BUS; }
27
28 void set_usb_desc_product_id(uint16_t product_id) { this->usb_descriptor_.idProduct = product_id; }
29 void set_usb_desc_vendor_id(uint16_t vendor_id) { this->usb_descriptor_.idVendor = vendor_id; }
30 void set_usb_desc_lang_id(uint16_t lang_id) {
31 this->usb_desc_lang_id_[0] = lang_id & 0xFF;
32 this->usb_desc_lang_id_[1] = lang_id >> 8;
33 }
34 void set_usb_desc_manufacturer(const char *usb_desc_manufacturer) {
35 this->string_descriptor_[MANUFACTURER] = usb_desc_manufacturer;
36 }
37 void set_usb_desc_product(const char *usb_desc_product) { this->string_descriptor_[PRODUCT] = usb_desc_product; }
38 void set_usb_desc_serial(const char *usb_desc_serial) { this->string_descriptor_[SERIAL_NUMBER] = usb_desc_serial; }
39
40 protected:
41 char usb_desc_lang_id_[2] = {0x09, 0x04}; // defaults to english
42
43 const char *string_descriptor_[SIZE] = {
44 this->usb_desc_lang_id_, // 0: supported language is English (0x0409)
45 DEFAULT_USB_STR, // 1: Manufacturer
46 DEFAULT_USB_STR, // 2: Product
47 nullptr, // 3: Serial Number
48 nullptr, // 4: Interface
49 nullptr, // 5: Terminator
50 };
51
52 tinyusb_config_t tusb_cfg_{};
53 tusb_desc_device_t usb_descriptor_{
54 .bLength = sizeof(tusb_desc_device_t),
55 .bDescriptorType = TUSB_DESC_DEVICE,
56 .bcdUSB = 0x0200,
57 .bDeviceClass = TUSB_CLASS_MISC,
58 .bDeviceSubClass = MISC_SUBCLASS_COMMON,
59 .bDeviceProtocol = MISC_PROTOCOL_IAD,
60 .bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE,
61 .idVendor = 0x303A,
62 .idProduct = 0x4001,
63 .bcdDevice = CONFIG_TINYUSB_DESC_BCD_DEVICE,
64 .iManufacturer = 1,
65 .iProduct = 2,
66 .iSerialNumber = 3,
67 .bNumConfigurations = 1,
68 };
69};
70
71} // namespace esphome::tinyusb
72#endif
void set_usb_desc_serial(const char *usb_desc_serial)
void set_usb_desc_product(const char *usb_desc_product)
void set_usb_desc_lang_id(uint16_t lang_id)
const char * string_descriptor_[SIZE]
void set_usb_desc_vendor_id(uint16_t vendor_id)
tusb_desc_device_t usb_descriptor_
float get_setup_priority() const override
void set_usb_desc_product_id(uint16_t product_id)
void set_usb_desc_manufacturer(const char *usb_desc_manufacturer)
const float BUS
For communication buses like i2c/spi.
Definition component.cpp:56