Skip to content

Commit f978867

Browse files
vshymanskyyCopilot
andcommitted
Improve BlynkConsole and WidgetTerminal reliability
Co-authored-by: Copilot <copilot@github.com>
1 parent 7cf0700 commit f978867

2 files changed

Lines changed: 12 additions & 13 deletions

File tree

src/Blynk/BlynkConsole.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class BlynkConsole
154154
}
155155

156156
ProcessResult process(char c) {
157-
if (cmdPtr >= cmdBuff+sizeof(cmdBuff)) {
157+
if (cmdPtr >= cmdBuff + sizeof(cmdBuff) - 1) {
158158
reset_buff();
159159
}
160160

@@ -227,10 +227,12 @@ class BlynkConsole
227227

228228
void begin(Stream& s) {
229229
stream = &s;
230+
reset_buff();
230231
}
231232

232233
void begin(Stream* s) {
233234
stream = s;
235+
reset_buff();
234236
}
235237

236238
Stream& getStream() {

src/WidgetTerminal.h

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919

2020
#if defined(ARDUINO) && !(defined(LINUX) || defined(__MBED__))
2121
#define BLYNK_USE_STREAM_CLASS
22+
#define BLYNK_STREAM_CLASS_OVERRIDE
2223
#elif defined(SPARK) || defined(PARTICLE)
2324
#define BLYNK_USE_STREAM_CLASS
25+
#define BLYNK_STREAM_CLASS_OVERRIDE
2426
#endif
2527

2628
#include <Blynk/BlynkWidgetBase.h>
@@ -48,7 +50,7 @@ class WidgetTerminal
4850
* Writing
4951
*/
5052

51-
virtual size_t write(uint8_t byte) {
53+
virtual size_t write(uint8_t byte) BLYNK_STREAM_CLASS_OVERRIDE {
5254
mOutBuf[mOutQty++] = byte;
5355
if (byte == '\n' && Blynk.connected()) {
5456
flush();
@@ -59,7 +61,7 @@ class WidgetTerminal
5961
return 1;
6062
}
6163

62-
virtual void flush() {
64+
virtual void flush() BLYNK_STREAM_CLASS_OVERRIDE {
6365
if (mOutQty) {
6466
Blynk.virtualWriteBinary(mPin, mOutBuf, mOutQty);
6567
mOutQty = 0;
@@ -70,9 +72,9 @@ class WidgetTerminal
7072
* Reading
7173
*/
7274

73-
virtual int read() { return mRxBuff.readable() ? mRxBuff.get() : -1; }
74-
virtual int available() { return mRxBuff.size(); }
75-
virtual int peek() { return mRxBuff.readable() ? mRxBuff.peek() : -1; }
75+
virtual int read() BLYNK_STREAM_CLASS_OVERRIDE { return mRxBuff.readable() ? mRxBuff.get() : -1; }
76+
virtual int available() BLYNK_STREAM_CLASS_OVERRIDE { return mRxBuff.size(); }
77+
virtual int peek() BLYNK_STREAM_CLASS_OVERRIDE { return mRxBuff.readable() ? mRxBuff.peek() : -1; }
7678

7779
void process(const BlynkParam& param) {
7880
mRxBuff.put((uint8_t*)param.getBuffer(), param.getLength());
@@ -108,17 +110,12 @@ class WidgetTerminal
108110

109111
using Stream::write;
110112

111-
virtual size_t write(const void* buff, size_t len) {
112-
return write((char*)buff, len);
113-
}
114-
115113
#else
116114

117-
virtual size_t write(const void* buff, size_t len) {
118-
uint8_t* buf = (uint8_t*)buff;
115+
virtual size_t write(const uint8_t* buff, size_t len) {
119116
size_t left = len;
120117
while (left--) {
121-
write(*buf++);
118+
write(*buff++);
122119
}
123120
return len;
124121
}

0 commit comments

Comments
 (0)