Skip to content

(re)introduce timeout in HardwareSerial::readBytes(buffer, size) #5558

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jan 8, 2019

Conversation

d-a-v
Copy link
Collaborator

@d-a-v d-a-v commented Dec 27, 2018

and add

  • HardwareSerial::read(buffer, size)
  • visual test

per comment

… HardwareSerial::read(buffer, size) + visual test
d-a-v referenced this pull request Dec 27, 2018
* uart fixes and BW improvements

* uart: read_char straightly use hw buffer

* +attributes for functions called by ISR

* uart: BW improvements
read_char straightly use hw buffer (+ ~10%bw)
read by block (+ ~190%bw) (instead of generic Stream::readBytes)
attributes for functions called by ISR
remove overrun message
remove some ISR flags which were not honoured

* fix merge

* fix buffer overflow

* serial stress test sketch

* astyle

* serial stress example: interactive keyboard, stop reading, overrun

* serial device test: bandwidth & overrun

* update + HardwareSerial::hasError()

* interactive overrun in example

* astyle

* Test using @plerup's SoftwareSerial as submodule (tag 3.4.1)

* update upstream ref (fix warning)

* host mock uart/read(buf,size)

* reset style changes in submodules before style diff

* update build_boards_manager_package.sh for submodules

* trigger CI (removing space)

* cannot reproduce locally the CI issue, setting bash -x option to get live trace

* remove previously added (in this PR) 'set -e' in package builder (passes local tests, not real CI)
script-comment new recipe.hooks.core.prebuild.3 (along with already commented .1 and .2)
moved CI package test to be first on the test list
remove 'set -x', wish me luck
@d-a-v d-a-v requested a review from devyte January 5, 2019 21:11
esp8266::polledTimeout::oneShot timeOut(_timeout);
size_t avail;
while ((avail = available()) == 0 && !timeOut);
if (avail == 0)
Copy link
Collaborator

@devyte devyte Jan 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the correct condition. It's common to check for the counterpart, i.e.: if(timeOut) in this case, but this is better, because it accounts for the case when both sides of the && become false at the same time.

@d-a-v d-a-v merged commit dc03293 into esp8266:master Jan 8, 2019
@d-a-v d-a-v deleted the hwserialreadbytestimeout branch January 8, 2019 03:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants