blabla
Fork of ESP8266Interface by
Revision 21:690526f05fe6, committed 2014-12-02
- Comitter:
- michaeljkoster
- Date:
- Tue Dec 02 04:16:26 2014 +0000
- Parent:
- 20:d764237405c2
- Child:
- 22:c4360e61486a
- Commit message:
- Fix recieveFrom loop to have 2 stage timeout in non-blocking case, return 0 bytes
Changed in this revision
Socket/Socket.cpp | Show annotated file Show diff for this revision Revisions of this file |
Socket/UDPSocket.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Socket/Socket.cpp Mon Dec 01 09:28:02 2014 +0000 +++ b/Socket/Socket.cpp Tue Dec 02 04:16:26 2014 +0000 @@ -19,6 +19,8 @@ #include "Socket.h" #include <cstring> +extern Serial pc; + Socket::Socket() : _blocking(true), _timeout(1500) { wifi = ESP8266::getInstance(); if (wifi == NULL) @@ -26,6 +28,7 @@ } void Socket::set_blocking(bool blocking, unsigned int timeout) { + pc.printf("set blocking: %d %d\r\n", blocking, timeout); _blocking = blocking; _timeout = timeout; }
--- a/Socket/UDPSocket.cpp Mon Dec 01 09:28:02 2014 +0000 +++ b/Socket/UDPSocket.cpp Tue Dec 02 04:16:26 2014 +0000 @@ -76,9 +76,20 @@ break; } } - pc.printf("UDPsocket::receiveFrom: %d bytes\r\n", nb_available); - } - + } + else { + tmr.start(); + + while (time < _timeout){ + nb_available = wifi->readable(); + if (nb_available < 0) return nb_available; + if (nb_available > 0) break ; + time = tmr.read_ms(); + } + + if (nb_available == 0) return nb_available; + } + tmr.start(); while (time < _timeout) {