diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-12-28 18:58:14 +0200 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-03-11 09:32:07 +0700 |
commit | e5b047369b74c406bf5a543e52032b2047dfec77 (patch) | |
tree | f5db658e102ab729593139deefeea87cf05f8175 | |
parent | 54fc247f9b6589291de809065f713930ffdd1618 (diff) | |
download | micropython-e5b047369b74c406bf5a543e52032b2047dfec77.tar.gz micropython-e5b047369b74c406bf5a543e52032b2047dfec77.zip |
extmod/modlwip: Use MICROPY_EVENT_POLL_HOOK for event polling if defined.
Instead of just delaying 100ms if event isn't yet ready.
So far applies only to default, "infinite" socket timeout.
-rw-r--r-- | extmod/modlwip.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/extmod/modlwip.c b/extmod/modlwip.c index 3ad51f94d5..4f29a5723b 100644 --- a/extmod/modlwip.c +++ b/extmod/modlwip.c @@ -211,8 +211,11 @@ typedef struct _lwip_socket_obj_t { } lwip_socket_obj_t; static inline void poll_sockets(void) { - // TODO: Allow to override by ports +#ifdef MICROPY_EVENT_POLL_HOOK + MICROPY_EVENT_POLL_HOOK; +#else mp_hal_delay_ms(1); +#endif } /*******************************************************************************/ @@ -348,7 +351,7 @@ STATIC mp_uint_t lwip_udp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_ } } else { while (socket->incoming.pbuf == NULL) { - mp_hal_delay_ms(100); + poll_sockets(); } } } @@ -605,7 +608,7 @@ STATIC mp_obj_t lwip_socket_accept(mp_obj_t self_in) { } } else { while (socket->incoming.connection == NULL) { - mp_hal_delay_ms(100); + poll_sockets(); } } } @@ -688,7 +691,7 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) { } } else { while (socket->state == STATE_CONNECTING) { - mp_hal_delay_ms(100); + poll_sockets(); } } if (socket->state == STATE_CONNECTED) { @@ -1011,7 +1014,7 @@ STATIC mp_obj_t lwip_getaddrinfo(mp_obj_t host_in, mp_obj_t port_in) { } case ERR_INPROGRESS: { while(!lwip_dns_returned) { - mp_hal_delay_ms(100); + poll_sockets(); } if (lwip_dns_returned == 2) { nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(ENOENT))); |