From 2238b6a05b4f694b549780877959640b969feb52 Mon Sep 17 00:00:00 2001 From: Dawid Cieszynski Date: Sat, 11 Nov 2017 21:11:07 +0100 Subject: [PATCH] add timeout to streamSkipUntil --- src/TinyGsmClientA6.h | 10 +++++++--- src/TinyGsmClientESP8266.h | 10 +++++++--- src/TinyGsmClientM590.h | 10 +++++++--- src/TinyGsmClientSIM800.h | 10 +++++++--- src/TinyGsmClientU201.h | 10 +++++++--- 5 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/TinyGsmClientA6.h b/src/TinyGsmClientA6.h index 6dd9634..8fc17d3 100644 --- a/src/TinyGsmClientA6.h +++ b/src/TinyGsmClientA6.h @@ -644,9 +644,13 @@ public: streamWrite(tail...); } - bool streamSkipUntil(char c) { //TODO: timeout - while (true) { - while (!stream.available()) { TINY_GSM_YIELD(); } + bool streamSkipUntil(char c) { + const unsigned long timeout = 1000L; + unsigned long startMillis = millis(); + while (millis() - startMillis < timeout) { + while (millis() - startMillis < timeout && !stream.available()) { + TINY_GSM_YIELD(); + } if (stream.read() == c) return true; } diff --git a/src/TinyGsmClientESP8266.h b/src/TinyGsmClientESP8266.h index d1a6920..e8afdc8 100644 --- a/src/TinyGsmClientESP8266.h +++ b/src/TinyGsmClientESP8266.h @@ -412,9 +412,13 @@ public: streamWrite(tail...); } - bool streamSkipUntil(char c) { //TODO: timeout - while (true) { - while (!stream.available()) { TINY_GSM_YIELD(); } + bool streamSkipUntil(char c) { + const unsigned long timeout = 1000L; + unsigned long startMillis = millis(); + while (millis() - startMillis < timeout) { + while (millis() - startMillis < timeout && !stream.available()) { + TINY_GSM_YIELD(); + } if (stream.read() == c) return true; } diff --git a/src/TinyGsmClientM590.h b/src/TinyGsmClientM590.h index a5ae273..ea287f4 100644 --- a/src/TinyGsmClientM590.h +++ b/src/TinyGsmClientM590.h @@ -589,9 +589,13 @@ public: streamWrite(tail...); } - bool streamSkipUntil(char c) { //TODO: timeout - while (true) { - while (!stream.available()) { TINY_GSM_YIELD(); } + bool streamSkipUntil(char c) { + const unsigned long timeout = 1000L; + unsigned long startMillis = millis(); + while (millis() - startMillis < timeout) { + while (millis() - startMillis < timeout && !stream.available()) { + TINY_GSM_YIELD(); + } if (stream.read() == c) return true; } diff --git a/src/TinyGsmClientSIM800.h b/src/TinyGsmClientSIM800.h index 8124cda..596a443 100644 --- a/src/TinyGsmClientSIM800.h +++ b/src/TinyGsmClientSIM800.h @@ -837,9 +837,13 @@ public: streamWrite(tail...); } - bool streamSkipUntil(char c) { //TODO: timeout - while (true) { - while (!stream.available()) { TINY_GSM_YIELD(); } + bool streamSkipUntil(char c) { + const unsigned long timeout = 1000L; + unsigned long startMillis = millis(); + while (millis() - startMillis < timeout) { + while (millis() - startMillis < timeout && !stream.available()) { + TINY_GSM_YIELD(); + } if (stream.read() == c) return true; } diff --git a/src/TinyGsmClientU201.h b/src/TinyGsmClientU201.h index ddd2f99..7548899 100644 --- a/src/TinyGsmClientU201.h +++ b/src/TinyGsmClientU201.h @@ -606,9 +606,13 @@ public: streamWrite(tail...); } - bool streamSkipUntil(char c) { //TODO: timeout - while (true) { - while (!stream.available()) { TINY_GSM_YIELD(); } + bool streamSkipUntil(char c) { + const unsigned long timeout = 1000L; + unsigned long startMillis = millis(); + while (millis() - startMillis < timeout) { + while (millis() - startMillis < timeout && !stream.available()) { + TINY_GSM_YIELD(); + } if (stream.read() == c) return true; }