From 88a3112d3b9574d36336a1eb6cdc5b5fa1d5a17c Mon Sep 17 00:00:00 2001 From: h2zero Date: Thu, 30 Jul 2026 17:03:45 -0600 Subject: [PATCH 1/2] [Bugfix] NimBLEStream::availableForWrite signature compatability. This makes the availableForWrite signature override compatible with Arduino Print. --- src/NimBLEStream.cpp | 4 ++-- src/NimBLEStream.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NimBLEStream.cpp b/src/NimBLEStream.cpp index 7ed0c908..853cef22 100644 --- a/src/NimBLEStream.cpp +++ b/src/NimBLEStream.cpp @@ -356,8 +356,8 @@ size_t NimBLEStream::write(const uint8_t* data, size_t len) { * @brief Get the available free space in the stream's TX buffer. * @return the number of bytes that can be written to the stream without blocking. */ -size_t NimBLEStream::availableForWrite() const { - return m_txBuf ? m_txBuf->freeSize() : 0; +int NimBLEStream::availableForWrite() { + return m_txBuf ? static_cast(m_txBuf->freeSize()) : 0; } /** diff --git a/src/NimBLEStream.h b/src/NimBLEStream.h index 47ccb83d..a0b7d8ae 100644 --- a/src/NimBLEStream.h +++ b/src/NimBLEStream.h @@ -86,7 +86,7 @@ class NimBLEStream : public Stream { return write(static_cast(data)); } - size_t availableForWrite() const; + int availableForWrite(); // Read up to len bytes into buffer (non-blocking) size_t read(uint8_t* buffer, size_t len); From 4b292158ab298e3005779d90b36f099a72c2f68d Mon Sep 17 00:00:00 2001 From: h2zero Date: Fri, 31 Jul 2026 19:25:56 -0600 Subject: [PATCH 2/2] Add include for newer Arduino core to prevent releasing memory before init --- src/NimBLEDevice.cpp | 3 +++ src/NimBLEStream.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/NimBLEDevice.cpp b/src/NimBLEDevice.cpp index 06cb7865..313abd2f 100644 --- a/src/NimBLEDevice.cpp +++ b/src/NimBLEDevice.cpp @@ -54,6 +54,9 @@ # if defined(ESP_PLATFORM) && defined(CONFIG_ENABLE_ARDUINO_DEPENDS) # include "esp32-hal-bt.h" +# if __has_include("esp32-hal-bt-mem.h") +# include "esp32-hal-bt-mem.h" +# endif # endif # include "NimBLELog.h" diff --git a/src/NimBLEStream.h b/src/NimBLEStream.h index a0b7d8ae..5285294b 100644 --- a/src/NimBLEStream.h +++ b/src/NimBLEStream.h @@ -55,6 +55,7 @@ class Stream : public Print { virtual int available() = 0; virtual int read() = 0; virtual int peek() = 0; + virtual int availableForWrite() { return 0; } virtual void flush() {} void setTimeout(unsigned long timeout) { m_timeout = timeout; } unsigned long getTimeout() const { return m_timeout; } @@ -86,7 +87,7 @@ class NimBLEStream : public Stream { return write(static_cast(data)); } - int availableForWrite(); + int availableForWrite() override; // Read up to len bytes into buffer (non-blocking) size_t read(uint8_t* buffer, size_t len);