From e7429389a6a6322ebf88c30bf417279dc36ecda1 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 22 Aug 2021 17:29:35 +0200 Subject: [PATCH] extmod/modnetwork: Add extended socket state. --- extmod/modnetwork.h | 6 ++++++ extmod/modusocket.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/extmod/modnetwork.h b/extmod/modnetwork.h index 9017625cf0..50c8bc4b06 100644 --- a/extmod/modnetwork.h +++ b/extmod/modnetwork.h @@ -85,9 +85,15 @@ typedef struct _mod_network_socket_obj_t { uint8_t domain; uint8_t type; int8_t fileno; + uint8_t bound; } u_param; mp_uint_t u_state; }; + #if MICROPY_PY_USOCKET_EXTENDED_STATE + // Extended socket state for NICs/ports that need it. + int32_t timeout; + void *state; + #endif } mod_network_socket_obj_t; extern const mod_network_nic_type_t mod_network_nic_type_wiznet5k; diff --git a/extmod/modusocket.c b/extmod/modusocket.c index c59fc85226..143470a96a 100644 --- a/extmod/modusocket.c +++ b/extmod/modusocket.c @@ -54,6 +54,7 @@ STATIC mp_obj_t socket_make_new(const mp_obj_type_t *type, size_t n_args, size_t s->u_param.domain = MOD_NETWORK_AF_INET; s->u_param.type = MOD_NETWORK_SOCK_STREAM; s->u_param.fileno = -1; + s->u_param.bound = false; if (n_args >= 1) { s->u_param.domain = mp_obj_get_int(args[0]); if (n_args >= 2) { @@ -64,6 +65,11 @@ STATIC mp_obj_t socket_make_new(const mp_obj_type_t *type, size_t n_args, size_t } } + #if MICROPY_PY_USOCKET_EXTENDED_STATE + s->timeout = 0; + s->state = NULL; + #endif + return MP_OBJ_FROM_PTR(s); }