1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-26 07:02:21 +01:00
This commit is contained in:
J. Nick Koston
2025-09-23 21:41:48 -05:00
parent 0ed6ba9afa
commit 0370a3061d
2 changed files with 4 additions and 7 deletions

View File

@@ -246,11 +246,8 @@ void USBUartComponent::start_input(USBUartChannel *channel) {
chunk->channel = channel;
// Push to lock-free queue for main loop processing
if (!this->usb_data_queue_.push(chunk)) {
ESP_LOGW(TAG, "USB data queue full, dropping %u bytes", status.data_len);
// Return chunk to pool
this->chunk_pool_.release(chunk);
}
// Push always succeeds because pool size == queue size
this->usb_data_queue_.push(chunk);
}
// Always restart input immediately from USB task

View File

@@ -137,8 +137,8 @@ class USBUartComponent : public usb_host::USBClient {
LockFreeQueue<UsbDataChunk, USB_DATA_QUEUE_SIZE> usb_data_queue_;
// Pool for allocating data chunks (uses EventPool pattern like BLE)
static constexpr int MAX_DATA_CHUNKS = 40;
EventPool<UsbDataChunk, MAX_DATA_CHUNKS> chunk_pool_;
// MUST be same size as queue to guarantee push always succeeds after allocate
EventPool<UsbDataChunk, USB_DATA_QUEUE_SIZE> chunk_pool_;
protected:
std::vector<USBUartChannel *> channels_{};