@@ -65,11 +65,11 @@ typedef struct _lwip_slip_obj_t {
65
65
STATIC lwip_slip_obj_t lwip_slip_obj ;
66
66
67
67
// Declare these early.
68
- void mod_lwip_register_poll (void (* poll )(void * arg ), void * poll_arg );
69
- void mod_lwip_deregister_poll (void (* poll )(void * arg ), void * poll_arg );
68
+ void mod_lwip_register_poll (void (* poll )(void * arg ), void * poll_arg );
69
+ void mod_lwip_deregister_poll (void (* poll )(void * arg ), void * poll_arg );
70
70
71
71
STATIC void slip_lwip_poll (void * netif ) {
72
- slipif_poll ((struct netif * )netif );
72
+ slipif_poll ((struct netif * )netif );
73
73
}
74
74
75
75
STATIC const mp_obj_type_t lwip_slip_type ;
@@ -206,21 +206,21 @@ typedef struct _lwip_socket_obj_t {
206
206
// Callback for incoming UDP packets. We simply stash the packet and the source address,
207
207
// in case we need it for recvfrom.
208
208
STATIC void _lwip_udp_incoming (void * arg , struct udp_pcb * upcb , struct pbuf * p , ip_addr_t * addr , u16_t port ) {
209
- lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
209
+ lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
210
210
211
211
if (socket -> incoming != NULL ) {
212
212
// That's why they call it "unreliable". No room in the inn, drop the packet.
213
213
pbuf_free (p );
214
214
} else {
215
- socket -> incoming = (void * )p ;
215
+ socket -> incoming = (void * )p ;
216
216
socket -> peer_port = (mp_uint_t )port ;
217
217
memcpy (& (socket -> peer ), addr , 4 );
218
218
}
219
219
}
220
220
221
221
// Callback for general tcp errors.
222
222
STATIC void _lwip_tcp_error (void * arg , err_t err ) {
223
- lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
223
+ lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
224
224
225
225
// Pass the error code back via the connection variable.
226
226
socket -> connected = err ;
@@ -230,29 +230,29 @@ STATIC void _lwip_tcp_error(void *arg, err_t err) {
230
230
231
231
// Callback for tcp connection requests. Error code err is unused. (See tcp.h)
232
232
STATIC err_t _lwip_tcp_connected (void * arg , struct tcp_pcb * tpcb , err_t err ) {
233
- lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
233
+ lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
234
234
235
235
socket -> connected = 2 ;
236
236
return ERR_OK ;
237
237
}
238
238
239
239
// Callback for incoming tcp connections.
240
240
STATIC err_t _lwip_tcp_accept (void * arg , struct tcp_pcb * newpcb , err_t err ) {
241
- lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
241
+ lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
242
242
243
243
if (socket -> incoming != NULL ) {
244
244
// We need to handle this better. This single-level structure makes the
245
245
// backlog setting kind of pointless. FIXME
246
246
return ERR_BUF ;
247
247
} else {
248
- socket -> incoming = (void * )newpcb ;
248
+ socket -> incoming = (void * )newpcb ;
249
249
return ERR_OK ;
250
250
}
251
251
}
252
252
253
253
// Callback for inbound tcp packets.
254
254
STATIC err_t _lwip_tcp_recv (void * arg , struct tcp_pcb * tcpb , struct pbuf * p , err_t err ) {
255
- lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
255
+ lwip_socket_obj_t * socket = (lwip_socket_obj_t * )arg ;
256
256
257
257
if (p == NULL ) {
258
258
// Other side has closed connection.
@@ -262,7 +262,7 @@ STATIC err_t _lwip_tcp_recv(void *arg, struct tcp_pcb *tcpb, struct pbuf *p, err
262
262
// No room in the inn, let LWIP know it's still responsible for delivery later
263
263
return ERR_BUF ;
264
264
}
265
- socket -> incoming = (void * )p ;
265
+ socket -> incoming = (void * )p ;
266
266
return ERR_OK ;
267
267
}
268
268
@@ -301,11 +301,11 @@ STATIC mp_uint_t lwip_udp_send(lwip_socket_obj_t *socket, const byte *buf, mp_ui
301
301
302
302
err_t err ;
303
303
if (ip == NULL ) {
304
- err = udp_send ((struct udp_pcb * )socket -> pcb , p );
304
+ err = udp_send ((struct udp_pcb * )socket -> pcb , p );
305
305
} else {
306
306
ip_addr_t dest ;
307
307
IP4_ADDR (& dest , ip [0 ], ip [1 ], ip [2 ], ip [3 ]);
308
- err = udp_sendto ((struct udp_pcb * )socket -> pcb , p , & dest , port );
308
+ err = udp_sendto ((struct udp_pcb * )socket -> pcb , p , & dest , port );
309
309
}
310
310
311
311
pbuf_free (p );
@@ -343,7 +343,7 @@ STATIC mp_uint_t lwip_udp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_
343
343
* port = socket -> peer_port ;
344
344
}
345
345
346
- struct pbuf * p = (struct pbuf * )socket -> incoming ;
346
+ struct pbuf * p = (struct pbuf * )socket -> incoming ;
347
347
348
348
u16_t result = pbuf_copy_partial (p , buf , ((p -> tot_len > len ) ? len : p -> tot_len ), 0 );
349
349
pbuf_free (p );
@@ -433,9 +433,9 @@ STATIC mp_obj_t lwip_socket_make_new(mp_obj_t type_in, mp_uint_t n_args,
433
433
}
434
434
435
435
switch (socket -> type ) {
436
- case MOD_NETWORK_SOCK_STREAM : socket -> pcb = (void * )tcp_new (); break ;
437
- case MOD_NETWORK_SOCK_DGRAM : socket -> pcb = (void * )udp_new (); break ;
438
- //case MOD_NETWORK_SOCK_RAW: socket->pcb = (void *)raw_new(); break;
436
+ case MOD_NETWORK_SOCK_STREAM : socket -> pcb = (void * )tcp_new (); break ;
437
+ case MOD_NETWORK_SOCK_DGRAM : socket -> pcb = (void * )udp_new (); break ;
438
+ //case MOD_NETWORK_SOCK_RAW: socket->pcb = (void*)raw_new(); break;
439
439
default : nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (EINVAL )));
440
440
}
441
441
@@ -446,15 +446,15 @@ STATIC mp_obj_t lwip_socket_make_new(mp_obj_t type_in, mp_uint_t n_args,
446
446
switch (socket -> type ) {
447
447
case MOD_NETWORK_SOCK_STREAM : {
448
448
// Register the socket object as our callback argument.
449
- tcp_arg ((struct tcp_pcb * )socket -> pcb , (void * )socket );
449
+ tcp_arg ((struct tcp_pcb * )socket -> pcb , (void * )socket );
450
450
// Register our error callback.
451
- tcp_err ((struct tcp_pcb * )socket -> pcb , _lwip_tcp_error );
451
+ tcp_err ((struct tcp_pcb * )socket -> pcb , _lwip_tcp_error );
452
452
break ;
453
453
}
454
454
case MOD_NETWORK_SOCK_DGRAM : {
455
455
// Register our receive callback now. Since UDP sockets don't require binding or connection
456
456
// before use, there's no other good time to do it.
457
- udp_recv ((struct udp_pcb * )socket -> pcb , _lwip_udp_incoming , (void * )socket );
457
+ udp_recv ((struct udp_pcb * )socket -> pcb , _lwip_udp_incoming , (void * )socket );
458
458
break ;
459
459
}
460
460
}
@@ -475,24 +475,24 @@ STATIC mp_obj_t lwip_socket_close(mp_obj_t self_in) {
475
475
}
476
476
switch (socket -> type ) {
477
477
case MOD_NETWORK_SOCK_STREAM : {
478
- if (((struct tcp_pcb * )socket -> pcb )-> state == LISTEN ) {
478
+ if (((struct tcp_pcb * )socket -> pcb )-> state == LISTEN ) {
479
479
socket_is_listener = true;
480
480
}
481
- if (tcp_close ((struct tcp_pcb * )socket -> pcb ) != ERR_OK ) {
482
- tcp_abort ((struct tcp_pcb * )socket -> pcb );
481
+ if (tcp_close ((struct tcp_pcb * )socket -> pcb ) != ERR_OK ) {
482
+ tcp_abort ((struct tcp_pcb * )socket -> pcb );
483
483
}
484
484
break ;
485
485
}
486
- case MOD_NETWORK_SOCK_DGRAM : udp_remove ((struct udp_pcb * )socket -> pcb ); break ;
487
- //case MOD_NETWORK_SOCK_RAW: raw_remove((struct raw_pcb *)socket->pcb); break;
486
+ case MOD_NETWORK_SOCK_DGRAM : udp_remove ((struct udp_pcb * )socket -> pcb ); break ;
487
+ //case MOD_NETWORK_SOCK_RAW: raw_remove((struct raw_pcb*)socket->pcb); break;
488
488
}
489
489
socket -> pcb = NULL ;
490
490
socket -> connected = -16 ; // EBADF
491
491
if (socket -> incoming != NULL ) {
492
492
if (!socket_is_listener ) {
493
- pbuf_free ((struct pbuf * )socket -> incoming );
493
+ pbuf_free ((struct pbuf * )socket -> incoming );
494
494
} else {
495
- tcp_abort ((struct tcp_pcb * )socket -> incoming );
495
+ tcp_abort ((struct tcp_pcb * )socket -> incoming );
496
496
}
497
497
socket -> incoming = NULL ;
498
498
}
@@ -513,11 +513,11 @@ STATIC mp_obj_t lwip_socket_bind(mp_obj_t self_in, mp_obj_t addr_in) {
513
513
err_t err = ERR_ARG ;
514
514
switch (socket -> type ) {
515
515
case MOD_NETWORK_SOCK_STREAM : {
516
- err = tcp_bind ((struct tcp_pcb * )socket -> pcb , & bind_addr , port );
516
+ err = tcp_bind ((struct tcp_pcb * )socket -> pcb , & bind_addr , port );
517
517
break ;
518
518
}
519
519
case MOD_NETWORK_SOCK_DGRAM : {
520
- err = udp_bind ((struct udp_pcb * )socket -> pcb , & bind_addr , port );
520
+ err = udp_bind ((struct udp_pcb * )socket -> pcb , & bind_addr , port );
521
521
break ;
522
522
}
523
523
}
@@ -541,11 +541,11 @@ STATIC mp_obj_t lwip_socket_listen(mp_obj_t self_in, mp_obj_t backlog_in) {
541
541
nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (EOPNOTSUPP )));
542
542
}
543
543
544
- struct tcp_pcb * new_pcb = tcp_listen_with_backlog ((struct tcp_pcb * )socket -> pcb , (u8_t )backlog );
544
+ struct tcp_pcb * new_pcb = tcp_listen_with_backlog ((struct tcp_pcb * )socket -> pcb , (u8_t )backlog );
545
545
if (new_pcb == NULL ) {
546
546
nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (ENOMEM )));
547
547
}
548
- socket -> pcb = (void * )new_pcb ;
548
+ socket -> pcb = (void * )new_pcb ;
549
549
tcp_accept (new_pcb , _lwip_tcp_accept );
550
550
551
551
return mp_const_none ;
@@ -562,7 +562,7 @@ STATIC mp_obj_t lwip_socket_accept(mp_obj_t self_in) {
562
562
nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (EOPNOTSUPP )));
563
563
}
564
564
// I need to do this because "tcp_accepted", later, is a macro.
565
- struct tcp_pcb * listener = (struct tcp_pcb * )socket -> pcb ;
565
+ struct tcp_pcb * listener = (struct tcp_pcb * )socket -> pcb ;
566
566
if (listener -> state != LISTEN ) {
567
567
nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (EINVAL )));
568
568
}
@@ -599,16 +599,16 @@ STATIC mp_obj_t lwip_socket_accept(mp_obj_t self_in) {
599
599
socket2 -> timeout = socket -> timeout ;
600
600
socket2 -> connected = 2 ;
601
601
socket2 -> leftover_count = 0 ;
602
- tcp_arg ((struct tcp_pcb * )socket2 -> pcb , (void * )socket2 );
603
- tcp_err ((struct tcp_pcb * )socket2 -> pcb , _lwip_tcp_error );
604
- tcp_recv ((struct tcp_pcb * )socket2 -> pcb , _lwip_tcp_recv );
602
+ tcp_arg ((struct tcp_pcb * )socket2 -> pcb , (void * )socket2 );
603
+ tcp_err ((struct tcp_pcb * )socket2 -> pcb , _lwip_tcp_error );
604
+ tcp_recv ((struct tcp_pcb * )socket2 -> pcb , _lwip_tcp_recv );
605
605
606
606
tcp_accepted (listener );
607
607
608
608
// make the return value
609
609
uint8_t ip [NETUTILS_IPV4ADDR_BUFSIZE ];
610
- memcpy (ip , & (((struct tcp_pcb * )socket2 -> pcb )-> remote_ip ), 4 );
611
- mp_uint_t port = (mp_uint_t ) ((struct tcp_pcb * )socket2 -> pcb )-> remote_port ;
610
+ memcpy (ip , & (((struct tcp_pcb * )socket2 -> pcb )-> remote_ip ), 4 );
611
+ mp_uint_t port = (mp_uint_t )((struct tcp_pcb * )socket2 -> pcb )-> remote_port ;
612
612
mp_obj_tuple_t * client = mp_obj_new_tuple (2 , NULL );
613
613
client -> items [0 ] = socket2 ;
614
614
client -> items [1 ] = netutils_format_inet_addr (ip , port , NETUTILS_BIG );
@@ -642,10 +642,10 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
642
642
}
643
643
}
644
644
// Register our recieve callback.
645
- tcp_recv ((struct tcp_pcb * )socket -> pcb , _lwip_tcp_recv );
645
+ tcp_recv ((struct tcp_pcb * )socket -> pcb , _lwip_tcp_recv );
646
646
// Mark us as "connecting"
647
647
socket -> connected = 1 ;
648
- err = tcp_connect ((struct tcp_pcb * )socket -> pcb , & dest , port , _lwip_tcp_connected );
648
+ err = tcp_connect ((struct tcp_pcb * )socket -> pcb , & dest , port , _lwip_tcp_connected );
649
649
if (err != ERR_OK ) {
650
650
socket -> connected = 0 ;
651
651
nlr_raise (mp_obj_new_exception_arg1 (& mp_type_OSError , MP_OBJ_NEW_SMALL_INT (error_lookup_table [- err ])));
@@ -674,7 +674,7 @@ STATIC mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in) {
674
674
break ;
675
675
}
676
676
case MOD_NETWORK_SOCK_DGRAM : {
677
- err = udp_connect ((struct udp_pcb * )socket -> pcb , & dest , port );
677
+ err = udp_connect ((struct udp_pcb * )socket -> pcb , & dest , port );
678
678
break ;
679
679
}
680
680
}
0 commit comments