From 999b477419844c15d2b50583dab26c817edbbc22 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 23 May 2022 21:12:47 +0200 Subject: [PATCH] Simplified SBuffer --- lib/default/Ext-printf/src/SBuffer.hpp | 23 +++++++---------------- tasmota/xdrv_23_zigbee_9_serial.ino | 5 +---- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/lib/default/Ext-printf/src/SBuffer.hpp b/lib/default/Ext-printf/src/SBuffer.hpp index 67bbbcd48..9c545add0 100644 --- a/lib/default/Ext-printf/src/SBuffer.hpp +++ b/lib/default/Ext-printf/src/SBuffer.hpp @@ -48,7 +48,7 @@ public: inline uint8_t *buf(size_t i = 0) const { return &_buf->buf[i]; } inline char *charptr(size_t i = 0) const { return (char*) &_buf->buf[i]; } - virtual ~SBuffer(void) { + ~SBuffer(void) { delete[] _buf; } @@ -258,6 +258,12 @@ public: return buf2; } + static SBuffer SBufferFromBytes(const uint8_t *bytes, size_t len2) { + SBuffer buf2(len2); + buf2.addBuffer(bytes, len2); + return buf2; + } + // nullptr accepted static bool equalsSBuffer(const class SBuffer * buf1, const class SBuffer * buf2) { if (buf1 == buf2) { return true; } @@ -290,18 +296,3 @@ protected: SBuffer_impl * _buf; } SBuffer; - -typedef class PreAllocatedSBuffer : public SBuffer { - -public: - PreAllocatedSBuffer(const size_t size, void * buffer) { - _buf = (SBuffer_impl*) buffer; - _buf->size = size - 4; - _buf->len = 0; - } - - ~PreAllocatedSBuffer(void) { - // don't deallocate - _buf = nullptr; - } -} PreAllocatedSBuffer; diff --git a/tasmota/xdrv_23_zigbee_9_serial.ino b/tasmota/xdrv_23_zigbee_9_serial.ino index ef3ef350b..7badbcf77 100644 --- a/tasmota/xdrv_23_zigbee_9_serial.ino +++ b/tasmota/xdrv_23_zigbee_9_serial.ino @@ -300,11 +300,8 @@ void ZigbeeInitSerial(void) ZigbeeSerial->begin(115200); if (ZigbeeSerial->hardwareSerial()) { ClaimSerial(); - uint32_t aligned_buffer = ((uint32_t)TasmotaGlobal.serial_in_buffer + 3) & ~3; - zigbee_buffer = new PreAllocatedSBuffer(sizeof(TasmotaGlobal.serial_in_buffer) - 3, (char*) aligned_buffer); - } else { - zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE); } + zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE); zigbee.active = true; zigbee.init_phase = true; // start the state machine