From 2ea006653637561951901199e159943da1e8b655 Mon Sep 17 00:00:00 2001 From: Hajo Noerenberg Date: Mon, 13 Jan 2025 12:14:41 +0100 Subject: [PATCH] [common] Make Serial RX buffer size configurable, increase default to 256 bytes (#313) * Make Serial RX buffer configurable and set default to 256 bytes * Replace RingBuffer by SerialRingBuffer --- cores/beken-72xx/arduino/libraries/Serial/SerialPrivate.h | 4 ++-- cores/common/arduino/libraries/api/Serial/Serial.h | 4 +++- .../arduino/libraries/api/SoftwareSerial/SoftwareSerial.h | 2 +- cores/common/base/lt_config.h | 4 ++++ .../arduino/libraries/SoftwareSerial/SoftwareSerial.cpp | 4 ++-- cores/realtek-ambz/arduino/libraries/Serial/SerialPrivate.h | 2 +- cores/realtek-ambz2/arduino/libraries/Serial/SerialPrivate.h | 2 +- 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cores/beken-72xx/arduino/libraries/Serial/SerialPrivate.h b/cores/beken-72xx/arduino/libraries/Serial/SerialPrivate.h index c481237..a5cbf7c 100644 --- a/cores/beken-72xx/arduino/libraries/Serial/SerialPrivate.h +++ b/cores/beken-72xx/arduino/libraries/Serial/SerialPrivate.h @@ -6,9 +6,9 @@ #include typedef struct { - RingBuffer buf; + SerialRingBuffer buf; } SerialData; #define DATA ((SerialData *)data) #define BUF (DATA->buf) -#define pBUF ((RingBuffer *)param) +#define pBUF ((SerialRingBuffer *)param) diff --git a/cores/common/arduino/libraries/api/Serial/Serial.h b/cores/common/arduino/libraries/api/Serial/Serial.h index 1b80b68..3ea06c1 100644 --- a/cores/common/arduino/libraries/api/Serial/Serial.h +++ b/cores/common/arduino/libraries/api/Serial/Serial.h @@ -8,6 +8,8 @@ using namespace arduino; +typedef RingBufferN SerialRingBuffer; + class SerialClass : public HardwareSerial { private: uint32_t port; @@ -18,7 +20,7 @@ class SerialClass : public HardwareSerial { void *data; private: - RingBuffer *buf; + SerialRingBuffer *buf; uint32_t baudrate; uint16_t config; diff --git a/cores/common/arduino/libraries/api/SoftwareSerial/SoftwareSerial.h b/cores/common/arduino/libraries/api/SoftwareSerial/SoftwareSerial.h index 151b194..596748a 100644 --- a/cores/common/arduino/libraries/api/SoftwareSerial/SoftwareSerial.h +++ b/cores/common/arduino/libraries/api/SoftwareSerial/SoftwareSerial.h @@ -27,7 +27,7 @@ typedef enum { typedef struct { SoftState state; - RingBuffer *buf; + SerialRingBuffer *buf; uint8_t byte; pin_size_t pin; void *param; diff --git a/cores/common/base/lt_config.h b/cores/common/base/lt_config.h index 75d8611..ce3948b 100644 --- a/cores/common/base/lt_config.h +++ b/cores/common/base/lt_config.h @@ -77,6 +77,10 @@ #define LT_UART_DEFAULT_SERIAL LT_UART_DEFAULT_PORT #endif +#ifndef LT_SERIAL_BUFFER_SIZE +#define LT_SERIAL_BUFFER_SIZE 256 +#endif + // Misc options #ifndef LT_USE_TIME #define LT_USE_TIME 0 diff --git a/cores/realtek-amb/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp b/cores/realtek-amb/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp index 1176126..65fe36c 100644 --- a/cores/realtek-amb/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp +++ b/cores/realtek-amb/arduino/libraries/SoftwareSerial/SoftwareSerial.cpp @@ -63,8 +63,8 @@ void SoftwareSerial::begin(unsigned long baudrate, uint16_t config) { pinMode(data.tx.pin, OUTPUT); digitalWrite(data.tx.pin, HIGH); - data.rx.buf = new RingBuffer(); - data.tx.buf = new RingBuffer(); + data.rx.buf = new SerialRingBuffer(); + data.tx.buf = new SerialRingBuffer(); data.rx.state = SS_IDLE; data.tx.state = SS_IDLE; diff --git a/cores/realtek-ambz/arduino/libraries/Serial/SerialPrivate.h b/cores/realtek-ambz/arduino/libraries/Serial/SerialPrivate.h index 3151135..cdffdf0 100644 --- a/cores/realtek-ambz/arduino/libraries/Serial/SerialPrivate.h +++ b/cores/realtek-ambz/arduino/libraries/Serial/SerialPrivate.h @@ -8,7 +8,7 @@ typedef struct { UART_TypeDef *uart; IRQn irq; - RingBuffer buf; + SerialRingBuffer buf; } SerialData; #define DATA ((SerialData *)data) diff --git a/cores/realtek-ambz2/arduino/libraries/Serial/SerialPrivate.h b/cores/realtek-ambz2/arduino/libraries/Serial/SerialPrivate.h index 6fb1ec9..9af592a 100644 --- a/cores/realtek-ambz2/arduino/libraries/Serial/SerialPrivate.h +++ b/cores/realtek-ambz2/arduino/libraries/Serial/SerialPrivate.h @@ -7,7 +7,7 @@ typedef struct { hal_uart_adapter_t *uart; - RingBuffer buf; + SerialRingBuffer buf; } SerialData; #define DATA ((SerialData *)data)