De-increment sock available as we read out of sock

This commit is contained in:
Sara Damiano
2019-05-23 15:32:24 -04:00
parent 7e314292d4
commit fcb3d5b010
10 changed files with 24 additions and 6 deletions

2
.gitignore vendored
View File

@@ -14,6 +14,8 @@
.cproject
.project
.settings
.pioenvs
.piolibdeps
.pio/*
.clang_complete
.gcc-flags.json

View File

@@ -548,6 +548,8 @@ protected:
for (size_t i=0; i<len; i++) {
TINY_GSM_MODEM_STREAM_TO_MUX_FIFO_WITH_DOUBLE_TIMEOUT
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
waitResponse();
DBG("### READ:", len, "from", mux);

View File

@@ -615,6 +615,8 @@ protected:
for (size_t i=0; i<len; i++) {
TINY_GSM_MODEM_STREAM_TO_MUX_FIFO_WITH_DOUBLE_TIMEOUT
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
waitResponse();
DBG("### READ:", len, "from", mux);

View File

@@ -622,6 +622,8 @@ protected:
for (size_t i=0; i<len; i++) {
TINY_GSM_MODEM_STREAM_TO_MUX_FIFO_WITH_DOUBLE_TIMEOUT
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
waitResponse();
DBG("### READ:", len, "from", mux);

View File

@@ -835,12 +835,12 @@ protected:
size_t len_requested = stream.readStringUntil(',').toInt();
// ^^ Requested number of data bytes (1-1460 bytes)to be read
size_t len_confirmed = stream.readStringUntil('\n').toInt();
// ^^ Confirmed number of data bytes to be read, which may be less than requested.
// 0 indicates that no data can be read.
if (len_confirmed < len_requested) {
DBG(len_requested - len_confirmed, "fewer bytes confirmed than requested!");
}
sockets[mux]->sock_available = len_confirmed;
// ^^ Confirmed number of data bytes to be read, which may be less than requested.
// 0 indicates that no data can be read.
for (size_t i=0; i<TinyGsmMin(len_confirmed, len_requested) ; i++) {
uint32_t startMillis = millis();
@@ -855,6 +855,8 @@ protected:
char c = stream.read();
#endif
sockets[mux]->rx.put(c);
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
waitResponse();
DBG("### READ:", TinyGsmMin(len_confirmed, len_requested), "from", mux);

View File

@@ -765,12 +765,12 @@ protected:
size_t len_requested = stream.readStringUntil(',').toInt();
// ^^ Requested number of data bytes (1-1460 bytes)to be read
size_t len_confirmed = stream.readStringUntil('\n').toInt();
// ^^ Confirmed number of data bytes to be read, which may be less than requested.
// 0 indicates that no data can be read.
if (len_confirmed < len_requested) {
DBG(len_requested - len_confirmed, "fewer bytes confirmed than requested!");
}
sockets[mux]->sock_available = len_confirmed;
// ^^ Confirmed number of data bytes to be read, which may be less than requested.
// 0 indicates that no data can be read.
for (size_t i=0; i<TinyGsmMin(len_confirmed, len_requested) ; i++) {
uint32_t startMillis = millis();
@@ -785,6 +785,8 @@ protected:
char c = stream.read();
#endif
sockets[mux]->rx.put(c);
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
waitResponse();
DBG("### READ:", TinyGsmMin(len_confirmed, len_requested), "from", mux);

View File

@@ -610,6 +610,8 @@ protected:
for (size_t i=0; i<len; i++) {
TINY_GSM_MODEM_STREAM_TO_MUX_FIFO_WITH_DOUBLE_TIMEOUT
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
streamSkipUntil('\"');
waitResponse();

View File

@@ -621,10 +621,12 @@ protected:
while (!stream.available() && ((millis() - startMillis) < sockets[mux % TINY_GSM_MUX_COUNT]->_timeout)) { TINY_GSM_YIELD(); } \
char c = stream.read(); \
sockets[mux % TINY_GSM_MUX_COUNT]->rx.put(c);
sockets[mux % TINY_GSM_MUX_COUNT]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
// DBG("### Read:", len, "from", mux);
waitResponse();
sockets[mux % TINY_GSM_MUX_COUNT]->sock_available = modemGetAvailable(mux);
// sockets[mux % TINY_GSM_MUX_COUNT]->sock_available = modemGetAvailable(mux);
return len;
}

View File

@@ -598,6 +598,8 @@ protected:
for (size_t i=0; i<len; i++) {
TINY_GSM_MODEM_STREAM_TO_MUX_FIFO_WITH_DOUBLE_TIMEOUT
sockets[mux]->sock_available--;
// ^^ One less character available after moving from modem's FIFO to our FIFO
}
streamSkipUntil('\"');
waitResponse();

View File

@@ -100,7 +100,7 @@ uint32_t TinyGsmAutoBaud(T& SerialAT, uint32_t minimum = 9600, uint32_t maximum
DBG("Trying baud rate", rate, "...");
SerialAT.begin(rate);
delay(10);
for (int i=0; i<3; i++) {
for (int i=0; i<10; i++) {
SerialAT.print("AT\r\n");
String input = SerialAT.readString();
if (input.indexOf("OK") >= 0) {