3434#include "py/runtime.h"
3535#include "netutils.h"
3636#include "modnetwork.h"
37+ #include "modwlan.h"
3738#include "modusocket.h"
3839#include "mpexception.h"
3940
@@ -129,7 +130,6 @@ STATIC mp_obj_t socket_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_
129130 // create socket object
130131 mod_network_socket_obj_t * s = m_new_obj_with_finaliser (mod_network_socket_obj_t );
131132 s -> base .type = (mp_obj_t )& socket_type ;
132- s -> nic_type = (mod_network_nic_type_t * )& mod_network_nic_type_wlan ;
133133 s -> u_param .domain = AF_INET ;
134134 s -> u_param .type = SOCK_STREAM ;
135135 s -> u_param .proto = IPPROTO_TCP ;
@@ -149,7 +149,7 @@ STATIC mp_obj_t socket_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_
149149
150150 // create the socket
151151 int _errno ;
152- if (s -> nic_type -> socket (s , & _errno ) != 0 ) {
152+ if (wlan_socket_socket (s , & _errno ) != 0 ) {
153153 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
154154 }
155155
@@ -160,7 +160,7 @@ STATIC mp_obj_t socket_make_new(mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_
160160// method socket.close()
161161STATIC mp_obj_t socket_close (mp_obj_t self_in ) {
162162 mod_network_socket_obj_t * self = self_in ;
163- self -> nic_type -> close (self );
163+ wlan_socket_close (self );
164164 return mp_const_none ;
165165}
166166STATIC MP_DEFINE_CONST_FUN_OBJ_1 (socket_close_obj , socket_close );
@@ -175,7 +175,7 @@ STATIC mp_obj_t socket_bind(mp_obj_t self_in, mp_obj_t addr_in) {
175175
176176 // call the NIC to bind the socket
177177 int _errno ;
178- if (self -> nic_type -> bind (self , ip , port , & _errno ) != 0 ) {
178+ if (wlan_socket_bind (self , ip , port , & _errno ) != 0 ) {
179179 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
180180 }
181181 return mp_const_none ;
@@ -187,7 +187,7 @@ STATIC mp_obj_t socket_listen(mp_obj_t self_in, mp_obj_t backlog) {
187187 mod_network_socket_obj_t * self = self_in ;
188188
189189 int _errno ;
190- if (self -> nic_type -> listen (self , mp_obj_get_int (backlog ), & _errno ) != 0 ) {
190+ if (wlan_socket_listen (self , mp_obj_get_int (backlog ), & _errno ) != 0 ) {
191191 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
192192 }
193193 return mp_const_none ;
@@ -199,22 +199,17 @@ STATIC mp_obj_t socket_accept(mp_obj_t self_in) {
199199 mod_network_socket_obj_t * self = self_in ;
200200
201201 // create new socket object
202- // starts with empty nic so that the finaliser doesn't run close() method if accept() fails
203202 mod_network_socket_obj_t * socket2 = m_new_obj_with_finaliser (mod_network_socket_obj_t );
204203 socket2 -> base .type = (mp_obj_t )& socket_type ;
205- socket2 -> nic_type = MP_OBJ_NULL ;
206204
207205 // accept incoming connection
208206 uint8_t ip [MOD_NETWORK_IPV4ADDR_BUF_SIZE ];
209207 mp_uint_t port ;
210208 int _errno ;
211- if (self -> nic_type -> accept (self , socket2 , ip , & port , & _errno ) != 0 ) {
209+ if (wlan_socket_accept (self , socket2 , ip , & port , & _errno ) != 0 ) {
212210 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
213211 }
214212
215- // new socket has valid state, so set the nic to the same as parent
216- socket2 -> nic_type = self -> nic_type ;
217-
218213 // add the socket to the list
219214 modusocket_socket_add (socket2 -> sd , true);
220215
@@ -236,7 +231,7 @@ STATIC mp_obj_t socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
236231
237232 // call the NIC to connect the socket
238233 int _errno ;
239- if (self -> nic_type -> connect (self , ip , port , & _errno ) != 0 ) {
234+ if (wlan_socket_connect (self , ip , port , & _errno ) != 0 ) {
240235 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
241236 }
242237 return mp_const_none ;
@@ -249,7 +244,7 @@ STATIC mp_obj_t socket_send(mp_obj_t self_in, mp_obj_t buf_in) {
249244 mp_buffer_info_t bufinfo ;
250245 mp_get_buffer_raise (buf_in , & bufinfo , MP_BUFFER_READ );
251246 int _errno ;
252- mp_uint_t ret = self -> nic_type -> send (self , bufinfo .buf , bufinfo .len , & _errno );
247+ mp_uint_t ret = wlan_socket_send (self , bufinfo .buf , bufinfo .len , & _errno );
253248 if (ret == -1 ) {
254249 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
255250 }
@@ -264,7 +259,7 @@ STATIC mp_obj_t socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
264259 vstr_t vstr ;
265260 vstr_init_len (& vstr , len );
266261 int _errno ;
267- mp_uint_t ret = self -> nic_type -> recv (self , (byte * )vstr .buf , len , & _errno );
262+ mp_uint_t ret = wlan_socket_recv (self , (byte * )vstr .buf , len , & _errno );
268263 if (ret == -1 ) {
269264 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
270265 }
@@ -291,7 +286,7 @@ STATIC mp_obj_t socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_
291286
292287 // call the nic to sendto
293288 int _errno ;
294- mp_int_t ret = self -> nic_type -> sendto (self , bufinfo .buf , bufinfo .len , ip , port , & _errno );
289+ mp_int_t ret = wlan_socket_sendto (self , bufinfo .buf , bufinfo .len , ip , port , & _errno );
295290 if (ret == -1 ) {
296291 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
297292 }
@@ -307,7 +302,7 @@ STATIC mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
307302 byte ip [4 ];
308303 mp_uint_t port ;
309304 int _errno ;
310- mp_int_t ret = self -> nic_type -> recvfrom (self , (byte * )vstr .buf , vstr .len , ip , & port , & _errno );
305+ mp_int_t ret = wlan_socket_recvfrom (self , (byte * )vstr .buf , vstr .len , ip , & port , & _errno );
311306 if (ret == -1 ) {
312307 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
313308 }
@@ -346,7 +341,7 @@ STATIC mp_obj_t socket_setsockopt(mp_uint_t n_args, const mp_obj_t *args) {
346341 }
347342
348343 int _errno ;
349- if (self -> nic_type -> setsockopt (self , level , opt , optval , optlen , & _errno ) != 0 ) {
344+ if (wlan_socket_setsockopt (self , level , opt , optval , optlen , & _errno ) != 0 ) {
350345 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
351346 }
352347 return mp_const_none ;
@@ -366,7 +361,7 @@ STATIC mp_obj_t socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in) {
366361 timeout = 1000 * mp_obj_get_int (timeout_in );
367362 }
368363 int _errno ;
369- if (self -> nic_type -> settimeout (self , timeout , & _errno ) != 0 ) {
364+ if (wlan_socket_settimeout (self , timeout , & _errno ) != 0 ) {
370365 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (_errno )));
371366 }
372367 return mp_const_none ;
@@ -403,7 +398,7 @@ STATIC MP_DEFINE_CONST_DICT(socket_locals_dict, socket_locals_dict_table);
403398
404399mp_uint_t socket_ioctl (mp_obj_t self_in , mp_uint_t request , mp_uint_t arg , int * errcode ) {
405400 mod_network_socket_obj_t * self = self_in ;
406- return self -> nic_type -> ioctl (self , request , arg , errcode );
401+ return wlan_socket_ioctl (self , request , arg , errcode );
407402}
408403
409404STATIC const mp_stream_p_t socket_stream_p = {
@@ -431,7 +426,7 @@ STATIC mp_obj_t mod_usocket_getaddrinfo(mp_obj_t host_in, mp_obj_t port_in) {
431426
432427 // ipv4 only
433428 uint8_t out_ip [MOD_NETWORK_IPV4ADDR_BUF_SIZE ];
434- int32_t result = mod_network_nic_type_wlan . gethostbyname (host , hlen , out_ip , AF_INET );
429+ int32_t result = wlan_gethostbyname (host , hlen , out_ip , AF_INET );
435430 if (result != 0 ) {
436431 nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (result )));
437432 }
0 commit comments