From 127c9424229a854f97fbe6a5a46e9124647b220e Mon Sep 17 00:00:00 2001 From: Tomasz Duda Date: Wed, 21 Feb 2024 20:31:36 +0100 Subject: [PATCH] remove ring buffer --- .../components/zephyr_uart/ring_buffer.cpp | 58 ------------------- esphome/components/zephyr_uart/ring_buffer.h | 20 ------- 2 files changed, 78 deletions(-) delete mode 100644 esphome/components/zephyr_uart/ring_buffer.cpp delete mode 100644 esphome/components/zephyr_uart/ring_buffer.h diff --git a/esphome/components/zephyr_uart/ring_buffer.cpp b/esphome/components/zephyr_uart/ring_buffer.cpp deleted file mode 100644 index 0b0027efe1..0000000000 --- a/esphome/components/zephyr_uart/ring_buffer.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "ring_buffer.h" -#include - -#ifndef CONFIG_UART_INTERRUPT_DRIVEN -#error "CONFIG_UART_INTERRUPT_DRIVEN is required" -#endif - -// while (true) { -// uart_line_ctrl_get(dev, UART_LINE_CTRL_DTR, &dtr); -// if (dtr) { -// break; -// } else { -// /* Give CPU resources to low priority threads. */ -// k_sleep(K_MSEC(100)); -// } -// } - -// } - -namespace esphome { -namespace zephyr_uart { - -void RingBuffer::setup(const device *dev, uint8_t *ring_buffer, uint32_t size) { - dev_ = dev; - ring_buf_init(&ringbuf_, size, ring_buffer); - uart_irq_callback_user_data_set(dev, interrupt_handler_, this); -} - -uint32_t RingBuffer::fill(const char *data, uint32_t size) { - // TODO block if no space - uint32_t rb_len = ring_buf_put(&ringbuf_, reinterpret_cast(data), size); - if (rb_len) { - uart_irq_tx_enable(dev_); - } - return rb_len; -} - -void RingBuffer::interrupt_handler_(const device *dev, void *user_data) { - auto thiz = static_cast(user_data); - while (uart_irq_update(dev) && uart_irq_is_pending(dev)) { - if (uart_irq_tx_ready(dev)) { - uint8_t buffer[64]; - int rb_len, send_len; - - rb_len = ring_buf_get(&thiz->ringbuf_, buffer, sizeof(buffer)); - if (!rb_len) { - uart_irq_tx_disable(dev); - continue; - } - - uart_fifo_fill(dev, buffer, rb_len); - // TODO add blocking - } - } -} - -} // namespace zephyr_uart -} // namespace esphome diff --git a/esphome/components/zephyr_uart/ring_buffer.h b/esphome/components/zephyr_uart/ring_buffer.h deleted file mode 100644 index 70f602a66d..0000000000 --- a/esphome/components/zephyr_uart/ring_buffer.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -#include - -class device; - -namespace esphome { -namespace zephyr_uart { - -class RingBuffer { - public: - void setup(const device *dev, uint8_t *ring_buffer, uint32_t size); - uint32_t fill(const char* data, uint32_t size); - protected: - static void interrupt_handler_(const device *dev, void *user_data); - ring_buf ringbuf_; - const device *dev_ = {nullptr}; -}; - -} // namespace zephyr_uart -} // namespace esphome