From d6f62943d4b511e7d5fe6147096c8979890416f5 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 19 Jun 2015 10:41:20 +0200 Subject: [PATCH] fix problems with serial and cbuf (some times freeze on high load) --- cores/esp8266/HardwareSerial.cpp | 1 + cores/esp8266/cbuf.h | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/HardwareSerial.cpp b/cores/esp8266/HardwareSerial.cpp index 970b16c50..fcca84687 100644 --- a/cores/esp8266/HardwareSerial.cpp +++ b/cores/esp8266/HardwareSerial.cpp @@ -608,6 +608,7 @@ size_t HardwareSerial::write(uint8_t c) { while(_tx_buffer->room() == 0) { yield(); + uart_arm_tx_interrupt(_uart); } _tx_buffer->write(c); diff --git a/cores/esp8266/cbuf.h b/cores/esp8266/cbuf.h index 87642510b..ceb6a7b6d 100644 --- a/cores/esp8266/cbuf.h +++ b/cores/esp8266/cbuf.h @@ -39,8 +39,12 @@ class cbuf { } size_t room() const { - if(_end >= _begin) return _size - (_end - _begin) - 1; - + if(_end >= _begin) { + return _size - (_end - _begin) - 1; + } + if(_begin == _end) { + return _size; + } return _begin - _end - 1; }